LabVIEW串口问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题:

如何学习串口通信?

解答:

本文介绍串口通信的基本概念。

1,常用术语和概念

对于串口通信的常用术语和概念请参见KnowledgeBase 1M9E1L6Q: Serial Communications General Concepts

2,确认硬件操作的回路测试

有三种方式确认串口的操作:LabVIEW,超级终端和LabWindows/CVI。这三种方式进行回路测试是把串口的发送和接受引脚短接。第一步描述短接引脚的过程。LabVIEW的处理写在下面,而超级终端和LabWindows/CVI的过程在本文后面的链接里。对于LabVIEW建议使用如下步骤:

a,连接一根电缆到串口。最常用的RS-232电缆是9针或者25针(DB-9或者DB-25)。在电缆端把2、3引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成【1 2=3 4 5】。对于RS-485端口,电压是差分的。因此,你必须短接TXD+和RXD+、TXD-和RXD-(对于DB-9电缆,连接pin4到pin8和pin5到pin9;对于模块化接口,连接pin2到pin6和pin3到pin7;对于Combicon

接头,连接pin1到pin5和pin2到pin4。)确保你的软件配置为4线模式。

注意:参考附录A“Windows用户的串口软硬件手册”(链接见下),获得不同连接器的更多信息。

b,对于超级终端或者LabWindows/CVI,请参考文章的末尾。

c,对于LabVIEW,打开名为“Serial Communication.vi”的例子程序。对于LabVIEW不同版本,你可以在不同的位置找到这个例子程序:

· LabVIEW 6.1,Help->Find Examples->Hardware Input and Output->Serial->Serial Communication VI. · LabVIEW 6.0,Help->Examples->Search Examples->I/O Interfaces Examples->Serial Communication Examples->Serial Communication VI.

· LabVIEW 5.1,Help->Search Examples->I/O Interfaces Examples->Serial Communication

Examples->Serial Communication VI.

· LabVIEW 5.0,Help->Search Examples->I/O Interfaces Examples->Serial Communication

Examples->Serial Communication VI.

·如果你使用LabVIEW 4.0或者更低的版本,请查找Developer Zone中的例子,Loopback Test for Serial Port。

现在,使用例子中的vi,把字符串写入“Write String”的文本框中,然后在Read String文本框中读回这些字符。在你运行VI之前,确保你选择了正确地COM口或者资源名称。

d,如果工作正常,字符串被读回,表明串口的硬件工作正常。许多串口通讯的问题发生在读写调用的定时或者串口的配置上。

3,常见的问题

许多问题是软件问题,而不是硬件问题。使用例子程序作为查找错误起点,使用LabVIEW带的例子程序(在Help->Search Examples中或者使用本章后面提供链接的例子程序数据库)。

a,端口参考:在LabVIEW中,端口从0开始编号。因此LabVIEW中端口0就是PC上的COM1。

· PC:0=COM1,1=COM2,等等。

· Mac:0=Modem,1=Printer,等等。

· Sun:0=ttya,1=ttyb,等等。

b,程序中定时,挂起:许多次对端口的读操作中串口Read VI导致停止运行并且等待或者挂起。这常常发生在一个读操作并且指定读取一定数量的字节。串口Read VI读取制定数量的字节,如果在串口接收buffer中没有足够的字符,它会等待到串口收到更多的字节。如果没有更多的字节写到buffer中完成读取操作,程序就会不确定的挂起和等待。这可以通过使用Serial Read with Timeout VI(位于Help->Search Examples->Serial Communication)消除。另一种方法是使用Bytes At Serial Port VI检查端口,知道buffer 中还有多少字节。把结果连接到read的输入,作为读取的字节数,这样可以保证读操作完成。请看LabVIEW 的串口通信例子作为一个很好的学习串口的起点。

c,程序中的定时,不完全传输:另一个常见问题是读操作完成,但是实际上没有完全收到预期的、完整的信息字符串。这也许会在你开始读但是写操作还没完成时发生。这种情况可以使用一个顺序结构或者使用数据流的依赖性解决。数据流的依赖可以通过在初始化写后连线到写操作(通常是error cluster)实现。

d,仪器终止字符:当检验和设备通信时,串口通信非常方便,因为串口能够完全按程序中制定的输出。这意味着你必须知道和编写程序指定码序,包括停止字符,这样才能保证仪器正常工作。通常出现的问题是没有使用仪器所规定的停止字符,或者在指令字符串中写了多余的空格或者其他字符。在LabVIEW中最新的和设备通信的标准是虚拟仪器软件架构(VISA)。VISA是控制VXI、GPIB、RS-232和其他类型仪器的统一接口库。如果你有串口I/O通信的问题,VISA可以帮助你消除结束字符的错误,同时能使你的代码在将来具有可重用性和设备可互换性。

4,虚拟仪器软件架构(VISA)

VISA是在所有LabVIEW平台下一个控制VXI、GPIB、RS-232和其他类型仪器的统一接口库。VISA是VXIPlug&Play联盟制定一个标准,联盟包括超过35家业界最大的仪器公司。VISA标准统一了工业界软件,使之具有可解释和可重用性,而不管时间和设备I/O的变化。NI-VISA驱动可以从网站上下载(参见文章后面的链接)。如果对VISA有问题,可以看后面VISA支持的网页。

5,打印报告和错误-37

Windows的LabVIEW 5.1及其以上版本包括报告生成的vis,使用户坑一向打印机发送文本。使用报告生成的vi,Help->Search Examples->Advanced->Report Generation。对于使用串口通信打印或者更早版本LabVIEW,请参见后面的链接。

如果打印机连接到并口,例如LPT1(或者LPT2,等等),你能够使用Serial Port Write.vi。对于更多的信息,请参见LabVIEW文档的Serial Port VIs那一章。

如果打印机是网络打印机,你不能使用serial Port Write VI;你必须使用其他方式打印,比如:

a,使用编写子Vi的方式打印一个字符串,在子VI的VI Setup中选择“Print VI When VI Completes Execution" 。

b,使用System Exec VI调用Notepad.exe可以编程的方式打印一个字符串。VI的输入是Notepad.exe /p c:\junk.txt,junk.txt是一个文本文件,放置需要打印文本。

c,对于Error-37,请根据后面的链接检查LabVIEW.ini文件。

相关文档
最新文档