NI LabwindowsCVI串口编程 RS232 教程
NI LabwindowsCVI串口编程 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。
NI LabwindowsCVI串口编程 RS232 教程
4.4.2 RS-232 函数库概述
LabWindows/CVI 6.0 提供的RS-232 函数库主要包括以下几类函数:串行口打开/
关闭(Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control) 函数,串行口状态查询(Status)函数,串行口事件处理(Callbacks)函数。列表如下:
NI LabwindowsCVI串口编程 RS232 教程
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 软面板主要控件基本属性设置
NI LabwindowsCVI串口编程 RS232 教程
软面板编完以后,用户就可以利用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 的输出队列 */
/* 弹出窗口提示用户输入待检测的事件字符 */
PromptPopup ("Event Charcter", "Enter the Event Character", gEventChar, 1);
/* 为串行口1 设置一个回调函数,使得串行口1 收到待检测字符时就调用回
调
函数 Event_Char_Detect_Func 给出提示 */
InstallComCallback (1, LWRS_RXFLAG, 0, (int)gEventChar[0] ,
Event_Char_Detect_Func, 0);
DisplayPanel (gPanelHandle); /* 显示主界面 */
RunUserInterface (); /* 运行用户界面 */
CloseCom (1); /* 在退出程序之前关闭串行口1*/
DiscardPanel (gPanelHandle);
DiscardPanel (gHelpPanelHandle);
return 0;
}
上述代码中用到了函数OpenComConfig,该函数的功能是:打开一个串行口并对 该串行口进行配置。
函数原型:int OpenComConfig (int COM_Port, char Device_Name[ ],
long Baud_Rate, int Parity, int Data_Bits,
int Stop_Bits, int Input_Queue_Size,
int Output_Queue_Size);
参数说明:
COM_Port:整型变量,用于指定要打开的端口号,有效范围为1-1000。
Device_Name[ ]:字符型数组,用ASCII 字符串表示的串行口名,该参数一般默认 为空。
Baud_Rate:长整型变量,串行口的波特率,标准的波特率有:110、300、600、1200、 2400、4800、9600、19200 等。应当指出,利用串行口进行通讯时,通讯双方的波特率 必须一致。此外,包括通讯双方的奇偶校验模式、数据位位数、停止位位数等也必须一
NI LabwindowsCVI串口编程 RS232 教程
致。
Parity:整型变量,用于指定奇偶校验模式。0 表示无奇偶校验,1 表示奇校验,2则表示偶校验,另有两种不太常用的校验模式,此处不作介绍。
Data_Bits:整型变量,用于指定每帧信息中数据位的位数,可选的位数为5、6、7 和8。
Stop_Bits:整型变量,用于指定每帧信息中停止位的位数,可选的位数为1 和2。 Input_Queue_Size:整型变量,用于指定串行口输入队列的大小。
Output_Queue_Size:整型变量,用于指定串行口输出队列的大小。
因此,OpenComConfig (1, "", 9600, 0, 8, 1, 512, 512)的作用是打开串行口1,并对串 行口1 配置如下:波特率为9600,无奇偶校验,8 位数据位,一位停止位,输入/输出 队列的大小均为512 字节。
函数 FlushInQ (1)和FlushOutQ (1)的作用分别为清空串行口1 的输入队列和输出队 列。
上述代码中还用到了一个关键性的函数InstallComCallback,该函数的功能是:为
指定的串行口设置一个回调函数,当有相应的事件(比如串行口收到了特定的字符)发 生时,就调用指定的回调函数。
函数原型:int InstallComCallback (int COM_Port, int Event_Mask,
int Notify_Count, int Event_Character,
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




