Click here to Skip to main content
15,912,977 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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)
Posted
Updated 4-Dec-11 14:35pm
v4
Comments
Mohibur Rashid 2-Dec-11 23:20pm    
What?
Not clear.

Tell me first how exactly notepad read bar-code?

tell me the steps please
DrBones69 2-Dec-11 23:50pm    
The scanned barcode reads into Notepad as follows:
@

ANSI 636021050002DL00410220ZA02610014DLDAQ123456789
DCB
DCAD
DAK90210
DAJCA
DAISAN JOSE
DAG1212 BIG HILL
DDGU
DDFU
DDEU
DADJEFFERSON
DACWILLIAM
DDB11292011
DDAN
DBD11292011
DBC1
DCSCLINTON
DBB01271954
DBA01272014
DCLW
DAYBR
DCGUSA
DAU072 in
DCFNONE
DCDM
ZAZAB1702
ZAA
[no name] 4-Dec-11 20:35pm    
EDIT: added code block

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
 
Share this answer
 
I'm sure there is a better way to do this, but this works for me.

C#
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);
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900