Lab windows/CVI平台上实现带有握手机制的串行通信
2018-01-17马妍霞
摘 要 文章采用NI公司推出的Lab windows/CVI虚拟仪器软件开发平台,充分利用其强大的交互式C语言编程模式,实现带有软件握手机制的PC机和单片机之间的串行通信,可供同行参考。
【关键词】Lab windows/CVI 单片机 串行通信
1 系统总体设计
单片机和PC机的串行通信采用RS-232接口,系统工作时,单片机上电完成初始化设置后,等待PC机发送询问信号“?”(ASCII码是3FH),单片机接收到3FH后,就通过串口向PC机发送回答信号“.”(ASCII码是2EH),PC机收到回答信号“.”后,发送确认信号“!”(ASCII码是21H),到此就完成了软件握手,下面单片机开始发送数据,PC机接收并显示数据。
2 硬件设计
系统中PC机作为上位机,单片机为下位机。单片机的时钟振荡频率选择11.059MHz。通过常用电平转换芯片MAX232实现PC机串口和单片机串口的连接,如图1所示。
单片机P2口接8位拨碼开关,通过拨码开关可以设置不同的波特率,如表1所示。
在单片机上电前将拨码开关打到相应位置完成单片机串口波特率的设定。
3 软件设计
3.1 通信协议
通信协议设定帧格式为:1位起始位,8位数据位,1位停止位,不设奇偶校验位。有效的通信传输字节只是中间的8位数据位。单片机的波特率设置由P2口内容设定,PC机的波特率由界面中的波特率选择控件决定,二者的波特率必须保持一致。
3.2 PC机程序设计
PC机程序设计部分利用Lab windows/CVI平台进行,使用 Lab windows/CVI首先需建立一个项目文件,包含有用户界面文件(.uir)、C源码文件(.c)、头文件(.h)、3个部分。接下来调试好系统软件以后,使用Lab windows/CVI的Distribution Kit工具将项目文件生成应用文件(.EXE)。
3.2.1 用户界面设计
创建一个新的工程文件,在工程文件中添加一个新的用户界面文件(.uir),在.uir文件中创建一个面板(panel)和若干控件。
面板和主要控件的属性设置则如表2所示。
设置好以后,还需要按照下面步骤修改设置一些控件属性:设置COMPORT控件的Label/Value属性:向控件Label中添加COM1、COM2、COM3、COM4,相应的Value值设为1、2、3、4,数据类型为int型;设置BAUDRATE控件的Label/Value值:2400、4800、9600、19200,数据类型同样设为int型;设置CLEAR、READ、TEXTBOX、QUIT、FLUSHOUTQ、FLUSHINQ控件的Dimmed属性的初始值为TRUE[2]。
3.2.2 代码修改
Lab windows/CVI提供了RS-232函数库,可以用来实现RS-232总线通信。
其中,函数Open Com Config用于打开COM端口并且设置端口参数,其原型是int OpenComConfig (int COMPort, char deviceName[], long baudRate, int parity, int dataBits, int stopBits, int inputQueueSize, int outputQueueSize);函数Com Wrt用于向COM端口写入指定长度数据,其原型是int ComWrt (int COMPort, char buffer[], int count);函数Com Rd Byte用于从COM端口读入一个字节,其原型是int ComRdByte (int COMPort);函数Com Rd用于从COM端口读入指定长度数据至缓冲器,其原型是int ComRd (int COMPort, char buffer[], int count);函数Flush InQ可清空输入队列,其原型是int Flush InQ (int COMPort);函数Flush OutQ可清空输出队列,其原型是int Flush OutQ (int COMPort)。
3.2.3 配置COM端口
程序运行后首先需要配置COM端口,选择COM端口号和波特率后,点击Config按钮配置端口。若配置成功,设置CLEAR、READ、TEXTBOX、FLUSHOUTQ、FLUSHINQ有效。
为增强数据传输的可靠性,在发送数据时加入了延时环节。
4 结论
综上所述,Labwindows/CVI提供的叫做函数面板的操作界面,可以对每一个函数实现交互式编程,利用它丰富的库函数,使得源码的键入量大大减少,程序语法正确率提高,工程设计的效率和可靠性大幅度增强。本系统所有程序均调试通过,数据传输可靠,值得推广应用。
参考文献
[1]求是科技.单片机通信技术与工程实践[M].北京:人民邮电出版社,2005.
[2]宋宇峰.LabWindows/CVI逐步深入与开发实例[M].北京:机械工业出版社,2003.
作者简介
马妍霞(1975-),女,山东省济宁市人。大学本科学历。从事工作为电子通信教学方面。
作者单位
济宁职业技术学院 山东省济宁市 272037endprint