串行通讯技术在IC卡售饭系统中的应用 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

串行通讯技术在IC卡售饭系统中的应用

来源:中国一卡通网  作者:翁康静,邬冠华,徐长英  发布时间:2007-08-10 11:42:03  字体:[ ]

关键字:ic卡售饭系统  售饭机  pos机  消费系统  串行通信  售饭系统  

摘   要:使用VB的通讯控件和多台单片机AT89C2051实现了IC卡售饭系统的串口通讯。重点介绍了上位机通讯系统中的发送接收程序,利用下位机串口工作方式完成多机通讯。

1 IC卡售饭系统 

    IC卡售饭系统作为电子钱包进行消费(售饭),它代替了传统的用现金消费的方式,消费者只需预先充钱于消费卡中,买饭时由售饭员在售饭机上输入消费金额,售饭机认可后便完成消费,就餐者可方便地持IC卡在专用的POS售饭机上进行消费。IC卡的管理及窗口POS机的一切工作,包括控制、数据交换、管理和统计报表打印均由上位微机来控制完成。由此可知,上、下位机的高效及时通讯是至关重要的。

    一个单位可能有多个食堂,一个食堂可能有多个售饭点,每个售饭点均设一个POS窗口机,再加上发卡机和增款机,这样整个IC卡售饭系统就形成了一台PC机对多台下位机的串行通讯系统,见图1。

2 系统通讯原理 

    整个系统中,上位机为PC机,使用Windows98操作系统;下位机为AT89C2O51单片机,采用RS一485和RS一232标准接口与PC机的串行口连接。MAX485接口转换芯片将RS一232转换成RS一485协议后可进行远距离传送。由于各下位机共享串行总线,为避免冲突,每次通讯都由上位机开始,由上位机分配总线的使用权,同时下位机也可请求通讯以上报数据,但需等待上位机将总线使用权分配给它才能发送数据,因此每台下位机都需分配一个唯一的机号。

IC卡售饭系统通讯示意图

3 上位机的通讯编程 

    打开Visual Basic 6.0集成开发环境,创建一个标准EXE的工程项目并命名,完成这一步后在主窗体Forml中添加一个Textbox(文本框)和一个CommonButton(按钮)后,选择菜单项工程/部件将弹出一个对话框以选择添加控件(Controls)。选择项目中的Microsoft Comm Control 6.0项和Microsoft Common Dialog Control 6.0项,并在该选择框中打勾,将MSComm控件及CommonDialog控件加入到本项目中。这时工具栏将MSCommCommonDialog控件图标加入到本项目中,这时就可以将它们添加到程序主窗体中去。

    由于IC卡售饭系统的上位机管理系统采用VB平台和数据库技术支持,因此要实现对串口的通讯可采用以下两种方法:采用Windows的API函数或利用VB的通讯控件。在这里笔者详细介绍后一种方法的实现步骤。

(1)通讯参数设置。下面为实例程序清单:

Private Sub Commandl Click ()开始按钮With MSCom m1 
. CommPort:2使用COM2 (一般均使用COM2,有些Pc上COM1系统已用) 
. Setting=“9600,N,8,1”设置通讯口参数 
. InBufferSize:40设置MSComml接收缓冲区为40字节 
. 0utBufferSize:2设置MSComml发送缓冲区为2字节
InputMode=comlnputModeBinary设置接收数据模式为二进制形式 
. InputLen=1设置Input一次从接收缓冲读取字节数为1 
. SThreshold=11设置Output一次从发送缓冲读取字节数为1 
. InBuffer(:0unt:0清除接收缓冲区 
, outBufferC0unt一0清除发送缓冲区 
MaxW=一99最大值赋初值 
MinW=99最小值赋初值 
W =0数据个数计数器清零(需事先定义) 
. RThreshold一1设置接收一个字节产生OnComm事件 
If PortOpen—False Then判断通讯口是否打开 
. PortOpen一=True打开通讯口 
If Err Then错误处理 
MsgBox“串口通讯无效” 
          Exit Sub 
        End lf 
      End lf 
    End With 
End Sub

(2)接收过程。数据的接收是一个从计算机串口缓存读取数据的过程。在VB6.0语言里,采用MSComm 事件驱动方式—— Mscomml—OnComm 事件处理,利用MSComm控件INPUT函数实现数据的接收。实例程序如下:

(3)发送过程。利用在VB6.0里的通讯控件MSComm 的OUTPUT 函数实现数据发送,程序如下:

在通讯过程中,为了使通讯双方步调协调一致,需要在程序中增加延时程序。在VB6.0中,一般调用Windows API的时间函数来实现延时功能。可以采用下述方法实现延时过程:

4  下位机的通讯

    单片机中串行通讯的波特率可以程控设定。单片机的串行端121有2个控制寄存器,可用来设置工作方式、发送或接收状态、特征位、数据传送的波特率以及中断标志TI和RI。串行端口的数据寄存器SBUF为发送和接收共有,当满足条件时,向SBUF写入数据就启动发送过程;反之读SBUF就启动接收过程。下位机通讯程序流程图见图2。

IC卡售饭系统下位机通讯流程图


参考文献: 
[1] 朝青.单片机原理与接口技术[M].北京:北京航空航天大学出版社.1994. 
[2] 范逸之,陈立元.Visual Basic与RS一232串行通信控制最新版[M].北京:中国青年出版社,2000. 
[3] 刘瑞新,汪远征.Visual Basic程序设计教程[M].北京:机械工业出版社,2000.

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖