- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NILabwindowsCVI串口编程RS232教程
4.4.1 RS-232C 接口介绍
在介绍具体的RS-232 函数库之前,本节先简要介绍RS-232C 接口。美国电子工业协会(EIA)公布的 RS-232C 是用的最多的一种串行通信标准,它是从CCITT 远程通信标准中导出的,用于数据终端设备(DTE)和数据通信设备(DEC)之间的接口。该标准包括按位串行传输的电气和机械方面的规定。
一、 接口信号
RS-232C 的机械指标规定:RS-232C 接口通向外部的连接器(插针插座)是一种“D”
型25 针插头。由于25 芯中有许多是不常用的,IBM-PC 对其进行了简化,取了其中的
常用的9 芯,构成了9 芯RS-232C 串行接口,使其成为一种事实上的串行接口标准配
置。RS-232C 的“D”型9 针插头引脚定义如图4-13 所示。
RS-232C 标准接口中的主要信号是“发送数据”和“接收数据”,它们用来在两个
系统或设备之间传送串行信息。对于异步通信,传输的串行位数据信息的单位是字符。
二、 数据传送格式和电气特性
图 4-14 示出了RS-232C 以位串行方式传输数据的格式,这是微机系统中最通用的
格式。7 位ASCII 码数据的连续传送由最低有效数字位开始,而以奇偶校验位结束。应
当指出,RS-232C 标准接口并不限于ASCII 数据,事实上还可有5 到8 个数据位,后
加一奇偶校验位,并有1 或2 位停止位。
在电性能方面,这一标准使用负逻辑。逻辑1 电平是在-15V 到-5V 范围内,逻辑0
电平则在+5V 到+15V 范围内。它要求RS-232C 接收器必须能识别低至+3V 的信号作为
逻辑0,而识别高至-3V 的信号作为逻辑1,这意味着有2V 的噪声容限。RS-232C 进行
数据传输的最高速率为20KB/S,通信距离最长为15m。
4.4.2 RS-232 函数库概述
LabWindows/CVI 6.0 提供的RS-232 函数库主要包括以下几类函数:串行口打开/
关闭(Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)
函数,串行口状态查询(Status)函数,串行口事件处理(Callbacks)函数。列表如下:
4.4.3 RS-232 编程举例
利用LabWindows/CVI 的RS-232 函数库进行串行口应用编程时,主要包括以下几
个步骤:首先要打开一个串行口并对其进行配置,然后用户就可以利用该串行口收发数
据,程序结束之前则应当关闭该串行口。
本节结合一个实例介绍RS-232 函数库的使用方法。读者能在目录\samples\rs232\
commcallback.prj 下找到该例子。该实例利用计算机的串行口1 实现了“自发自收”和
“串行口事件检测”的功能。所谓“自发自收”指的是从计算机串行口发送出去的信息又被本计算机收到,而“串行口事件检测”的意思是当计算机的串行口检测到特定的字
符时就弹出提示对话框。
该例子虽然简单,但它非常有助于用户掌握串行口编程的基本思路和RS-232 相关
函数的使用方法。以下将分步骤介绍该该例程的实现方法。
步骤一:编写界面,生成程序框架
首先,用户应按照图4-15 所示编写软面板。为方便用户编写软面板,表4-28 列出
了软面板上各控件的基本属性设置。
图 4-15 软面板示意图
表 4-28 软面板主要控件基本属性设置
软面板编完以后,用户就可以利用LabWindows/CVI 自动生成程序框架,并进入步
骤二。
步骤二:打开串行口1 并进行配置
此部分代码添加在主函数中,如下所示:
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0) /* Initialize CVI libraries */
return -1; /* out of memory */
if ((gPanelHandle = LoadPanel (0, commcallback.uir, PANEL)) 0)
return -1;
if ((gHelpPanelHandle = LoadPanel (0, commcallback.uir, HELP_PANEL)) 0)
return -1;
OpenComConfig (1, , 9600, 0, 8, 1, 512, 512); /* 打开串行口1 并进行配置
*/
SetCTSMode (1, LWRS_HWHANDSHAKE_OFF); /* 禁止硬件握手 */
FlushInQ (1); /* 清空串行口1 的输入队列 */
FlushOutQ (1); /* 清空串行口1 的输出队列 */
/* 弹
您可能关注的文档
最近下载
- 第七章swing事件模型.pdf
- 公司行政岗位年终述职报告.pptx VIP
- 81404综采工作面作业规程6.pdf VIP
- 小学英语新人教版PEP三年级上册Unit 1 Making friends Part A第1课时教学课件(2024秋).pptx
- 洗煤厂年入洗60万吨原煤扩建项目可行性分析报告.pdf
- 车辆自适应巡航系统性能要求及测试方法.pdf VIP
- GB_T 3880.3-2024一般工业用铝及铝合金板、带材 第 3 部分尺寸偏差.docx VIP
- 半导体管图示仪操作说明.xls
- 东软NetEye防火墙V3.2.4 SNMP MIB参考指南.pdf VIP
- 广西三甲医院各地市分布.docx VIP
文档评论(0)