- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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协议后可进行远距离传送。由于各下位机共享串行总线,为避免冲突,每次通讯都由上位机开始,由上位机分配总线的使用权,同时下位机也可请求通讯以上报数据,但需等待上位机将总线使用权分配给它才能发送数据,因此每台下位机都需分配一个唯一的机号。
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
文档评论(0)