来自激光区域成像仪的输入(PDF417) [英] Input from laser area imager(PDF417)
问题描述
我正在尝试解析从PDF417条码读取器传输的数据.我可以通过逐个读取char来将数据放入数组中,但是我想读取数据的方式与记事本或Wordpad读取条形码相同.
如果我将条形码扫描到记事本中,则每个字段都分隔成其自己的行.如果使用getchar()
将条形码扫描到阵列中,我只会得到5行连续字符.每个字段都有一个3个字符代码,用<LF>
(换行)分隔.我无法获得函数getchar()
来识别分隔符<LF>
(换行),并且我想不出一种识别3个字符的方法.字符代码(DAW,DAQ,DBC,DAS,DAD,DDG,DCB ...)来自己分隔数据.我可以通过计算字符数来实现自己的目标,但是每个条形码将包含不同的大小字段,从而使此方法失败.
如何在数组中搜索3个字符代码?
您如何读取数组中的<LF>
char? (我尝试过寻找\n
,但它无法正常工作)
I''m trying to parse data transmitted from a PDF417 barcode reader. I can get the data into an array by reading char by char, but I would like to read the data in the same as Notepad or Wordpad reads the barcode.
If I scan barcode into Notepad, each field is separated into it''s own line. If I scan the barcode into my array using getchar()
I only get 5 lines of contiguous characters. There is a 3 character code for each field separated by <LF>
(line feed) I can not get the function getchar()
to recognize the separator <LF>
(line feed) and I can not think of a way to recognize the 3 char codes(DAW, DAQ, DBC, DAS, DAD, DDG, DCB ...) to separate the data myself. I can achieve my goal by counting the characters, but each barcode will contain different size fields making this method fail.
How can I search for the 3 char codes in the array?
How do you read the <LF>
char in the array? (I''ve tried looking for \n
but it doesn''t work right)
推荐答案
以"rb"打开文件(以二进制模式读取)模式下,我之前也遇到过同样的问题.如果您在rb模式下打开,则可以逐字节读取
open the file in "rb"(read in binary mode) mode, I faced the same problem before. if you open in rb mode then you would be able to read byte by byte
我确信有更好的方法可以这样做,但这对我有用. >
I''m sure there is a better way to do this, but this works for me.
for(i = 0; i < 250; i++)
{
dl[i] = getchar();
}
printf("%s", dl);
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'C')
if(dl[i+2] == 'F')
DCFmarker = i;
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'U')
{
DAUmarker = i;
for(j = 0; j < (DCFmarker - DAUmarker - 3); j++)
{
hgt[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'C')
if(dl[i+2] == 'G')
{
DCGmarker = i;
for(j = 0; j < (DAUmarker - DCGmarker - 3); j++)
{
country[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'Y')
{
DAYmarker = i;
for(j = 0; j < (DCGmarker - DAYmarker - 3); j++)
{
eyes[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'C')
if(dl[i+2] == 'L')
{
DCLmarker = i;
for(j = 0; j < (DAYmarker - DCLmarker - 3); j++)
{
race[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'B')
if(dl[i+2] == 'A')
{
DBAmarker = i;
for(j = 0; j < (DCLmarker - DBAmarker - 3); j++)
{
exp[j] = dl[i + 3];
i++;
}
moEXP[0] = exp[0];
moEXP[1] = exp[1];
dayEXP[0] = exp[2];
dayEXP[1] = exp[3];
yearEXP[0] = exp[4];
yearEXP[1] = exp[5];
yearEXP[2] = exp[6];
yearEXP[3] = exp[7];
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'B')
if(dl[i+2] == 'B')
{
DBBmarker = i;
for(j = 0; j < (DBAmarker - DBBmarker - 3); j++)
{
dob[j] = dl[i + 3];
i++;
}
moDOB[0] = dob[0];
moDOB[1] = dob[1];
dayDOB[0] = dob[2];
dayDOB[1] = dob[3];
yearDOB[0] = dob[4];
yearDOB[1] = dob[5];
yearDOB[2] = dob[6];
yearDOB[3] = dob[7];
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'C')
if(dl[i+2] == 'S')
{
DCSmarker = i;
for(j = 0; j < (DBBmarker - DCSmarker - 3); j++)
{
lname[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'B')
if(dl[i+2] == 'C')
{
DBCmarker = i;
for(j = 0; j < (DCSmarker - DBCmarker - 3); j++)
{
sex[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'B')
if(dl[i+2] == 'D')
{
DBDmarker = i;
for(j = 0; j < (DBCmarker - DBDmarker - 3); j++)
{
issue[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'D')
if(dl[i+2] == 'A')
{
DDAmarker = i;
for(j = 0; j < 3; j++)
{
filler[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'D')
if(dl[i+2] == 'B')
{
DDBmarker = i;
for(j = 0; j < (DDAmarker - DDBmarker - 3); j++)
{
revised[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'C')
{
DACmarker = i;
for(j = 0; j < (DDBmarker - DACmarker - 3); j++)
{
fname[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'D')
{
DADmarker = i;
for(j = 0; j < (DACmarker - DADmarker - 3); j++)
{
mname[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'D')
if(dl[i+2] == 'G')
{
DDGmarker = i;
for(j = 0; j < 3; j++)
{
filler[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'G')
{
DAGmarker = i;
for(j = 0; j < (DDGmarker - DAGmarker - 3); j++)
{
add1[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'I')
{
DAImarker = i;
for(j = 0; j < (DAGmarker - DAImarker - 3); j++)
{
city[j] = dl[i + 3];
i++;
}
}
}
for(i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'J')
{
DAJmarker = i;
for(j = 0; j < (DAImarker - DAJmarker - 3); j++)
{
state[j] = dl[i + 3];
i++;
}
}
}
for(int i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'K')
{
DAKmarker = i;
for(j = 0; j < (DAJmarker - DAKmarker - 3); j++)
{
zip[j] = dl[i + 3];
i++;
}
}
}
for(int i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'C')
if(dl[i+2] == 'A')
{
DCAmarker = i;
for(j = 0; j < (DAKmarker - DCAmarker - 3); j++)
{
dlclass[j] = dl[i + 3];
i++;
}
}
}
for(int i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'C')
if(dl[i+2] == 'B')
{
DCBmarker = i;
if((DCBmarker - DCAmarker) == -3)
break;
for(j = 0; j < (DAKmarker - DCBmarker - 3); j++)
{
restric[j] = dl[i + 3];
i++;
}
}
}
for(int i = 0; i <= 250; i++)
{
if(dl[i] == 'D')
if(dl[i+1] == 'A')
if(dl[i+2] == 'Q')
{
DAQmarker = i;
for(j = 0; j < (DCBmarker - DAQmarker - 3); j++)
{
dlnum[j] = dl[i + 3];
i++;
}
}
}
printf("DL# : %s\n", dlnum);
printf("Address : %s\n", add1);
printf("City : %s\n", city);
printf("State : %s\n", state);
printf("Zip Code : %s\n", zip);
printf("First Name : %s\n", fname);
printf("Middle Name: %s\n", mname);
printf("Last Name : %s\n", lname);
printf("Height : %s\n", hgt);
printf("Weight : %s\n", wgt);
printf("Eyes : %s\n", eyes);
printf("Hair : %s\n", hair);
printf("Sex : %s\n", sex);
printf("Race : %s\n", race);
printf("Issued : %s\n", issue);
printf("Revised : %s\n", revised);
printf("DOB : %s/%s/%s\n", moDOB, dayDOB, yearDOB);
printf("Expires : %s/%s/%s\n", moEXP, dayEXP, yearEXP);
printf("DL Class : %s\n", dlclass);
printf("Restrict : %s\n", restric);
printf("Country : %s\n", country);
这篇关于来自激光区域成像仪的输入(PDF417)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!