下面的例子是DT930最简单的程序界面,其他的程序在此基础上编程即可。其调用的文件因为比较多,所以未能上传,希望能对从事此PDA开发的人有所帮助。
/***********************************************************************************/
/* USB口程序 */
/***********************************************************************************/
#include "mainfun.h"
#define SAVEFILE "stockwj.txt" /* 文件名 */
#define SCANCODE 15 /* 条码长度 */
#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 */
}