资源描述
仓储物流管理系统扫描终端的开发摘要 在现在的企业中,仓储和物流系统的管理成为现在很多企业首先要解决的问题。现在的企业可以通过ERP系统很方便的实现库存的管理。但是,由于某些原因的限制,ERP系统只能够对仓储部分进行管理,而对产品的流向却不能很好的把握,以至不能很好的控制窜货的难题。开发的这套仓储物流管理系统将每件产品赋与了一个唯一的数码,通过发货时对数码的扫描,可以追踪每件货物的流向。通过对数据库中发货记录的查询,即可确定该产品是否窜货,从哪里窜过来的货物。将所有货物的流向掌控的很清楚,易于对窜货现象的控制。同时,还可以分析各个仓库的库存情况,及时的把握各种产品的市场需求度。扫描终端就是对赋予产品的数码进行记录的工具。关键字 仓储物流管理 库存 条码 产品组号 防伪防窜货The scanning system of the warhouse and the logistics systemAbstract:In todays company,the warehouse and the logistics system becomes now a lot of business enterprises to want the problem for resolve first. The business enterprise of now can pass the management that the ERP system carries out stock very conveniently.But, because of some reason of restriction, the ERP system can carry on a management to the warehouse part, but fly to to the product but cant good confidence, with go to cant the good control flee the hard nut to crack of the goods.This warehouse logistics system that we develop gave each product an unique figures, the logarithms code scans while passing the hair goods, can track each goods to fly to.Pass to deliver the search of the goods record in the database, whether then certain that product flee or not goods, from where flee to come over of goods.Fly to all goods to control very clearly, be easy to to the control of flee the goods phenomenon.In the meantime, can also the stock circumstance of analytical each warehouse, hold the market need of various product in time.Scan terminal be give product to us of the figures carry on the tool of the record.Key words:warehouse logistics stock barcode product set the number defend false and defend the goods of flee97目 录1 前言11.1 扫描终端在整套系统中的作用11.2 扫描终端所要解决的问题21.3 系统在未来商业中的作用21.4 系统的不足之处22 系统组成32.1 材料清单32.2 材料详细资料32.2.1 DT900详细资料32.2.2 MULTIDROP通讯软件详细资料52.2.3 开发软件的指令说明673 研究内容和方法153.1 数码的记录和关联153.2 扫描信息的查询163.3 扫描信息的删除173.4 数据传输174 CASIO开发使用说明184.1 开发流程示意图184.1.1 开发流程图184.1.2 源代码的编写194.1.3 源代码的编译194.1.4 编译后的结果194.2 DT900应用程序的安装204.3 数据格式214.3.1 上位机下载配置数据214.3.2 手持扫描上传数据225 DT900菜单235.1 正常出库235.1.1 输入出库单ID235.1.2 开始循环扫描245.1.3 删除已扫描产品255.1.4 查询扫描信息265.1.5 返回265.2 调拨出库265.2.1 输入调拨单ID275.2.2 开始循环扫描275.2.3 删除已扫描产品285.2.4 显示扫描信息285.2.5 返回285.3 扫描退货295.3.1 输入退货单ID295.3.2 开始循环扫描295.3.3 删除已扫描产品305.3.4 显示扫描信息305.3.5 返回315.4 传输数据315.4.1 下载配置文件315.4.2 上传数据文件315.4.3 返回326 结论326.1 扫描信息处理326.2 数据记录的准确性336.3 工人操作的方便性336.4 性能改进的灵活性346.5 存在的不足之处34谢辞35参考文献35附录361 前言在当今企业中,对仓储的管理越来越引起关注。为了实现零库存管理,不少企业通过各种途径实现仓储和库存管理。其中最重要的手段是通过ERP系统来实现库存的管理,但是ERP系统只能对库存系统进行管理,不能对每件货物进行跟踪,无法跟踪货物的流向,从而不能实现防窜货功能。现在的企业窜货现象日渐严重,严重影响了企业的销售量和经济效益1。为此不少企业都在想各种办法控制窜货现象,但是到目前都没有很好的办法解决这个问题。通过现在这套仓储物流管理系统,可以很好的实现防窜货功能。在这套系统中,将每一件产品转化成一个个数码,然后将这些数码存入数据库。当需要进行出库时,可用扫描终端通过对条形码的扫描,将这些数码与货物的发往地关联起来存放数据库中,通过对这些数码的查询,即可得知产品的发往地。产品进行查询时,如果发现某种产品可疑,只需要将代表这种产品的数码通过网络,短信,800电话进行查询。如果查询时发现查询地与查询到的货物发往地不相符合,就可以断定这批产品发生了窜货。就可以对窜货的源头进行处理,来实现防窜的目的。与此同时,由于每一个产品都有唯一的数码与其对应,顾客如果想知道自己所购买的产品是否是真品时,只需要将代表这件产品的数码进行查询,在防伪查询中;如果查询的号码在数据库中是存在的,即所查询的是真品,系统会提示所查询的产品的名称和规格。反之,如果所查询的数据在数据库中不存在,系统会提示所查询的产品存在问题。1.1 扫描终端在整套系统中的作用在整套系统中,手持扫描终端只是其中的一个环节,但是很重要的一个环节。扫描终端负责对每个产品数码的记录,将这些数码与产品的发往地关联起来。实现对每一件产品的记录和流向控制。扫描终端就是一台条码扫描仪,通过软件的控制来实现数据的关联和控制,数码的记录以及流向的记录2。出库时,将所有要出库的产品通过扫描终端,通过对每件产品上的条码扫描事项记录数码,关联数码的目的。1.2 扫描终端所要解决的问题在现在企业中,有不少公司都有了自己的ERP系统,但是所有的库存记录都是靠手工进行,虽然这样也可以实现对每件货物的管理工作,但是由于多种原因,会导致很多问题的出现3。例如,数码录入错误,数据计数错误等等人为因素造成很多的问题,使得库存管理会出现少许的错误。人在进行数据记录的时候出错的概率远远高于机器进行数据记录的概率。扫描终端的使用可以通过机器对数据进行记录,降低由于人工记录所造成的出错问题。1.3 系统在未来商业中的作用 在这套系统中,将对商品的防伪和防窜放在首要地位,在保证可以进行防伪的同时又可以对企业的窜货问题加以控制。在未来的企业中,由于防伪技术的不断进步,各种新的防伪技术不断涌现,防伪已经逐渐成为广大客户的基本需求。但是在现在的企业中,除了要面对防伪的难题之外,还有更让企业高层管理人员头疼的就是窜货问题。由于窜货问题的存在,使得很多公司对市场的销售情况不能很好的估计,不能对市场需求量进行很好的了解,以至做出错误的判断,导致企业效益受损。未来由于防伪技术的越来越先进,不法之徒就很难通过造假来获取暴利。于是便开始转向另外一条可以获取暴利的途径窜货,利用不同地域的价格差来获取利润。市场迫切需要一套可以进行控制防窜货的系统。未来的企业中防窜货系统会象现在的财务软件ERP系统一样成为公司不可或缺的一部分。1.4 系统的不足之处 在现在这套系统中,对所有的防窜数据的查询全部通过人工查询获取的信息,而且要实施这套系统,就需要有专门的人员来进行查询。不能远程获取商品信息。未来如果可以通过一套系统,将所有的经销商的信息全部通过网络连接起来,这样就可以足不出户的对各个经销商的数据库信息进行查询,发现其有没有发生窜货行为。2 系统组成2.1 材料清单CASIO DT900手持扫描终端一台CASIO DT900红外通讯底座一台DT900软件开发包一份串口线一根,USB线一根电源线一根2.2 材料详细资料2.2.1 DT900详细资料如图2-1: 多功能的高速扫描的手持条码数据采集器,最轻量化的设计减小了长期操作的疲劳度,坚固外壳,可成承受1.5米摔落撞击,采用主电源和备用电源结合供电方式,红外通讯使得数据的下载或上传无须任何电缆线连接 ,可以进行高速大容量的数据传送,适用于工业生产,物流,产品组装,仓储等场合4图2-1 DT900实物图详细参数 多功能的高速扫描功能数据采集器100次/秒的扫描确保了很高的数据完整性。 紧密,轻量的设计,最轻量化的设计减小了长期操作的疲劳度。 IrDA Ver1.0红外通讯使得数据的下载或上传无须任何电缆线的连接,避免了主机连接的故障。 智能I/O系统,利用SCSI或以太网连接的主I/O座,能使辅I/P座配置成大规模系统以进行高速大容量的数据传送。 CASIO DT900 数据采集器所有数据的查询和保存都在手持终端本机中进行的,并且它是可编程的,所有操作流程(包括主要物流模块以及辅助查询模块等)都可以按照用户的需求来实现,在操作结束后,所有操作结果都以文本文件形式上传到PC,然后由PC将文本文件导入数据库或者与后台的通讯通过通讯座以及在PC端运行的MULTIDROP通讯软件进行。DT-900用户区内存为1.6M, 在商品资料库每条记录长度为50的情况下, 可一次存储30,000种商品资料, 完全能达到用户的要求。CASIO-DT900数据采集器采用主电源和备用电源结合供电方式,即使发生主电源和备用电源同时无法供电的极端情况,数据也可继续保存在F-ROM里面。物理特性尺寸: 17.3厘米(高)5.6厘米(宽)2.14厘米(厚)重量: 198克处理器: 32位RISC CPU 内存: 10MB(RAM 2MB+F-ROM 8MB)显示屏: 128x64点(汉字:5x10;西:5x21) 有背光键数: 28 扫描分辨率:0.15mm扫描速率: 100次/秒译码能力: WPC、NW7、CODE39、ITF、CODE93、CODE128、 EAN128、MSI、IATA、125扫描景深: 0-380 mm 通讯软件:MULTIDROP 通讯接口:RS232/RS485 通讯速率: 红外通讯 1200bps-115200bps 使用环境主电源: 两节5号碱性电池、锂离子充电电池 备用电源: 锂电池 工作时间:150小时(碱性电池)30小时(锂电池) 下落强度:1.5米 DT900数据采集器使用范围商业盘点,入出(库)管理,定货管理及价格检查 邮政分拣,登单,接收,无纸化挑单,信息录入(查询)处理 图书资料管理,文件签发,机关文档,资产管制 公用事业,抄表,管制,收(缴)费作业 工业生产,物流,产品组装,仓储等环节2.2.2 MULTIDROP通讯软件详细资料Multidrop通讯软件是上位机与扫描终端进行通讯的软件5。它的主界面如图2-2:图2-2 MULTIDROP软件主界面进入主界面后,要进行设置,才能够进行通讯。设置方法如下:首先要对文件路径进行设置,设置界面如图2-3:图2-3 MULTIDROP路径设置所有的文件路径设置如上,如果文件设置的路径不正确,将不能进行通讯。然后再对连接环境进行设置,设置方法如图2-4图2-4 MULTIDROP端口设置在此注意传输的波特率的设置。在COM port的设置时需要注意,COM0,COM1分别对应PC机上的串口1和串口2。如果选择COM2,COM3,就对应PC机上的USB口,注意在使用USB线进行通讯的时候,需要在PC机中安装USB驱动程序,才可以进行通讯。完成上述的设置之后,就可以进行数据传输了。传输时操作界面如图2-5:图2-5 MULTIDROP通讯界面点击菜单中的Execute选项即可进入数据传输界面。2.2.3 开发软件的指令说明6函数 beep( )void beep(int num)功能: 让缝鸣器响num次 参数介绍: num 发声次数 返回值: 无 函数 cls( )void cls(void)功能: 清屏参数介绍: 无返回值: 无 函数 ER dat_F_Read( ) ER ercd=dat_F_Read(B *filename,W pos,B *sdata,H len)7功能: 在指定文件中读取记录数据 参数介绍: filename 文件名 pos 记录在文件中的偏移值 sdata 指向记录的指针 len 记录的长度 返回值: E_PRM 参数错误 1 错误返回 0 正确返回 函数 ER dat_F_Write( )ER dat_F_Write(B *filename,H mode,W pos,B *sdata,H len)功能: 往文件中写入字符串 参数介绍: filename 文件名 mode 写入模式 0:正常写入,1:追加写入 pos 写入位置(对于模式1无效) sdata 欲写入的字符串指针 len 欲写入的字符串长度 返回值: E_OK 写入成功 E_PRM 写入失败 函数 void del_file( )del_file(B* filename)功能: 删除文件 参数介绍: filename 文件名 返回值: 无 函数 Dsp_str( )void Dsp_str( B *data,H line,H column)功能: 在指定位置以固定模式显示字符串 。 参数介绍: *data 显示字符串 line 横坐标 colum 纵坐标 注:表示CASIO.C中提示错误信息的字体. 在DT800.H或DT700中定义显示模式 . 取值0: 12点阵 1: 16点阵 2: 24点阵返回值: 无 函数 int get_chr( )get_chr(short fun_key)功能: 输入一个字符不显示 参数介绍: fun_key 可用功能键 (F1-F8) 返回值: CLS 按CLS键 F1 按功能键F1 : F8 按功能键F8 字符 ASCII值 函数 get_date_str( )void get_date_str(B* sdate,B* stime)功能:得到当前时间日期参数介绍: sdate 日期字符串(至少8位 ) stime 时间字符串(至少6位) 返回值: 无 函数 long get_file_bit( )long get_file_bit(fileanme)功能: 得到文件总的字节数 参数介绍: filename 文件名 返回值: -1L 文件打开错误 bit 文件总的字节数 函数 int Is_file( )Is_file(B* filename) 功能: 判断文件是否存在 参数介绍: filename 文件名 返回值: 0 文件存在 1 文件不存在 函数 isnum( )int isnum(B* str,int num)功能:判断str前n个中字符是否为数字参数介绍:str 字符串 num 判断的字符个数返回值: 0 全部为数字 1 不全部为数字函数 key_check( )ER key_check( void )功能:测试键盘缓冲区有无数据。 参数介绍: 无返回值: 000000xxh : Data found(xx = ANK code) E_NG FFFFFFFFh : No data found 函数 key_clear( )ER ercd = key_clear( void )功能:键盘缓冲区清空。 参数介绍: 无返回值: E_OK : Normal termination函数 lcd_csr_put( )ER ercd = lcd_csr_put (H csr_line, H csr_colum);功能: 设置光标位置。 参数介绍:H csr_line : cursor line position 12-dot mode : Specify 0 to 12 lines 16-dot mode : Specify 0 to 9 lines 24-dot mode : Specify 0 to 5 linesH csr_colum : cursor column position 12-dot mode : Specify 0 to 25 columns 16-dot mode : Specify 0 to 19 columns 24-dot mode : Specify 0 to 12 columns返回值: E_OK : Normal termination 函数 lcd_csr_set( )ER ercd = lcd_csr_set (H csr_type)功能:设置光标显示方式。 参数介绍: H csr_type : cursor display mode LCD_CSR_OFF (0):Cusor not display LCD_CSR_UNDER (1):Under line cursor LCD_CSR_BLOCK (2):Block cursor 返回值: E_OK : Normal termination E_PRM : Parameter error函数 modi_time( )功能: 修改日期时间函数 void modi_time(void)参数介绍: 无 返回值: 无 函数 read_s( )int read_s(int x,int y,int mode,UB *str,int lenth,short fun_key) 功能: 根据指定的模式读入字符串,包括功能键 参数介绍:int x,int y 读入字符的回显位置 int mode 指定读入的模式 0: All; 1:scan only; 2:key only UB *str 字符串用来存放读入的字符串, 输入的时候可以放入缺省内容 int lenth 读取字符串的长度 fun_key 可用功能键 (F1-F8) 返回值: CLS 按CLS键 F1 按功能键F1 : F8 按功能键F8 NONE 正常返回(按回车) 函数 rece_n_file( )int rece_n_file(B* file_list) 功能: 接收多个文件,专用于DT700。 参数介绍: B file_list 上位机文件的地址 返回值: 0 成功接收 1 接收错误 函数 recefile( )recefile(B *RFileName,B *TDirName) 功能: 接收一个文件。 参数介绍: *RFileName 上位机文件的地址。 *TDirName DT800中的目录 ,DT700中取空。 返回值: 无 search 函数 ER search_back(B *filename,W start_adr,H fieldsize,H keypos,H keylen,UB *code,UB *sdata,W *fpos)功能: 在指定文件中向下查找关键字(按关键字段查找) 参数介绍: filename 文件名 satrt_adr 查找时开始的地址 fieldsize 每一条记录的长度 keypos 关键字在记录中的位置 keylen 关键字的长度 code 关键字的内容 sdata 放查找结果的缓冲区地址 fpos 查到的记录在文件中的位置 返回值: E_OK 正常返回 E_PRM 参数错误 E_NG 无文件被指定函数 search_back()ER search_back(B *filename,W start_adr,H fieldsize,H keypos,H keylen,UB *code,UB *sdata,W *fpos) 功能: 在指定文件中向上查找关键字(按关键字段查找) 参数介绍: filename 文件名 satrt_adr 查找时开始的地址 fieldsize 每一条记录的长度 keypos 关键字在记录中的位置 keylen 关键字的长度 code 关键字的内容 sdata 放查找结果的缓冲区地址 pos 查到的记录在文件中的位置 返回值: E_OK 正常返回 E_PRM 参数错误 E_NG 无文件被指定函数 search_idx()int search_idx(UB *fname,int lenth,int begin,int keylen,UB *key,UB * freco,int *jlh)功能: 按关键字段折半查找记录(用于DT800)。 参数介绍: *fname 文件名 lenth 记录长度 begin 关键字起始位置 keylen 关键字长度 key 关键字 freco 记录内容 jlh 记录号 返回值: 0 查找成功 1 没查到 函数 send_n_file( )int send_n_file(B* file_list) 功能: 发送多个文件。注意: 支持最多发送10个文件 ,专用于DT700。 参数介绍: B file_list DT700 中的文件。 返回值: 0 成功发送 1 发送错误 函数 sendfile( )sendfile(B *SFileName,B *TDirName) 功能: 发送一个文件。 参数介绍: *SFileName DT800中文件的地址 ,DT700中取空。 *TDirName 上位机的目录 。返回值: 无 函数 space_str( )void space_str(B* data,int len) 功能: 用空格填充data至len位参数介绍: data 需填充的字符串 len 填充的长度 返回值: 无 函数 SysInit( )void SysInit(UB mode)功能: 系统初始化 参数介绍: mode 可读条码类型 700中取值 0-5 800中取值 0-3 返回值: 无 函数 Wait( )void Wait( UW tmcnt )功能: 等待tmcnt秒继续 参数介绍: tmcnt 延时返回值: 无 函数 Wait2( )void Wait2( UW tmcnt )功能: 等待tmcnt毫秒继续 参数介绍: tmcnt 延时返回值: 无 3 研究内容和方法扫描终端主要是实现数码的记录和数据的关联。研究的主要内容是以什么格式将扫描的数据记录下来,如何将各种数据进行关联起来。通过比较分析,将各种信息分别从不同的文件截取出来,然后将所有有用的数据进行关联之后,写入同一个文件中,来实现各种有用数据的记录和关联。3.1 数码的记录和关联在扫描开始之前,先要将一些有用的信息下载到扫描终端中。例如客户信息,产品信息,出库单信息之类的信息通过通讯底座传输到扫描终端中。扫描终端进行扫描时,会提示要进行的操作。可以按照提示选择要进行的操作。当输入了出库单的号码之后,扫描终端会搜索出库单信息表,查询是否存在这张单据号码;如果存在的话,就会继续搜索出库单信息,找出出库单所对应的产品发往地的ID;找到之后,在客户信息中搜索该ID,查到此ID后即可将此ID号对应的客户中文名称取出,进行提示此产品的发售地。然后将出库单号码,客户ID进行关联之后放入一个存放单元中。然后可以进行产品的条码扫描。扫描产品条码时,将扫描到的条码信息记录在一个临时存储单元中,从扫描到的条码信息中截取前面的十一位数码,即所说的组号。然后在产品信息表中的查询截取出来的十一位号码,如果查询到,将代表产品的ID和产品中文名截取出来,提示该产品的中文名称。然后将产品的ID与出库单号码和客户ID关联起来,从扫描终端的缓存中读取代表该产品的数码,然后将该数码与前面的数据关联起来,记录在上传文件中,就可以作为一条记录上传了。如果在查找单据号码时没有查找到输入的单据号码,如果此时选择的是正常出库模式,系统会提示:输入的单据号码不存在 是否新建单据 1.是 2.否.如果选择是,此单据号将被写入一个临时的存储单元中,系统接着提示:请输入经销商ID,此时输入经销商ID,系统会自动在客户信息里搜索所输入的经销商ID,如果查找到此经销商ID,那么此经销商ID就与刚才的单据号码关联起来,存放在临时的存储单元里。此时可以进行产品的扫描,扫描的方法及数据的关联方式同上文所描述的方法一样。3.2 扫描信息的查询在扫描的过程中,为了及时的对扫描信息进行了解,可以进行扫描信息的查询工作。在查询时,只需要输入要查询的单据号码,如果这个单据号码已经进行过扫描操作,系统会自动在扫描记录的信息表中进行查询输入的单据号码;当系统查找到此单据号码时,系统自动将此号码所关联的所有信息调用显示。例如单据中的产品的种类,产品的发往地,产品的数量。通过这个操作,进行扫描的工人可以及时的掌握每种产品的扫描情况,可以更清楚的掌握自己的扫描进程。扫描信息的提示可以使负责扫描的工人因为某种原因导致的误扫描或者扫描时,发送的货物数目错误。可以实时的对已经发售的产品数目进行查询,保证扫描数目的准确性。在扫描的过程中,及时掌握信息的扫描录入情况,可以及时的发现扫描的过程是否出现错误。例如把一些产品与经销商对应错误,发送货物的数目出现错误等等,及时的这些有可能出错的信息反馈回来,及时的发现问题,做出相应的处理。3.3 扫描信息的删除 在扫描的过程中,如果发现扫描出现错误,把本来不应该发给某个经销商的货物扫描进来,并与该经销商关联起来,这时候就需要对扫描信息进行删除操作。当选择删除扫描信息菜单后,系统会提示扫描要删除的条码。当对条码进行扫描后,系统会在扫描记录中查找所扫描的条码,查找到该条码后,截取该条扫描记录中代表产品ID的一段记录,然后在产品信息表中查找此ID信息,查找到之后出记录中取出代表产品中文名称的一段记录,并进行产品中文名称的提示,询问是否删除此条码。如果选择是,此条扫描记录将会被清除,同时扫描数量相应的减1。删除的扫描信息以特殊的符号进行标注。在将此条删除的扫描信息上传到上位机时,上位机对其中的特殊符号进行查找;如果查找到其中的特殊符号,上位机就认为在信息记录中,此条记录是被删除的信息,便不对此条信息做处理;如果查找不到特殊符号,就认为此条记录有效,便将此条记录中的代表不同信息的部分截取出来放入数据库的不同位置,供以后查询使用。3.4 数据传输在扫描开始之前,由于DT900内的数据区内没有信息,需要从上位机下载各种有用的信息,例如经销商信息,产品信息和各种单据信息。此时需要在数据传输中选择“下载数据文件”,然后将DT900放入通讯底座中。即可进行数据的下载。下载完成后,上位机里的所有产品信息,客户信息和所有需要分配到此台DT900中的单据信息就下载并预存在了DT900中了。扫描的过程中,所有的查询时需要寻找的信息来源都预存在了里面。例如输入单据号码时,它可以搜索预先存放的单据信息来提取输入的单据号码相关的信息,并且通过对客户信息和产品信息的查询,将与输入的单据号码相关的所有信息调用出来。在扫描的过程中,所有的信息都是从这些下载的数据信息中获取的。因此,下载数据文件是整个扫描终端最早要执行的操作,也是最重要的一环。在扫描完成以后,所有的扫描信息全部记录在dataUP.txt文件中。每一条扫描记录占据一行。每一行的格式固定,具体的格式详见DT900手持终端操作说明。每一行记录中包含有单据号信息,客户信息,产品信息,条码信息,数目信息。要进行数据文件的上传操作,首先要设置DT900,选择:数据传输上传数据文件。然后将DT900放在通讯底座中,即可进行数据的传输操作。上传结束后,上位机对扫描采集到的数据信息进行处理,将记录中代表不同信息的部分分别取出,放入数据库的不同表中,然后将这些表进行关联。查询时只需要将条码信息输入,数据库会自动将数据库中与此条码信息相关联的所有信息调用出来。4 CASIO开发使用说明CASIO 手持终端系列的开发主要以C语言为基本的开发语言,函数的使用大部分与TC 相同8,及少一部分特殊的函数主是为了适应手持终端.编译器为原厂提供,编译时的控制过程主要依据外部的配置文件控制,灵活度较大.4.1 开发流程示意图4.1.1 开发流程图源代码控制文件makefileapsmp.sub编译情况错误提示lnkaperr.txtlnklnk1.txt 编译器编译应用程序 apsmp.lod图4-1 DT900开发流程图如图4-1所示,DT900的开发流程按照先进行源代码的编写,然后通过DT900自带的编译工具进行编译,此时编译出来的文件即可进行写入扫描终端。如果在编译过程中出现错误,可以在文件夹 lnk文件夹下的err.txt文件中进行错误信息的查找。4.1.2 源代码的编写编写的过程与用C语言编写的过程是一样的,注意的是程序的起点函数是ap_start(),而不是C中的main()函数,编写后的源代码文件存放在.source的子目录下,文件名为apsmp.c9。4.1.3 源代码的编译执行编译过程的命令为dt900.bat,可在dos 下或windows下运行该命令。源代码编译联接依靠makefile,和apsmp.sub 这两个文件来控制,其中makfile是控制编译过程,apsmp.sub 是控制联接过程,源代码经编译器编译后,会生成编译的日志文件存放在 .lnk 的子目录下,通过查看该目录下的文件知道编译联接的情况。4.1.4 编译后的结果 编译后生成的apsmp.lod 文件将存放在 .app的子目录下。同时要将字库文件夹里的文件拷贝出来,放入到app文件夹里。如果新的扫描终端首次使用需要将字库文件要放入app中。如果扫描终端不是首次使用,字库文件就不需要使用。4.2 DT900应用程序的安装1.需要向终端安装的应用程序包括:apsmp.lod和astart.hts,C:dt900app_Font子目录中字库font6sk补丁程序,Patch001.lod、Patch002.lod五个文件。2.将这五个程序拷贝至C:dt900app子目录下;3.终端方面的操作: 关闭终端电源后,同时按终端上左上角的 S键 、“.”键和电源“PW”键,屏幕出现系统菜单(MENU):UTILITY1:SEND FILE2:RECEIVE FILE3:FORMAT DRIVE4:CHG MEM SIZE*5:FILE NODEDT700步骤步骤SYSTEM MENU1:EXEXUTE AP2:SET MODE3:DATE/TIME4:TRANSMIT5:VERSIONAP INSTALL RECEIVE(IR)RECV DRIVE 1:A DRIVE2:B DRIVE步骤步骤步骤TRANSMIT1:MULTI INSTALL 2:AP INSTALL3:DUTILITY HT4:UTILITY*5:PROTOCOL MLT*6:PORT IR*7:SPEED 19K图4-2 DT900程序安装流程 如图4-2所示:在系统菜单(MENU)时按“4”-“TRANSMIT”如步骤1;出现TRANSMIT菜单,再按“2”-“AP INSTALL”如步骤2;出现“RECV DRIVE”菜单,在“RECV DRIVE”菜单时按“2”-“B DRIVE”如步骤3,出现“AP INSTALL”菜单如步骤4,等待文件传输(此时按F1可中断传输)10。注:步骤1,2,5中*表示盘点机正确状态项,如不正确应按相应键选正确项。即PROTOCAL(协议)选2:MUTI DROP,PORT(端口)选1:IR(红外端口),SPEED(传输速率)选3:19.2(19200BPS),FILE MODE(文件模式)选2:DT700 MODE。通过以上操作,即可将应用程序下载至终端中。注:如果中途出现意外情况,造成DT900死机,报错等情况,请用尖锐物件点击DT900后RESET按钮,重启后进入菜单,选择1.EXEXUTE AP 即可恢复系统。同时注意将PROTCOL(协议)和SPEED(传输速率)进行设置,设置方法同上。4.3 数据格式以下为计算机(简称上位机)中和DT900相关的文件4.3.1 上位机下载配置数据CUSTOMER.TXT:作用是将所有的经销商的信息下载到DT900中供经销商信息的查询。括号中数字为位数,下同经销商ID(20)/仓库ID(20)+标识位(1)+经销商名(50)标识位:0经销商 1 仓库例:1111110 南京植保站PRODUCT.TXT:作用是将所有的产品信息下载到DT900中供产品信息的查询。组号(11)+产品ID(20)+中文名称(50)例如:6555543211112345678901234567890 状元星CONFIG.INI:POSID:为扫描终端的编号,编号为上位机编制。POSID(5)+POS(3)+空格(N)占用CONFIG.INI的第一行,空格补满与后面记录一样长.例如:10001POS 出库单记录:即从上位机下载下来的出库单信息。出库单ID(20)+计数标志位(3)+经销商ID(20)+产品ID(20)+产品数量(4)+扫描数量(4)例如:1001 20001234567890123456789000200000saomiao.txt:上位机传空文件,供DT900调用使用xinjian.txt:上位机传空文件,供DT900调用使用4.3.2 手持扫描上传数据UPLOAD.TXT:对扫描信息的记录,传给上位机进行记录。POS ID:POSID(5)+空格(N)空格与后面的记录补齐例如:10001 出库数据记录:出库单ID(20)+业务类型(2)+经销商ID(20)+产品ID(20)+箱条码(20)+数量(4)+计数标识位(3)业务类型:01出库02调拨03退货例如:101 00021234567890123456789065626221300200015 DT900菜单菜单结构如下:XXX集团物流管理系统V3.011. 正常出库2. 调拨出库3. 扫描退货4. 数据传输图5-1 DT900主菜单 当DT900开机后,就会进入如图5-1所示的界面。注:如果进入界面不是主菜单界面,请按“CLR”键返回,如果出现的菜单界面上出现返回选项时,请选择返回选项,依次操作,直至返回到主菜单界面。
展开阅读全文