CASIO DT930程序编写(例子程序)

下面的例子是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 */

}

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值