Застосування штрих-коду для кодування інформації
Побудова та класифікація штрихових кодів з виявленням та виправленням помилок, огляд їх основних різновидів: EAN-13, UPC та EAN-8, Code39 та CODABAR, INTERLEAVED 2 OF 5. Створення самокорегуючого штрихового коду та програмне забезпечення для цього.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 26.01.2014 |
Размер файла | 352,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
{1,0,0,0,1,0},
{1,0,0,0,0,1},
{0,1,1,0,0,0},//3
{0,1,0,1,0,0},
{0,1,0,0,1,0},
{1,1,1,1,1,1}, //*
{1,1,1,1,1,1}, //*
{0,1,0,0,0,1},
{0,0,1,1,0,0},
{0,0,1,0,1,0},//4
{0,0,1,0,0,1},
{0,0,0,1,1,0},
{1,1,1,1,1,1}, //*
{1,1,1,1,1,1}, //*
{0,0,0,1,0,1},
{0,0,0,0,1,1},
{1,1,1,0,0,0},//5
{1,1,0,1,0,0},
{1,1,0,0,1,0},
{1,1,1,1,1,1}, //*
{1,1,1,1,1,1}, //*
{1,1,0,0,0,1},
{1,0,1,1,0,0},
{1,0,1,0,1,0},//6
{1,0,1,0,0,1},
{1,0,0,1,1,0},
{1,1,1,1,1,1}, //*
{1,1,1,1,1,1}, //*
{1,0,0,1,0,1},
{1,0,0,0,1,1},
{0,1,1,1,0,0},//7
{0,1,1,0,1,0},
{0,1,1,0,0,1},
{1,1,1,1,1,1}, //*
{1,1,1,1,1,1}, //*
{0,1,0,1,1,0},
{0,1,0,1,0,1},
{0,1,0,0,1,1},//8
{0,0,1,1,1,0},
{0,0,1,1,0,1},
{1,1,1,1,1,1}, //*
};
void titul()
{
clrscr();
cout<< "Der Diplomprojekt v.1.2 'Koran' Mishel Kozak\n\n";
}
//----------------------------------------------
//
// Methode fur Klasse
//
//----------------------------------------------
void BarCode::init(char* mas,char fl)
{
int i;
flag=fl;
f1=1;
f2=2;
for(i=0;i<7;i++)
{cod[i]=mas[i]-48;
pcode[i]=mas[i];
};
cod[7]=0;
err=0;
ferr=0;
nferr=0;
warning=0;
}
//----------------------------------------------
void BarCode::getmytime()
{
struct tm mytm;
struct time tt;
struct date dd;
char* sss;
gettime(&tt);
getdate(&dd);
mytm.tm_sec=0;
mytm.tm_wday=0;
mytm.tm_year=0;
mytm.tm_isdst=0;
mytm.tm_min=tt.ti_min;
mytm.tm_hour=tt.ti_hour;
mytm.tm_mday=dd.da_day;
mytm.tm_mon=dd.da_mon-1;
mytm.tm_year=dd.da_year-1900;
int ii,jj;
sss=asctime(&mytm);
for(ii=3,jj=0;jj<25;ii++,jj++)
textdata[jj]=sss[ii];
// textdata[jj++]='\n';
// textdata[jj++]='\0';
}
//----------------------------------------------
void BarCode::save(char* pstr,BarCode* bco)
{
ofstream rootf(pstr,ios::binary);
if(rootf)
{
rootf.write((char*)bco,sizeof(*bco));
// rootf.write((char*)&bcode,sizeof(bcode));
}
else
{
cout<<"Error open file: "<<pstr;
}
}
//----------------------------------------------
void BarCode::read(char* pstr,BarCode* bco)
{
ifstream rootf(pstr,ios::binary);
if(rootf)
{
rootf.read((char*)bco,sizeof(*bco));
}
else
{
cout<<"Error open file: "<<pstr;
}
}
//----------------------------------------------
void BarCode::checksum()
{
cod[7]=(cod[0]+cod[2]+cod[4]+cod[6]+3*(cod[1]+cod[3]+cod[5]))%10;
pcode[7]=cod[7]+48;
// titul();
// cout<<"\n Code: "<<pcode[0]<<" "<<pcode[1]<<" "<<pcode[2]<<" "<<pcode[3]<<" "<<pcode[4];
// cout<<" "<<pcode[5]<<" "<<pcode[6]<<" "<<pcode[7]<<"\n\n";
}
//----------------------------------------------
short BarCode::next()
{
if(cod[6]!=9) { cod[6]++; pcode[6]++;}
else
{
if(cod[5]!=9) { cod[5]++; pcode[5]++; }
else
{
if(cod[4]!=9) {cod[4]++;pcode[4]++;}
else
{
if(cod[3]!=9) {cod[3]++;pcode[3]++;}
else
{
if(cod[2]!=9) {cod[2]++;pcode[2]++;}
else
{
if(cod[1]!=9) {cod[1]++;pcode[1]++;}
else
{
if(cod[0]!=9) {cod[0]++;pcode[0]++;}
else return(0);
cod[1]=0;
pcode[1]='0';
};
cod[2]=0;
pcode[2]='0';
};
cod[3]=0;
pcode[3]='0';
};
cod[4]=0;
pcode[4]='0';
};
cod[5]=0;
pcode[5]='0';
};
cod[6]=0;
pcode[6]='0';
};
return(1);
}
//----------------------------------------------
void BarCode::info()
{
{
titul();
getmytime();
cout<<" "<<textdata;
cout<<"\n Code: "<<pcode[0]<<" "<<pcode[1]<<" "<<pcode[2]<<" "<<pcode[3]<<" "<<pcode[4];
cout<<" "<<pcode[5]<<" "<<pcode[6]<<" "<<pcode[7]<<"\n\n";
cout<<"\n Code: "<<ecode[0]<<" "<<ecode[1]<<" "<<ecode[2]<<" "<<ecode[3]<<" "<<ecode[4];
cout<<" "<<ecode[5]<<" "<<ecode[6]<<" "<<ecode[7]<<"\n\n";
cout<<"\n Type error: "<<flag;
int i;
cout<<"\n - 1- 1- 1- 1- 1- 1- 1- 1-1 -1 -1 -1-\n ";
cout<<"\n Real";
for(i=0;i<71;i++)
{
char ch;
if(masbit[i]==0) ch=219;
else ch=0;
cout<<ch;
};
cout<<"\nerror";
for(i=0;i<71;i++)
{
char ch;
if(errbit[i]==0) ch=219;
else ch=0;
cout<<ch;
};
cout<<"\n\n Total error: "<<err;
cout<<"\n = fatal error: "<<ferr<<" "<<ferr/(err/100)<<"%";
cout<<"\n = corectly error: "<<nferr<<" "<<nferr/(err/100)<<"%";
cout<<"\n = warning error: "<<warning<<" "<<warning/(err/100)<<"%";
cout<<"\n\n\n\n For exit press 'q'... ";
}
}
//----------------------------------------------
void BarCode::bitcode()
{
unsigned int i,j,s;
short tmpmas[6];
for(i=0;i<8;i++)
{
for(j=0;j<7;j++)
{
masbit[i*7+j]=tabl[(cod[i])][j];
};
};
for(i=0;i<6;i++)
{
s=0;
for(j=0;j<56;j++)
{
if(checktabl[j][i]==0)
{
s+=masbit[j];
};
};
tmpmas[i]=s%2;
};
masbit[56]=0;
masbit[57]=1;
masbit[58]=tmpmas[0];
masbit[59]=tmpmas[1];
masbit[60]=0;
masbit[61]=1;
masbit[62]=tmpmas[2];
masbit[63]=tmpmas[3];
masbit[64]=0;
masbit[65]=1;
masbit[66]=tmpmas[4];
masbit[67]=tmpmas[5];
masbit[68]=0;
masbit[69]=1;
masbit[70]=0;
for(i=0;i<71;i++) errbit[i]=masbit[i];
}
//------------------------------------------
void BarCode::gen_error()
{
if(flag=='1')
{
f1=1;
do
{
if(errbit[f1]==0) errbit[f1]=1;
else if(errbit[f1]==1) errbit[f1]=0;
test();
if(errbit[f1]==0) errbit[f1]=1;
else if(errbit[f1]==1) errbit[f1]=0;
f1++;
} while(f1<72);
};
if(flag=='2')
{
f1=1;
do
{
f2=f1+1;
do
{
if(errbit[f1]==0) errbit[f1]=1;
else if(errbit[f1]==1) errbit[f1]=0;
if(errbit[f2]==0) errbit[f2]=1;
else if(errbit[f2]==1) errbit[f2]=0;
test();
if(errbit[f1]==0) errbit[f1]=1;
else if(errbit[f1]==1) errbit[f1]=0;
if(errbit[f2]==0) errbit[f2]=1;
else if(errbit[f2]==1) errbit[f2]=0;
f2++;
} while(f2<72);
f1++;
} while(f1<71);
};
}
//----------------------------------------------
void BarCode::test()
{
short tmpmas[6];
short i,j,s;
short check[6]={1,1,1,1,1,1};
char testcod[8];
char test[71];
char testtab[7];
err++;
for(i=0;i<71;i++)
test[i]=errbit[i];
for(i=0;i<8;i++)
{
test[i*7]=0;
test[i*7+6]=1;
};
test[56]=0;
test[57]=1;
test[60]=0;
test[61]=1;
test[64]=0;
test[65]=1;
test[68]=0;
test[69]=1;
test[70]=0;
for(i=0;i<6;i++)
{
s=0;
for(j=0;j<56;j++)
{
if(checktabl[j][i]==0)
{
s+=test[j];
};
};
tmpmas[i]=s%2;
};
for(j=0;j<3;j++)
{
if(tmpmas[j*2]!=test[58+j*4]) check[j*2]=0;
if(tmpmas[j*2+1]!=test[59+j*4]) check[j*2+1]=0;
};
short n=0;
for(i=0;i<6;i++)
{
if(check[i]==0)
{
n++;
};
};
if(n>1) n=0;
else n=1;
switch (n)
{
case 0://якщо контрольна сума не спiвпадае
{
for(i=0;i<56;i++)
{
short eq=1;
for(j=0;j<6;j++)
{
if(check[j]!=checktabl[i][j])
{
eq=0;
break;
};
};
if(eq==1)
{
if(test[i]==1) test[i]=0;
else test[i]=1;
break;
};
};
};
case 1: //якщо контрольна сума спiвпадае
{
for(i=0;i<8;i++)
{
for(j=0;j<7;j++)
{
testtab[j]=test[i*7+j];
};
short eq2;
for(j=0;j<10;j++)
{
short eq=1;
eq2=0;
for(s=0;s<7;s++)
{
if(testtab[s]!=tabl[j][s])
{
eq=0;
break;
};
};
if(eq==1)
{
testcod[i]=j;
eq2=1;
break;
}
};
if(eq2==0)
{
ferr++;
return;
}
};
short t;
t=(testcod[0]+testcod[2]+testcod[4]+testcod[6]+3*(testcod[1]+testcod[3]+testcod[5]))%10;
if(t!=testcod[7])
{
ferr++;
return;
};
for(i=0;i<8;i++)
{
if(testcod[i]!=cod[i])
{
for(j=0;j<8;j++) ecode[j]=testcod[j]+48;
warning++;
info();
return;
};
};
nferr++;
return;
};
};
}
Висновки
В ході виконання цієї дипломної роботи, було розглянуто принципи побудови штрихових кодів, було розглянуто деякі з найвживаніших типів штрихкодів, та створено суттєво новий тип штрихового коду HEM-8. На основі проведеної роботи можна як підсумок привести слідуючі висновки:
1. Надлишковість при передачі інформації не завжди негативне явище. Її можна використовувати для збільшення надійності передачі інформації. З певними обумовленнями можна стверджувати, що при збільшенні надлишковості коду, збільшується надійність коду, стійкість його до помилок.
2. При виборі того чи іншого типу штрихового коду необхідно вирішити питання про співвідношення неохідної надійності коду(стійкості його до помилок) до надлишковості коду. Для тієї чи іншої задачі це співвідношення може суттєво різнитися. В одних випадках більш важливим фактором є надійність коду, а в інших його компактність.
3. Все сказане в попередньому пінкті стосується не тільки штрихових кодів, а і будь-якого іншого способу дискретної передачі інформації.
4. Штриховий код є зручний спосіб автоматизації вводу інформації в найрізноманітніших сферах людської діяльності. В кожній конкретній сфері до штрихового коду ставляться свої, в чомусь унікальні вимоги, в наслідок чого, зараз в світі створено велику кількість найрізноманітніших типів штрихових кодів, а також продовжується створення все нових і нових типів.
Але головним підсумком цієї дипломної роботи є створений новий тип штрихового коду НЕМ-8, штрихкод який не має аналогів серед сотень інших типів кодів, і ефективність якого вже було продемонстровано. Розробка та дослідження НЕМ-подібних кодів не обмежується цією дипломною роботою і буде продовжуватись й надалі, з метою створення та вдосконалення ефективних типів штрихових кодів.
ДЖЕРЕЛА
1. Шинон К. Работы по теории информации и кибернетике / Пер. с англ. под ред. Добрушина Р.Л.,Лупанова О.Б. -М.: Издательство иностранной литературы, 1963. 830 с.
2. Котов П.А. Повышение достоверности передачи цифровой информации. -М.: Связь, 1966. 184 с.
3. Словарь по кибернетике / Справочное издание под редакцией Михалевича В.С. -К.: Главная редакция Украинской Советской Энциклопедии имени М.П.Бажана, 1989. 752 с.
4. Фейсон Т. Объектно-ориентированное програмирование на Borland C++ 4.5. -К.: Диалектика, 1996. -544 с., ил.
5. Understanding ActivX and OLE. David Chapell, Microsoft Press, 1996.
6. How to crack / A Tutorial by +ORC, an526164@annon.penet.fi
7. Cracking as an art, [Barcodes][Instant Access] / Lesson C(1). an526164@annon.penet.fi
8. Handbuch zum barcode-lesegerat / ABP-Programierhandbuch fur Einbauscanner.
9. Barcodes FAQ. : www.azalea.com
10. Barcodes. : www.incom.ru/barcodes/s1.html
Размещено на http://www.allbest.ru/
Подобные документы
Розробка та дослідження алгоритмів і програм кодування даних з виявленням помилок на основі циклічних CRC-кодів. Аналіз циклічних кодів. Розробка та тестування програмних модулів. Розрахунок економічних показників. Вирішення питань охорони праці.
дипломная работа [5,4 M], добавлен 22.06.2010Понятие и назначение штрихового кода, его разновидности и сферы применения. Параметры символики и структура символа в кодах. Алгоритм преобразования числовых данных в знаки Interleaved 2 of 5. Распознавание штрих-кода и вычисление контрольной цифры.
контрольная работа [424,1 K], добавлен 23.08.2009Зміст і структура інформаційного забезпечення. Області застосування штрихового кодування. Послідовність розробки позиційних і комбінованих систем кодування. Технологія застосування електронного документообігу. Особливості створення автоматизованих банків.
реферат [30,2 K], добавлен 24.01.2011Перевірка коду на парність. Формула для підрахунку парності або непарності одиниць в інформаційних розрядах. Побудова групових кодів і їх вживання для виявлення і виправлення помилок. Правила формування перевірочних символів. Використання кодів Хемминга.
лабораторная работа [639,7 K], добавлен 17.12.2010Програма розрахунку інформаційних характеристик каналу зв'язку. Побудова коду для передачі повідомлень. Процедури кодування, декодування та оцінка ефективності кодів. Програма на алгоритмічній мові Паскаль. Канальна матриця, що визначає втрати інформації.
курсовая работа [147,7 K], добавлен 09.07.2009Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.
курсовая работа [1,3 M], добавлен 20.05.2015Основні поняття щодо захисту програмного забезпечення. Класифікація засобів дослідження програмного коду: відладчики, дизасемблери, діскомпілятори, трасировщики та слідкуючі системи. Способи вбудовування захисних механізмів в програмне забезпечення.
курсовая работа [41,7 K], добавлен 14.11.2010Основні поняття моделювання систем, етапи створення, надійність, ефективність. Життєвий цикл та структурне інформаційне забезпечення модельованої системи. Зміст сase-технології, програмне забезпечення та кодування інформації. Головні завдання контролінгу.
курсовая работа [151,3 K], добавлен 27.05.2014Поняття компілятора та теоретичні основи його роботи. Введення коду програми завантаженням текстового файлу. Опрацювання тексту лексичним та синтаксичним аналізаторами. Генерація та оптимізанія об'єктного коду. Побудова графічного інтерфейсу програми.
курсовая работа [586,6 K], добавлен 22.01.2014Імовірнисний підхід у теорії ощадливого кодування. Оцінка інформативності ознак та їх оптимальна градація. Застосування імовірнісних методів для підвищення ефективності ощадливого кодування відеоінформації. Ефективні алгоритми кодування інформації.
реферат [1,6 M], добавлен 29.06.2009