来自激光区域成像仪的输入(PDF417) [英] Input from laser area imager(PDF417)

查看:79
本文介绍了来自激光区域成像仪的输入(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆