文档库 最新最全的文档下载
当前位置:文档库 › LabVIEW串口通信

LabVIEW串口通信

LabVIEW串口通信
LabVIEW串口通信

LabVIEW串口通信

1.串口扩展的问题:

先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接线和扩展卡一般是要装驱动的。

2.串口功能的确认:

在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口软件一般是用串口调试助手,很出名的,也好用。如下图所示:图1 串口调试助手

打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。

3.串口线的检查:

检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。

G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表面上时,就使用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一根串口线再使用交叉线。从电脑主板上将串口引到主机后面板上的线就是这样的直连线。购买串口线的时候一般也会问你买直连的还是交叉的,要区别对待。

串口线还有一个要稍微注意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头(孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪器厂家居然用RJ11(水晶头那种)作为串口头,让人不爽!

总之,使用串口前一定要先确定好硬件没问题,不然很浪费时间的。

4.串口参数设置:

在LabVIEW中使用串口时,有几个参数比较重要,需要先说明一下的。一个是串口初始化这个节点的“终止符”和“禁用终止符?”这二个输入端,这二个输入端是相互作用的,“终止符”默认值为10,它的十六进制是“0x0A”,这是一个ASCII码,是一个换行符,可以从LabVIEW中的字符串的不同显示形式看出来,如下图:

图2 串口消息终止符左边是字符串的正常显示,中间是十六进制显示,右边是“\代码显示”,这三个字符串的值都是一样的。终止符是10,表示在接收数据时,遇到ASCII码为10的字符(即换行符)时就停止接收数据,后面会有例子进行说明。

而“禁用终止符?”的默认值是FALSE,即启用终止符,启用终止符会有什么效果呢?终止符的意思就是当程序接收到这个字符时,就认为已经到了所有数据的未端了,从而停止接收,不管后面还有没有数据。终止符是10,表示在接收数据时,遇到ASCII码为10的字符(即换行符)时就停止接收数据。

可以做一个很简单的试验,先短接串口2、3脚,然后将终止符设置为“0x33”,0x33是字符“3”的ASCII 码,然后发送字符串可以看到接收回来的数据中只有“12”,即“3”被认为是字符串的未端了,它后面的数据就不再接收了。很多朋友就是因为这里设置错误,导致接收数据时有时候只收到一半就没有了,特别是在连续接收数据时,但又不是每次都只能收到一半,有时候也能接收齐全的,就是因为发送的数据中可能包含了终止符而使串口认为到了最后一个字符了。一般是将这个终止符禁用掉,即将“启用终止符?(Enable terminator?)”这一端输入为False即可。

另外还有一个比较重要的设置,就是VISA READ的“读取字节数”这个输入,由于在串口通信中,如果指定读取100个串口缓冲区的字节数,如果当前缓冲区的数据量不足100个时,程序会一直停在VISA READ 这个节点上,如果在超时的时间(默认是10秒)内还没有凑足100个数据的话,程序就会报“Time out”的错误,如果超时时间设置得太长,有可能导致程序很长时间停止在VISA READ这个节点上。解决的办法是使用“Bytes at Port”这个串口的属性节点,在VISA>>Serial>>advance下,也可以在VISA资源线上右键>>创建>>属性节点>>串口设置>>Bytes at Port,如下图:

图 3 Bytes at Port

这个属性节点读取当前串口缓冲区有字节数,然后将它的输出连接到VISA READ的“读取字节数”这个输入端上即可,这样当前缓冲区中有多少个字节就读回多少个,不会有任何等待。

图 4 使用Bytes at Port

5.在LabVIEW中使用串口

目前串口的应用一般有二种类型的(以我接触到的来分类,不严格),一种是仪器控制类型的,一般是上位机发送一个指令,然后下位机作出响应,返回数据给上位机,上位机再读取出来,完成一次通信,即一问一答;另一类是被动接收形的,即下位机会一直发送数据上来。这二种类型的串口通信在处理上会不太一样。

5.1 仪器控制类型

由于在仪器控制时一般都是这种一问一答的方式,所以叫它仪器控制类型。以仪器控制为例来说一下需要注意的事项。

首先是要确认仪器选择的通信模式是串口通信模式。现在的仪器一般都至少有二种通信模式,一种是RS232,一种是GPIB,如果仪器是设置为GPIB通信的话,RS232是不可能通信上的,所以要先确认一下,方法一般是在仪器面板上选择设置>>远程控制>>GPIB/RS232,各个仪器稍微不同,可以查仪器手册看一下。

然后就是确认串口的通信参数的配置,包括波特率、数据长度、校验方法等,有些仪器的某些参数是固定的,比如校验方法固定为奇校验,不能修改,只能在电脑上跟仪器设置为一样的。波特率一般是可以修改的。这些参数的配置一定要根据仪器手册上的来设置。如果参数设置不正确,也能收到一些数据,但一般是乱码,如果收到的数据都是乱码的话,就要先检查一下串口参数设置是否正确了。只有电脑和仪器边的串口参数完全一致时才能收到正确的数据。

接着是要注意发送指令和读回数据之间要有一定的延时,即VISA WRITE和VISA READ之间要有一定的延时,一般200毫秒即可,因为串口是底层硬件,数据从软件到串口上要一点点时间,然后仪器对指令作出响应也要一点点时间,这些时间加起来肯定比软件运行二个节点的时间要短,所以延时是一定要加的。在调试时如果发现正常运行时不能收到数据,但高亮运行就能收到数据,就很有可能是没有加延时的原因!

或者是发一个查询指令,但返回的是上一条查询指令的结果,也可能是因为没有延时或延时不够。

5.2被动接收类型

被动接收形的串口通信稍微麻烦一点,由于上位机是被动接收的,上位机不知道什么时候开始下位机就已经有数据上来了,很有可能下位机发送到一半时,上位机刚好开始接收数据,这时只能接收到后面一半的数据了,所以对于这种通信,一般是采用数据帧的方式进行通信。

这种数据帧的通信方式至少由三部分数据组成:帧头、数据、帧尾(如果数据是固定长度的话,似乎帧尾也可以省掉)。

帧头是为了告诉上位机:从这以后的数据就是有用的数据了,相当于约定好的暗号,一般帧头至少会用二个以上字节,如果只用一个字节的话,万一数据中的数据跟这个帧头一样了就会误以为这个数据是帧头从而导致解析数据出错,帧尾的作用也差不多,告诉上位机从这之前的数据才是有用的数据。但实际上一般的数据帧远不止这几个部分,还会加上一些校验字节、时间信息、帧计数器之类的东东在上面。

其中校验字节是为了检查数据在传输过程中有没有出错的,跟串口的校验位要区分清楚,校验位也是检查数据传输时有没有出错的,但由底层硬件来实现,校验方法由标准规定好,但有几种可以选择,只有一个位(Bit,只能是0或1)。

校验字节是由软件层来实现的,至少有一个字节(Byte,有8个位),而且校验方式由用户定义,非常灵活。

由于被动方式中串口的缓冲区中一直会有数据在,为了保持数据的连续性,在读取数据时跟第一种仪器控制类型不一样。而是采取将读取的所有的串口数据都保存在移位寄存器中,在软件上处理完这些数据后再将它们从移位寄存器中删除。

由于VISA READ的输出是字符串,所以一般使用“连接字符串”这个函数将它们连接起来,然后接到循环结构中的移位寄存器中进行保存,当移位寄存器中的数据量达到一定时或满足数据处理的条件时,才停止这个循环输出读取到的数据。一般如下图所示:

图 5 被动接收类型中的数据接收

在接收下位机发送的帧数据时,一定要先了解帧格式,这样才能正确解析出帧里面的数据来。

下面以例子来说明数据帧格式的通信。

设定通信数据帧每7个字节为一帧数据,其中以0xAC、0x96二个字节作为数据帧头,第三、四个帧头为帧计数器,最大值为0xFFFF,到达最大值后重新从0开始计数,第4、5、6三个字节是数据信息,分别代表数据的高中低位,第7位为状态标志字节,它的第一位为1时表示下位机出错,为0时表示功能正常。

由于LabVIEW中接收到的数据都是以字符串的形式显示出来的,所以需要将字符串转换为ASCII码,一般可以直接使用“转换为U8数组”这个函数,如下图所示:

图 5 字符串转换为U8字节

转换为U8字节后,得到的是所传输字符的ASCII码,我们就很容易进行数据帧的判断了,现收到以下的字符串数据:,

?图6 实际接收到的字符串

上图中下半部分显示的数组是使用“字符串转换为U8数组”的函数转换之后得到的数组,一个是十六进制显示,另一个为十进制显示。对照定义的数据帧格式,就很容易得到我们需要的数据了。

首先是要看从哪里开始才是完整的第一帧,从上面十六进制显示的数组中我们可以看到,并不是第一个

字节就是我们需要的帧头,因为下位机是一直处于发送数据的状态,很可能在串口发送一帧数据的过程中串口就被初始化或者被清空了一次缓冲区,那么这一帧数据的前面部分数据可能就会丢失,只留下后面一部分数据。

以上图为例子,第一二个字节为0x32、0x22,显示不是我们要的帧头,我们要的帧头是在第6、7个字节,以程序来实现的话就是先查找第一个帧头,使用“搜索字符串”,如果找到则判断它下一个字节是否是第二个帧头,如果是,表明已经找到帧头,输出帧头的位置;如果它下一个字节不是第二个帧头,说明这里不是真正的帧头,继续查找下一个帧头,直到找到帧头或搜索完整个字符串都找不到帧头。

这是一个程序的算法问题,具体实现的程序如下图所示:

图7 帧头查找程序

帧头查找到以后,再找数据就容易了,根据之前的定义,第4、5、6个字节是才是我们要的数据,所以直接使用索引号进行索引输出即可。

图8 获取实际数据

一般情况下,如果是用三个字节表示一个数据的话,那么这三个字节分别表示为一个数据的高中低字节,即高字节要乘以25536再加上中字节乘以256再加上低字节的,这样定义后可表示的数据的范围就会扩大很多,但这里为了说明问题,直接认为三个字节的数据相加就是我们要的实际数据,在实际使用过程中应该根据帧格式的字义来解析这个数据。

另外帧格式中定义了最后一个字节为状态标志位,所以提取数据前还要检查一下这个标志位是否正常,不正常时要进行相应的处理,这里不再详细描述。

至此完成一次数据帧的提取。

如果是没什么特殊的要求的话,这里应该也算到一段落了,有一些对测试时间有要求的地方,就会要求在最短的时间内得到最多的信息。图6中我们可以看到,接收到的数据帧中,除了中间一个完整的帧之外,头尾还有一些无用的数据,其实这些数据中也包含了有用的信息的!

比如我们可以从0xAC、0x96这二个帧的位置中推断中它前面的0x22、0x2A、0x38这三个字节也是我们想要的数据字节,但是由于没有接收到它的帧头,所以程序没能提取出来,但我们可以从后一帧的帧头推算出前面那一帧的数据字节是哪些,即使没收到前面那一帧的帧这里只给出一个流程,不再给出具体的程序。

另外有可能接收的数据长度比较长,可能就不止包含了一帧的数据在里面,所以在程序中也要判断一下剩下的数据还够不够一帧的数据长度,如果够则可以根据上一次查找的帧头位置+数据帧长度来确定下一个数据帧的帧头位置了,不需要使用搜索的方法。也可能存在处理完一帧数据后,剩下的数据不够一个帧的,这时可以将这些剩下的数据保留起来,将它添加到下一次接收到的数据前面,组成新的数据再进行处理。去掉已经处理的数据可以使用“删除数组元素”这个函数来实现。这里也不再给出具体的程序。

6.串口数据类型的转换

由于LabVIEW中VISA Read/Write这二个函数都是只能读取/写入字符串类型的数据的,而有时候需要接收/写入的数据类型不一定是字符串,导致在刚开始接触的时候会有一点困惑。

在进行数据转换时,只要记住计算机中所有数据都是以二进制保存这个原则就容易解决问题了。串口线上传输的也是高低,串口接收到的也是二进制数据,只是到LabVIEW后被转换为字符串格式了。还是以例子进行解释。

6.1LabVIEW从串口接收数据

①假设LabVIEW从串口接收到的数据为“1234”(正常显示模式下),那么这个数据在串口底层的时候其实是这样的二进制数据:

00110001 00110010 00110011 00110100

只是在LabVIEW中,这些二进制数据是以字符串形式显示出来的,它们的实质还是二进制数据,这几个二进制数据转换为十进制数据分别是“49,50,51,52”,由于字符串都是以ASCII码形式保存在计算机中的,那么49,50,51,52这几个数在ASCII表中就表示是字符串“1,2,3,4”。所以这几个数据在LabVIEW中就显示为字符串的1,2,3,4了。

如果明白这里面的转换关系,那么要进行数据转换时就很容易了,比如上面的例子中,如果LabVIEW中接收到的是字符串“1234”,而原本下位机传送的是数值型数据,只需要将“1234”字符串转换为对应的ASCII 值就是实际上下位机传上来的数据了,就是“49,50,51,52”

LabVIEW中将字符串转换为对应的ASCII值的函数是“字符串至字节数组转换”这个函数:

图9 字符串转换为字节数组

上面说的是下位机发送的是数值类型的数据的,使用“字符串至字节数组转换”这个函数.

②如果是下位面发送的是字符串类型的数据,那么LabVIEW已经直接转换好了。

个人总结:无论下位机发送的是何种类型的数据,LABVIE从串口接收的时候,总是将每8位二进制数,作为字符的ASCII码解读。

6.2使用LabVIEW发送数据

还有一个问题是使用LabVIEW发送数据的问题

①如果下位机接收的是字符串数据类型的话,直接用VISA写入对应的字符串就行了,现在的仪器一般都是接收字符串的,所以可以直接使用VISA发送而不需要转换。

②如果下位机接收的是数值型数据的话,就需要转换一下,其中数值型又是十进制和十六进制二种用得比较多,这二种数据间相互转换一下就行了,其实是一样的。

由于在LabVIEW中字符串直接有十六进制的显示方式,所以发送十六进制的数据比较方便,比如要发送十六进制数值类型的“0xAF”,那么在VISA Write的写入缓冲区字符串常量上右键>>十六进制显示,如图1,直接输入“AF”即可,那么下位机接收到的就是正确的数据(十六进制数值类型)了。

但实际使用过程中,一般都是需要将某个子VI输出一个动态的字符串通过VISA Write发送到下位机的,这时候就需要对数据进行转换一下,这个转换过程描述起来就是:将字符串A转换为字符串B,使得正常显示的字符串A跟十六进制显示的字符串B是一样的。

由于转换目标(十六进制显示的字符串)的数据类型是十六进制,要想十六进制显示的字符串跟正常显示的字符串一样,这个正常显示的字符串必须都是十六进制的字符,即只能由0-9,A-F这十六个字母中的字母组合而成。否则就没办法使二种显示方式的字符串一致了。

这个转换过程首先将字符串转换为十六进制数值型,然后再通过将这个十六进制数值创建为一个数组,最后再使用“字节数组至字符串转换”这个函数转换为字符串即可,实际上就是图5字符串转换为U8字节的反向操作,只不过是这个十六进制的值初始类型是十六进制,要先转换为数值类型。具体程序如下图所示。

图10 正常显示字符串转换为相同的十六进制显示的字符串

由于十六进制数据由二个字节构成,而字符只有一个字符,所以每二个字符表示一个十六进制数据,如果字符多于二个的话要先进行截取,每二个字符转换为一个十六进制数据。也可以用空格将正常显示的字符串每二个字符用一个空格断开,然后先将这个字符串以空格为分隔符转换为一个字符串数组,再转换为十六进制数值再转换为字符串。

需要注意一下的是如果正常显示的字符串并不是2的整数倍,那么上图的转换程序就会少转换一个字符,可以用程序动态判断一下这个字符串的长度,如果是奇数的话在它最左边补一个“0”再使用上面的程序就正常了。

7.串口问题汇总:

7.1串口资源被占用:

这时候在LabVIEW会报错,提示串口号存在,但当前不能对其进行操作,同时打开MAX时也可以在对应的串口号下看到同样的错误,这表示这个串口已经被其它程序占用了,比如有时候打开了串口调试助手来调试串口,然后又想在LabVIEW里面试一下,这时就会报这个错,因为串口已经被串口调试助手调用了,它不能被二个程序同时使用。

解决的方法是关掉其它程序即可,串口调试助手里也可以关闭这个串口。

还有一种情况是调试OK后生成EXE,运行EXE也出现这个问题,这时是因为串口被原来的LabVIEW 程序打开,再用EXE打开时就会报错,解决办法是关掉原来的LabVIEW程序。最好是关掉LabVIEW.

在使用串口的过程中一定要关闭串口(使用VISA CLOSE),否则程序在退出的时候会报错说数据丢失。

LabVIEW与单片机通讯

LabVIEW单片机通讯 1.串口扩展的问题: 先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接线和扩展卡一般是要装驱动的。 2.串口功能的确认: 在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口软件一般是用串口调试助手,很出名的,也好用。如下图所示:图1 串口调试助手 打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。 3.串口线的检查: 检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。 G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表面上时,就使用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一根串口线再使用交叉线。从电脑主板上将串口引到主机后面板上的线就是这样的直连线。购买串口线的时候一般也会问你买直连的还是交叉的,要区别对待。 串口线还有一个要稍微注意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头(孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪器厂家居然用RJ11(水晶头那种)作为串口头,让人不爽! 总之,使用串口前一定要先确定好硬件没问题,不然很浪费时间的。 4.串口参数设置: 在LabVIEW中使用串口时,有几个参数比较重要,需要先说明一下的。一个是串口初始化这个节点的“终止符”和“禁用终止符?”这二个输入端,这二个输入端是相互作用的,“终止符”默认值为10,它的十六进制是“0x0A”,这是一个ASCII码,是一个换行符,可以从LabVIEW中的字符串的不同显示形式看出来,如下图:

Labview串口通信开发实例(值得拥有)

串口通信的基本概念 串口通信的基本概念 1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米; 而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参 数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB 设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信 的情况。

Labview串口

先是英文资料,后面有详细的中文资料。 https://www.wendangku.net/doc/c2934869.html,/devzone/cda/tut/p/id/2897 Serial Instrument Control Tutorial 目录 1.Overview of Serial Bus 2.Connecting and Setting up a Serial Instrument Control System 3.How to Create a VISA Resource for the Instrument in MAX 4.Instrument Control Software Articles and Related Links Overview of Serial Bus Serial is a common device communication protocol for instrument control because most computers and many remote instruments include at least one serial port. Single applications can be used across a variety of instruments with few modifications, reducing programming and test time. For more information on the serial protocol, including information on transfer speeds and important parameters, please refer to Serial Communication Overview. Connecting and Setting up a Serial Instrument Control System

非常好--LabVIEW串口通信详解

LabVIEW串口通信详解 串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友,文章请勿转载到其它地方,谢谢。 论坛上早先发布过一个贴子,叫《串口WORD资料》,里面有一些中英文的串口的资料,这个文章是对那个资料的补充,如果是初接触串口的朋友建议先看一下上一个贴子先。上一个贴子中提到过的内容这里不再进行补充。 首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。 VISA的驱动可以在NI网站上下载到:https://www.wendangku.net/doc/c2934869.html,/nidu/cds/view/p/id/1605/lang/zhs 1.串口扩展的问题: 先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接线和扩展卡一般是要装驱动的。 2.串口功能的确认: 在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口软件一般是用串口调试助手,很出名的,也好用。如下图所示:图1 串口调试助手 打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。 3.串口线的检查: 检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。 G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表面上时,就使用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一根串口线再使用交叉线。从电脑主板上将串口引到主机后面板上的线就是这样的直连线。购买串口线的时候一般也会问你买直连的还是交叉的,要区别对待。 串口线还有一个要稍微注意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头(孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪器厂家居然用RJ11(水晶头那种)作为串口头,让人不爽! 总之,使用串口前一定要先确定好硬件没问题,不然很浪费时间的。 4.串口参数设置: 在LabVIEW中使用串口时,有几个参数比较重要,需要先说明一下的。一个是串口初始化这个节点的“终

LabVIEW串口通信入门教程

串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友方便使用。 首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。 1.串口扩展的问题: 先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接线和扩展卡一般是要装驱动的。 2.串口功能的确认: 在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口软件一般是用串口调试助手,很出名的,也好用。如下图所示:

图1串口调试助手 打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。 3.串口线的检查: 检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。 G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表

基于LABVIEW的串口通信实验

基于LABVIEW的串口通信实验 一、实验目的 1.了解LabVIEW串口通信基本方法 2.通过LabVIEW串口获取数字温度传感器的数据 二、实验器材 1.计算机一台 2.LabVIEW8.20软件一套 3.串口线一根 4.虚拟仪器实验平台一台 5.分布式温度采集模块一块 6.传感器控制模块一块 三、实验原理 串行通信是工业现场仪器或设备常用的通信方式,它是将一条信号的各位数据按顺序逐位传送。计算机串行通信(简称串口)采用RS232协议,允许一个发送设备连接到一个接收设备以传送数据,最大速率为115200bps。计算机串行口采用Intel8250异步串行通信组件构成,通常以COM1~COM4来表示。 https://www.wendangku.net/doc/c2934869.html,bView串口节点 LabView中提供了已封装好的串口通信节点,它们位于函数->数据通信->协议->串口。

这里主要介绍程序中使用到的串口配置、串口读取、串口写入和串口关闭,其他串口相关的节点使用方法查询LabView帮助。 (1)串口配置 在进行串口通信时,首先要对串口进行初始化和配置。这可以由VISA配置串口节点来完成,串口配置节点如下图所示。 使用该节点可以设置串口的VISA资源名称、波特率、数据位、校验位、超时时间、终止符以及流控制等参数。 VISA资源名称控件用于规定对VISA会话句柄开放的资源,并维持会话句柄和类。VISA 会话句柄是VISA使用的唯一逻辑标识符,用于与资源进行通信。VISA会话句柄由VISA 资源名称输入控件保持,用户不可见。VISA资源名称输出是VISA函数中输出的VISA资源名称的副本。通过将资源名称输出或输入函数和VI,并链接函数和VI,从而简化数据流编程。这与文件I/O函数使用的文件引用句柄输出相似。 (2)串口写入 串口写入是将写入缓冲区的数据写入VISA资源名称指定的设备或接口,可以选择同步或异步。该操作仅当传输结束后才返回。VISA写入的节点图标及端口定义如下图所示。

LABVIEW串口设计

第一部分使用LabVIEW系统VI 1.1、串口VI介绍 LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括: VISA Configure Serial Port:初始化VISA resource name指定的串口通讯参数VI SA Write:将输出缓冲区中的数据发送到VISA resource name指定的串口 VISA Read:将VISA resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中 VISA Serial Break:向VISA resource name指定的串口发送一个暂停信号 VISA Bytes at Serial Port:查询VISA resource name指定的串口接收缓冲区中的数据字节数 VISA Close:结束与VISA resource name指定的串口资源之间的会话 VISA Set I/O Buffer Size:设置VISA resource name指定的串口的输入输出缓冲区大小 VISA Flush I/O Buffer:清空VISA resource name指定的串口的输入输出缓冲区 1.2、使用说明 在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。 图1、串口操作数据流图

首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。 图2、初始化串口 如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VIS A Write,接收数据使用VISA Read。在接收数据之前需要使用VISA Bytes at Ser ial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。 图3、从串口发送数据 图4、从串口接收数据 在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA S et I/O Buffer Size;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISA Close结束与VISA resource name指定的串口之

基于labview单片机串口通信课程设计

辽宁工业大学开放性实验课程设计 题目:基于LabVIEW的单片机之间串口通信设计 院(系):电气工程学院 专业班级:自动班 122 学号: 120302042 学生姓名:刘权 指导教师:(签字) 起止时间:2014.12.17-2015.01.06

摘要 虚拟仪器是现代计算机技术同仪器技术深层次结合的全新概念仪器,实质是利用计算机显示器的显示功能模拟传统仪器的控制面板,以多种形式表达输出测量结果,利用计算机强大的软件功能实现信号数据的运算、分析和处理,完成各种测试功能的一种计算机仪器系统。 本文介绍了利用 LabView语言来实现上、下位机之间通信的方法,并从软、硬件两个方面阐述了设计思想。在简要介绍图形化虚拟仪器平台LabView 的基础上,分析STC12C5A60S2单片机与 LabView之间的串口通信模式,并结合该设计中设计的温度检测系统给出串口通信的软、硬件设计。 应用先进的虚拟仪器软件LabView,大大降低了串口通讯复杂程度,减小了软件设计的工作量,能够大大降低投资成本。在实际应用中有巨大的使用价值。 关键词:MCS51单片机,LabView,串口通信

目录 前言 (5) 第一章绪论 (6) 1.1 研究的背景及意义 (6) 1.2 课题发展状况 (7) 1.3 设计任务 (7) 第二章系统总体设计 (8) 2.1 系统方案设计 (8) 2.2 系统硬件选择 (8) 第三章系统硬件设计 (9) 3.1 元器件的介绍 (9) 3.1.1 主控制器 (9) 3.1.2单片机 (10) 3.2 硬件电路图设计 (10) 3.2.1mcu及复位电路 (10) 3.2.2串口电路 (11) 3.2.3晶振电路 (12) 3.2.4led输出电路 (13) 3.2.5PCB版 (13) 第4章系统软件设计 (15) 4.1 单片机接口程序设计 (15) 4.2 单片机串口通讯协议 (17) 参考文献 (19) 附录 (20)

LabVIEW串口通信

LabVIEW串口通信 1.串口扩展的问题: 先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接线和扩展卡一般是要装驱动的。 2.串口功能的确认: 在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口软件一般是用串口调试助手,很出名的,也好用。如下图所示:图1 串口调试助手 打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接收框里看到接收的数据就是发送的数据。稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。 3.串口线的检查: 检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。 G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表面上时,就使用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一根串口线再使用交叉线。从电脑主板上将串口引到主机后面板上的线就是这样的直连线。购买串口线的时候一般也会问你买直连的还是交叉的,要区别对待。 串口线还有一个要稍微注意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头(孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪器厂家居然用RJ11(水晶头那种)作为串口头,让人不爽! 总之,使用串口前一定要先确定好硬件没问题,不然很浪费时间的。 4.串口参数设置: 在LabVIEW中使用串口时,有几个参数比较重要,需要先说明一下的。一个是串口初始化这个节点的“终止符”和“禁用终止符?”这二个输入端,这二个输入端是相互作用的,“终止符”默认值为10,它的十六进制是“0x0A”,这是一个ASCII码,是一个换行符,可以从LabVIEW中的字符串的不同显示形式看出来,如下图:

labview与单片机串口通信

串口,VISA和MSComm控件,与单片机通信 visa编写串口程序时是不是必须要安装MSComm控件? 首先是labview有自带的串口资源,即visa控件,不需要安装MSComm控件。MSComm控件也可以被labview调用来实现对串口的编程。 但是,visa控件的图标在安装labview之后虽然在控件库里可以显示但是不能用,必须安装visa 驱动,这个驱动可以在官网下载。 win7 winvista的系统和低版本的labview最好安装最新的visa驱动,不然可能会出现错误。 其次我用labview做的上位机,但是用的笔记本没有串口,这时候,用一条 usb转串口线(安装合适的驱动)直接虚拟串口,visa可以对这个虚拟串口操作。 最后,labview和单片机通信,由于labview的visa控件只可对字符写出或者读上来的显示为ascii字符,而单片机的通信协议的命令帧和数据帧可能是由十六进制定义的, 最开始的想法是,将输入数值型数据(十进制的)转成为十六进制数,再将此十六进制转为相对应的ascii码(网上也有相应的labview函数),最后将ascii码下传给单片机; 一个简单的办法: ---------------------字符型的数据(输入字符串,输出字符串,常量字符等等)的属性里有一个选项,将显示样式由正常改为十六进制显示即可,这时就可以直接输入十六进制了。 以下使用NI-VISA与USB设备eZ430-RF2500进行通信,是在使用LabVIEW2010和NI-VISA503full的开发环境通过的。 1、USB与VISA背景 VISA是一个高级API用来与仪器控制总线进行通信。它是平台独立、总线独立、环境独立的。USB是一个基于消息的通信总线。这意味着PC和USB设备通过在总线上以文本或二进制数据格式发送指令和数据进行通信。每个USB设备都有自己的指令集。可以使用NI-VISA读函数与写函数,将这些指令发送到仪器上,并从这些仪器上读取响应。 从NI-VISA 3.0版本开始支持USB通信。能够支持两个等级的VISA资源:USB INSTR和USB RAW。 遵守USB测试与测量类别(USBTMC)协议的USB设备使用USB INSTR资源类别。USBTMC设备遵守VISA USB INSTR资源类别能够理解的协议。如果要与USBTMC设备进行通信,则没有必要进行设置。要

基于LabVIEW的单片机串口通信实现

第4期(总第149期) 2008年8月机械工程与自动化 M ECHAN I CAL EN G I N EER I N G & AU TOM A T I ON N o 14 A ug 1 文章编号:167226413(2008)0420157202 基于L abV IEW 的单片机串口通信实现 朱建平,吕春峰 (云南民族大学物理与电子电气信息工程学院,云南 昆明 650031) 摘要:介绍了在L abV IE W 环境下串口通信的建立方法,结合L abV IE W 的功能,将其应用于单片机串口通信中,从而实现数据交换等功能。关键词:L abV IE W ;单片机;串口通信中图分类号:T P 36811 文献标识码:A 收稿日期:2008201213;修回日期:2008202218作者简介:朱建平(19782),女,湖北黄冈人,讲师,硕士。 0 引言 在实际应用中,我们经常遇到上位机与单片机系统通信的问题。由于上位机和单片机都具有串口,因此经常使用串口完成二者之间的数据交换,这就需要在上位端设计相应的串口通信程序。为了使开发出来的界面更具人性化、功能更强,在此采用L abV IE W 开发单片机与上位机通信系统,利用虚拟仪器软件绘制图形面板,在上位机上模拟出与之功能相对应的控制面板,实现对仪器的控制、数据的分析处理等功能,从而构建出一个有效的单片机与上位机的串口通信系统。1 串口通信系统的建立 111 系统硬件构成及通信的建立 单片机侧采用51系列单片机,晶振为1110592H z ,采用串口通信方式,波特率为9600 b s ,8位数据位,1位停止位,无奇偶校验。单片机的显示部分用于显示接收到上位机发送来的数据,由HD 7279A 控制。HD 7279A 是一片具有串行接口的可同时驱动8位共阴式数码管(或64只独立L ED )的智能显示驱动芯片,这样我们就可以直观地看到上位机发送过来的数据。单片机运行后等待上位机传来启动命令和初始控制,根据上位机发送来的不同控制代码做出相应的数据答复,若接收错误则单片机不做响应,上位机重新发送;当接收到上位机发送的停止命令后,单片机做出响应。 112 通信程序设计 程序采用C 51语言编写,包括主程序、参数初始化子程序、数据管理子程序、中断调用程序(包括定时器、串口的中断服务程序)以及数据传输服务。数据传 输等功能均在中断程序中完成。 主程序中断发生后,进入中断服务,接收完数据帧后,调用数据管理子程序完成对数据的分析、处理,然后调用数据传输子程序将响应数据或短应答发送出去,这样就完成了一个数据传输循环周期的处理。主程序流程见图1。 图1 主程序流程图 单片机的数据存储区开辟了两个缓冲区,分别为数据接收区和数据发送区,一个用来存放上位机发送来的数据帧,另一个用来存放单片机要发送的响应数据。当进入中断后,单片机将上位机发送来的控制值装入数据接收区并直接在单片机的数码管上显示出来,这样就能方便地判断上位机发送的控制值是否正确,单片机根据其数据管理子程序判定控制值,然后

相关文档
相关文档 最新文档