一种射频IC卡就餐机和后台管理微机的通信设计(2)
2015-10-16 01:15
导读:3.3 通信程序实现 每次通信时,首先在主机的init事件中初始化通信控件olecontrol1,初始化设置为: thisform.olecontrol1.CommPort=1 //选择串行口com1 thisform.olecontrol
3.3 通信程序实现
每次通信时,首先在主机的init事件中初始化通信控件olecontrol1,初始化设置为:
thisform.olecontrol1.CommPort=1 //选择串行口com1
thisform.olecontrol1.PortOpen=1 //打开串行口com1
thisform.olecontrol1.InputMode=0 //接收的数据按文本方式
thisform.olecontrol1.RTSEnable=1 //允许使用rts线,用于rs-232/485转换器的发送控制和供电
thisform.olecontrol1.InputLen=1 //每次读取接收缓冲区的一个字符
thisform.olecontrol1.OutbufferCount=0 //清除发送缓冲区
thisform.olecontrol1.InbufferCount=0 //清除接收缓冲区
定时控件timer1作为超时定时器, 在Timer1的OnTimer事件中,(假定共有两台就餐机)如果微机向就餐机#1发送的数据正确,那么,延时后,向下一个就餐机发送数据,直到最后一个就餐机,然后提示发送完毕;如果微机向就餐机发送的数据错误,那么,延时后,再发一次。如果连续三次发送都发生了错误,那么,给出错误的就餐机号,并且向下一个就餐机发送数据。定时器的初始化为:
timer1.Interval=50 *定时时间间隔为50ms
timer1.ensbled=.f.先关超时定时器1
在Command1的Click 事件中通过调用外部过程program2向就餐机发送地址(即机号),和要求就餐机向主机传送就餐数据的命令。Program2的程序为:
procedure programe2
*发送机号
表单js.olecontrol1.RThreshold=0
表单js.olecontrol1.Settings="2400,m,8,1"
jh2=chr(jh2)
表单js.olecontrol1.OutPut=jh2
*发送命令
表单js.olecontrol1.Settings="2400,s,8,1"
表单js.olecontrol1.OutPut="E"
表单js.olecontrol1.InbufferCount=0
表单js.olecontrol1.OutbufferCount=0
表单js.olecontrol1.RThreshold=1
表单js.timer1.enabled=.t.
return
具体为:首先在发送数据之前设置OLECONTROLL的Rthreshold为0,禁止对发送事件产生ONCOMM事件,防止主机接收自己的数据。在发送一个字节的机号时,设settings表单js.olecontrol1.Settings="2400,m,8,1"
(科教作文网http://zw.ΝsΕAc.Com编辑整理) 即校验位为mark:‘1’,代表地址字节,以校验位作为识别地址的标志。在发送完机号后,设置settings为:
表单js.olecontrol1.Settings="2400,s,8,1
即校验位为space:‘0’,表示发送的一个字节E是要求就餐机开始向主机传送就餐数据的命令。主机向就餐机发送数据的方法是应用通信控件的OUTPUT函数,即为表单js.olecontrol1.OutPut="E"。在发送完命令后,要清控主机的发送和接收缓冲区,即令:
表单js.olecontrol1.InbufferCount=0
表单js.olecontrol1.OutbufferCount=0
同时,使控件的Rthreshold有效,等待接收就餐机发来的数据,另外要打开超时定时器即令表单js.timer1.enabled=.t.,以判断就餐机是否正常。在OleControl1的OnComm事件中,首先判断控件的属性CommEvent=2,表示收到 Rthreshold 个字符。该事件将持续产生直到用 Input 属性从接收缓冲区中删除数据。然后接收从串口来的就餐数据和校验和,就餐机发送完数据后紧接着发送一个F,表示数据发送完毕。如果主机接收正确向就餐机发送一个G。延时后与下一台就餐机通信。接收后的数据临时存贮在表JCJ中,等待处理。如果主机接收不正确向就餐机发送一个H。
主机与就餐机的通信成功与否,在超时定时器的ONTIMER事件进行判断,其工作方法在前面已说明。
4 结束语
前面比较详细的介绍了主机接收就餐机数据的程序设计过程和方法,至于主机向就餐机发送挂失卡号和发卡初始化新卡的通信程序的设计原理是相同的。只是发卡时,因为一次通信要传输的数据量很小,卡号金额均为10个字符,对通信结果成功与否的判断,没有使用求校验和的方法,采取了连续传输3次, 在3中取2的措施,这样更可靠。
共2页: 1 [2] 下一页 论文出处(作者):