DT930程序

本文介绍了一个嵌入式设备上的条码扫描程序,包括主菜单导航、条码读取、数据上传与下载等功能。程序支持条码扫描入库、数据文件的上传及下载,并具备数据删除功能。

/***********************************************************************************/ 
 
/* USB口程序                                                                       */ 
 
/***********************************************************************************/ 
 
#include "mainfun.h" 
 
 
 
#define SAVEFILE "stockwj.txt"   /* 文件名 */ 
 
#define SCANCODE 20      /* 条码长度 */ 
 
#define COUNT 5            /* 数量长度 */ 
 
#define VERSION "Version 1.0" 
 
 
 
void MainMenu(void);/* 程序的主菜单 */ 
 
void Menu_A(void);  
 
void Menu_B(void);  
 
void Menu_C(void);  
 
void Menu_D(void);  
 
 
 
 
 
/****************************************************************************** 
 
**     程序名称    : ap_start                                                  ** 
 
**     描述        : 程序开始处                                                          ** 
 
**     参数        : 无                                                                  ** 
 
**     返回值      : 无                                                                 ** 
 
******************************************************************************/ 
 
void ap_start(void)  
 
{  
 
    lcd_cls();/* SysFunction screen clear 1996.11.26.casio */ 
 
    SetFont();  
 
    FNC_Init();  
 
    obr_change(0);  
 
    while (1)  
 
    {  
 
        MainMenu();  
 
        break;  
 
    }  
 
}  
 
 
 
 
 
void MainMenu(void)  
 
{  
 
    int KEY;  
 
    int Flag = 1;  
 
      
 
    while (1)  
 
    {  
 
        if (Flag == 1)  
 
        {  
 
            lcd_cls();  
 
            display("     测试程序", 0, 1);  
 
            display("    1-条码扫描", 0, 3);  
 
            display("    2-数据上传", 0, 5);  
 
            display("    3-数据下载", 0, 7);  
 
            display("    4-数据删除", 0, 9);  
 
            Flag = 0;  
 
        }  
 
        KEY = getkey();  
 
        switch (KEY)  
 
        {  
 
            case '1':  
 
                Menu_A();  
 
                Flag = 1;  
 
                break;  
 
            case '2':  
 
                Menu_B();  
 
                Flag = 1;  
 
                break;  
 
            case '3':  
 
                Menu_C();  
 
                Flag = 1;  
 
                break;  
 
            case '4':  
 
                Menu_D();  
 
                Flag = 1;  
 
                break;  
 
            case CLR_KEY:  
 
                return;  
 
        }  
 
    }  
 
}  
 
 
 
 
 
void Menu_A(void)  
 
{  
 
    ER ret;  
 
    W lno;  
 
    ER OpenStock;  
 
    char sSumQty[6], sScanArray[20];  
 
    char sSaveQty[6], sInputQty[6], sTempData[30];  
 
    int iBegin, iFindLong, i, j;  
 
    int iIsAdd;  
 
 
 
    /* 将stock.txt文件打开 */ 
 
    if ((OpenStock = open(SAVEFILE, O_CREAT | O_RDWR | O_APPEND)) == E_LOWERR)  
 
    {  
 
        lcd_cls();  
 
        display(SAVEFILE, 0, 1);  
 
        display("无法打开或不存在!", 0, 3);  
 
        getkey();  
 
        return; /* No Files */ 
 
    }  
 
 
 
    /* 开始入库 */ 
 
    while(1)  
 
    {  
 
        lcd_cls();  
 
        memset(sScanArray, 0x0, sizeof(sScanArray));  
 
        display("条码:", 0, 1);  
 
        ret = getstring(5, 1, 0, SCANCODE, sScanArray);  
 
        if (ret==E_KEY_CLR)  
 
            break;  
 
        if (strlen(sScanArray)==0)  
 
            continue;  
 
 
 
        display(sScanArray, 5, 1);  
 
        iBegin = 0;  
 
        iFindLong = SCANCODE;   /* 条码长度 */ 
 
 
 
        if (strlen(sScanArray) < sizeof(sScanArray))  
 
            AddSpace(sScanArray, sizeof(sScanArray));  
 
        memset(sTempData, 0x0, sizeof(sTempData));  
 
        memset(sSaveQty, 0x0, sizeof(sSaveQty));  
 
 
 
        /* 文本数量+回车换行 */ 
 
        ret = dat_F_Search(SAVEFILE,0L,SCANCODE+COUNT+2,iBegin,iFindLong,sScanArray,sTempData,&lno);  
 
        if(ret == E_OK)  
 
        {  
 
            lseek(OpenStock, lno, 0);  
 
            for(i=0,j=SCANCODE; i<COUNT; i++,j++)  
 
                sSaveQty[i] = sTempData[j];  
 
            sSaveQty[i] = 0x0;  
 
        }  
 
        else  
 
        {  
 
            lseek(OpenStock, 0L, 2);  
 
            sSaveQty[0]='0';  
 
        }  
 
 
 
        display("已扫数量:", 0, 7);  
 
        display(sSaveQty, 9, 7);  
 
        display("本次数量:", 0, 9);  
 
        memset(sInputQty, 0x0, 6);  
 
        strcpy(sInputQty, "1");  
 
 
 
        ret = GetInt(9, 9, COUNT, sInputQty, 1, &iIsAdd);  
 
          
 
        if (ret==CLR_KEY)  
 
            continue;  
 
        memset(sSumQty, 0x0, sizeof(sSumQty));  
 
              
 
        if (iIsAdd==1)  
 
        {  
 
            sprintf(sSumQty, "%d", atoi(sInputQty)+atoi(sSaveQty));  
 
        }  
 
        else  
 
        {  
 
            sprintf(sSumQty, "%d", atoi(sSaveQty)-atoi(sInputQty));  
 
        }  
 
              
 
        if (strlen(sSumQty) < sizeof(sSumQty))  
 
            AddSpace(sSumQty, sizeof(sSumQty));  
 
 
 
        write(OpenStock, sScanArray,    SCANCODE);  
 
        write(OpenStock, sSumQty,       COUNT);  
 
        write(OpenStock, ENTERNEWLINE,  2); /* 回车换行 */ 
 
    }   /* end while */ 
 
        /* 入库结束 */ 
 
    close(OpenStock);  
 
}  
 
 
 
void Menu_B(void)  
 
{  
 
    int ret;  
 
    lcd_cls();  
 
    display("打开通讯口...", 0, 1);  
 
 
 
        lcd_cls();  
 
        display("     发送文件...", 0, 3);  
 
        /*ret = SendFile("a://pass    .txt", "c://dt900//down//");*/ 
 
        ret = SendFile("a://stockwj.txt", "c://dt900//down//");  
 
        lcd_cls();  
 
        switch (ret)  
 
        {  
 
            case 0: 
 
                display("    文件发送成功!", 0, 3);  
 
                break;  
 
            case FILE_SEND_ERR:  
 
                display("    文件发送错误!", 0, 3);  
 
                break;  
 
        }  
 
}  
 
 
 
void Menu_C(void)  
 
{  
 
    int ret;  
 
    lcd_cls();  
 
    display("打开通讯口...", 0, 1);  
 
 
 
        lcd_cls();  
 
        display("     接收文件...", 0, 3);  
 
        ret = RecvFile("c://dt900//up//product.txt", "a://");  
 
        /*ret = RecvFile("c://dt900//up//stockwj.txt", "a://");*/ 
 
        lcd_cls();  
 
        switch (ret)  
 
        {  
 
            case 0: 
 
                display("    文件接收成功!", 0, 3);  
 
                break;  
 
            case FILE_REC_ERR:  
 
                display("    文件接收错误!", 0, 3);  
 
                break;  
 
        }  
 
    display("    关闭通讯口...", 0, 7);  
 
}  
 
 
 
void Menu_D(void)  
 
{  
 
    char password[10];  
 
    ER ret;  
 
    while (1)  
 
    {  
 
        lcd_cls();  
 
        memset(password, 0x0, sizeof(password));  
 
        display("密码:", 0, 1);  
 
        display(VERSION, 0, 9);  
 
        ret = getstring(5, 1, 0, 6, password);  
 
        if (ret==E_KEY_CLR)  
 
            break;  
 
        if (strlen(password)==0)  
 
            continue;  
 
        ret = CheckPassword(password);  
 
          
 
        switch(ret)  
 
        {  
 
            case 0: 
 
                display("    是否需要删除", 0, 3);  
 
                display("1.确定         9.取消", 0, 9);  
 
                do  
 
                {  
 
                    ret = getkey();  
 
                    switch (ret)  
 
                    {  
 
                        case '1':  
 
                            dat_fdel(SAVEFILE);  
 
                            lcd_cls();  
 
                            display("    清 除 完 成 !", 0, 5);  
 
                            display("    按任意键继续", 0, 7);  
 
                            return;  
 
                        case '9':  
 
                            return;  
 
                    }  
 
                }while(ret);  
 
            case E_NOOPEN:  
 
                lcd_cls();  
 
                display(PASSFILE, 0, 1);  
 
                display("  无法打开或不存在!", 0, 3);  
 
                display("    按任意键继续", 0, 7);  
 
                getkey();  
 
                break;  
 
            case E_PWERR:  
 
                lcd_cls();  
 
                display("      密码错误!", 0, 5);  
 
                display("    按任意键继续", 0, 7);  
 
                getkey();  
 
                break;  
 
        }  
 
    }   /* end while */ 
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值