labview中 我现在在做一个上位机对串口发送 ASCII码和十六
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位。
LabVIEW串口发送数据_KC10121806_c01(精)
1
LabVIEW串口通信
2
目录
CONTENTS
1
串口通信概念
2
串口通信参数配置
3
虚拟串口软件
4
串口调试软件与MAX配置
5
串口数据类型转换
6
LabVIEW串口发送数据
7
LabVIEW串口接收数据
*
3
LabVIEW串口发送数据
4
LabVIEW串口通信
LabVIEW串口发送数据
• ASCII码发送数据 • 十六进制发送数据
5
VISA串口写入
“VISA写入” 函数
使写入缓冲区的数据写入VISA资源名称指定的设备或接口。
串口 发送
写入缓冲区的数据为字符串类型,有两种形式:ASCII码、字节。 ASCII码:若发送的字符串以正常形式显示,则发送字符串的ASCII码,串口通信为ASCII字符串方式; 字节:若发送的字符串以HEX方式显示的字节,则发送的字符串为字节,多用于直接传输十六进制数字。
8
ASCII码发送数据
写入十进ห้องสมุดไป่ตู้整型数据 2
ASCII 码
发送十进制整形数据(I32)时,使用“数值至十进制转换”函数,将其转换成字符 串(48),此时写入缓冲区数据ASCII码(52,56),对应显示字符串为“48”。
9
写入十六进制数据
十六进制发送数据
十六 进制
发送十六进制制整形数据时,使用“强制类型转换”函数,将其转换成字符串,写 入数据缓冲区。
6
ASCII码发送数据
写入字符串数据类型
ASCII 码
发送或接收字符串,则发送或接收字符串的ASCII码,以字符串形式显示。 7
串口调试助手的十六进制发送与字符串发送
串口调试助手的十六进制发送与字符串发送
串口调试助手的十六进制发送与字符串发送
两天调试一个zigbee模块,要求命令要求使用16进制格式发送给模块。
用串口助手的16进制发送功能控制zigbee,换单片机发送怎么试都不好用,只知道是数据格式转换有问题,一直没搞明白串口助手的16进制发送是怎么发的,直到网上看到一篇文章,下边直接复制过来了。
在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。
关于两者的区别,需要从计算机存储数据的格式说起。
在计算机中,数据是以二进制的形式存储的,例如十进制1(10)在计算机中用0000 0001(2)来表示。
我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。
例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:
(1)字符串发送
串口以字符串发送数据,首先将字符串转化为二进制,格式如下:
然后按照8位(串口设置数据位为8位)形式将数据发送出去。
串口接收的数据格式如下:。
串口调试助手的十六进制发送与字符串发送
串口调试助手的十六进制发送与字符串发送
两天调试一个zigbee模块,要求命令要求使用16进制格式发送给模块。
用串口助手的16进制发送功能控制zigbee,换单片机发送怎么试都不好用,只知道是数据格式转换有问题,一直没搞明白串口助手的16进制发送是怎么发的,直到网上看到一篇文章,下边直接复制过来了。
在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。
关于两者的区别,需要从计算机存储数据的格式说起。
在计算机中,数据是以二进制的形式存储的,例如十进制1(10)在计算机中用0000 0001(2)来表示。
我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。
例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:
(1)字符串发送
串口以字符串发送数据,首先将字符串转化为二进制,格式如下:
然后按照8位(串口设置数据位为8位)形式将数据发送出去。
串口接收的数据格式如下:
(2)十六进制发送数据
串口以十六进制发送数据,首先将数据转化为:。
labview如何进行串口通信——labview串口通信全方位了解(1)
串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。
论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友方便使用。
首先补充一个比较重要的问题,就是在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再发一次看一下。
在LabVIEW中使用串口
第一部分使用LabVIEW系统VI一、串口VI介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:VI名称 VI功能VISA Configure Serial Port 初始化VISA resource name指定的串口通讯参数VISA 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指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISA Write,接收数据使用VISA Read。
在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
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再发一次看一下。
在LabVIEW中使用串口
第一部分使用LabVIEW系统VI一、串口VI介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:VI名称 VI功能VISA Configure Serial Port 初始化VISA resource name指定的串口通讯参数VISA 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指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISA Write,接收数据使用VISA Read。
在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
labview中我现在在做一个上位机对串口发送ASCII码和十六
labview中我现在在做一个上位机对串口发送ASCII码和十六在LabVIEW中使用串口第一部分使用LabVIEW系统VI一、串口VI介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:VI名称 VI功能VISA Configure SerialPort初始化VISA resource name指定的串口通讯参数 VISA Write 将输出缓冲区中的数据发送到VISA resource name指定的串口VISA Read 将VISA resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中VISA Serial Break 向VISA resource name指定的串口发送一个暂停信号VISA Bytes at SerialPort查询VISA resource name指定的串口接收缓冲区中的数据字节数 VISA Close 结束与VISA resource name指定的串口资源之间的会话VISA Set I/O BufferSize设置VISA resource name指定的串口的输入输出缓冲区大小VISA Flush I/O Buffer 清空VISA resource name指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISA Write,接收数据使用VISA Read。
在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
在LabVIEW中如何实现十六进制和ASCII之间的转换
在LabVIEW中如何实现十六进制和ASCII之间的转换主要软件: LabVIEW Development Systems>>LabVIEW Base Package主要软件版本: 1.0主要软件修正版本:次要软件: N/A问题:我正在使用LabVIEW与一台仪器进行通讯,它以十六进制的形式返回信息。
例如,它不会返回字母"L”,而是返回它对应的十六进制表示"4C”。
在LabVIEW 中,我该如何编程实现将这个十六进制表示转换为其对应的ASCII表示?如果需要以十六进制等价的形式向仪器发送命令,该如何实现?解答:将十六进制转换为ASCII:为了将一个十六进制的字符串转化为ASCII字符串,您必须首先使用扫描值函数将十六进制字符转化为其对于的十进制表示,您可以在编程»字符串»字符串/数值转换函数选板下面找到这个函数。
然后再使用强制类型转换来将该十进制表示转换为它对应的ASCII字符串,您可以在数学»数值»数据操作函数选板下面找到这个函数。
将ASCII转换为十六进制:为了将一个ASCII字符串转换为十六进制字符串,您必须首先使用强制类型转换函数将ASCII字符串转换为其对应的十进制表示,您可以在数学»数值»数据操作函数选板下面找到这个函数。
然后再使用数值至十六进制字符串转换函数将该十进制表示转换为它对应的十六进制字符串,您可以在编程»字符串»字符串/数值转换函数选板下面找到这个函数。
/public.nsf/allkb/436ED7BEF1F9C1EA862575A2003E051Flabview从串口接收字符串,并截取为不同长度数组问题。
浏览次数:171次悬赏分:5 |离投票结束还有 1 天7 小时|提问者:毅然而立labview从串口接收字符串,每23字节为一个单位,前3个字节是标识码,如何将23个字符串截取开并且分成16字节+2字节+2字节的3个一维数组?问题补充:实际情况是这样的,下位机每隔40ms发送23个字节的数据到串口,其中前三位是固定的数据头,面是16字节的A数据,2字节的B数据,2字节的C数据,我怎么才能把这三种数据分出来呢?积极投票可以增加您的经验值,每票1分,每天上限20分投票备选答案共3条最简单的做法(如果你下位机不会发其它的数据,只会每隔40ms发一次23字节的命令),那你读取串口的时候,设置读取长度为23字节,然后写个子程序,用以分析这23字节长的字符串,子程序就是用三个截取字符串函数,就可以分离出来了追问下位机一开始是要发送几个无用的测试数据的,长度不一定。
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再发一次看一下。
串口数据发送(十六进制发送与字符发送区别)
串口数据发送——以字符发送和以十六进制发送的区别
在使用串口发送数据时可以选择字符串发送或者十六进制发送,通常情况下我们习惯选用字符串发送数据。
关于两者的区别,需要从计算机存储数据的格式说起。
在计算机中,数据是以二进制的形式存储的,例如十进制1(10)在计算机中用0000 0001(2)来表示。
我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的发送出去。
例如我们要发送一串数据“A852010100000000A91A”,以字符串和十六进制两种方式发送:(1)字符串发送
串口以字符串发送数据,首先将字符串转化为二进制,格式如下:
0000 1010 0000 1000 0000 0110 0000 0010 0000 0000 0000 0001 0000 0000 0000 0001
A 8 5 2 0 1 0 1
0000 0000 0000 0000 0000 0000 0000 0000 0000 1010 0000 1001 0000 0001 0000 1010 0 0 0 0 A 9 1 A
然后按照8位(串口设置数据位为8位)形式将数据发送出去。
(2
串口以十六进制发送数据,首先将数据转化为:
1010 1000 0110 0010 0000 0001 0000 0001 0000 0000 0000 0000 1010 1001 0001 1010 0XA8 0X52 0X01 0X01 0X00 0X00 0XA9 0X1A 然后按照8位(串口设置数据位为8位)形式将数据发送出去。
LabVIEW串口通信详解
LabVIEW串口通信详解串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。
论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友,文章请勿转载到其它地方,谢谢。
论坛上早先发布过一个贴子,叫《串口WORD资料》,里面有一些中英文的串口的资料,这个文章是对那个资料的补充,如果是初接触串口的朋友建议先看一下上一个贴子先。
上一个贴子中提到过的内容这里不再进行补充首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA 这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。
VISA的驱动可以在NI网站上下载到:/nidu/cds/view/p/id/1605/lang/zhs1,串口扩展的问题先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。
PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。
PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。
转接线和扩展卡一般是要装驱动的。
2,串口功能的确认在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。
检查的方法很简单,就是将串口的2、3脚短接起来,脚是发送数据,2脚接收数据,就是这个串口自发自收。
在LabVIEW中使用串口
第一部分使用LabVIEW系统VI一、串口VI介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:VI名称 VI功能VISA Configure Serial Port 初始化VISA resource name指定的串口通讯参数VISA 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指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISA Write,接收数据使用VISA Read。
在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
LABVIEW 串口的使用
本站原创,转载请注明出处AVR与虚拟仪器串口的使用本页关键词:labview labview 下载labview8.2 labview教程labview论坛labview 8.20 labview 7.0 labview 序列号labview7.1labview 8.0 串口的使用串行通讯终端与计算机之间或者计算机与计算机之间进行交换信息时,除了采用并行通讯方式之外,还经常采用串行通讯方式。
并行通讯是指数据的各位同时进行传送,其有点是传送数据速度快,缺点是有多少位数据就需要多少根传输线,这在数据位数较多,传送距离较远时就不宜采用。
串行通讯是指数据一位一位地按顺序传送,其突出优点是只需一根传输线,特别适应于远距离传输,缺点是传送速度较慢。
在微机测量,控制系统中,目前串行数据的传输大多采用异步通讯的方式。
同步通讯和异步通讯串行通讯分为同步传送和异步传送两种方式。
? 同步传送方式要求通信双方以相同的速率进行,而且要准确地协调。
它通过共享一个单个时钟或定时脉冲源以保证发送方和接受方准确同步。
其特点是允许连续发送一组字符序列(而非单个字符),每个字符数据位数相同,没有起始位和停止位,效率高。
? 异步传送方式不要求通信双方同步,发送方和接受方可以有各自的时钟源。
为了能够实现通信,双方必须都遵循异步通信协议。
在异步通信中,通信双方必须规定两件事:一是字符格式,即规定字符各部分所占的位数,是否采用奇偶校验,以及校验的方式;二是采用的波特率,以及时钟率与波特率之间的比例关系。
由此可见,异步通信方式的传输效率比同步通信方式低,但它对通信双方的同步要求大大降低,因而成本也比同步通信方式低。
DTE和DCE在串行通讯中,用于发送和接收数据的设备称为数据终端设备(Data Terminal Equipment 简写为DTE)。
DTE既可以是一台计算机,也可以是一台只接收数据的打印机。
用于连接DTE 与数据通信网络的设备称为数据通信设备(Data Communications Equipment 简写为DCE),或称为数据电路终接设备。
基于51单片机的温度采集系统(Labview做上位机)
基于51单片机的温度采集系统(Labview做上位机)做该设计的初衷是为自己的毕设打基础,因为我的毕设要做一个探测机器人,需要对某一地区的各种环境参数进行检测,然后通过WIFI返回到上位机。
所以为了搞懂温度传感器以及练习上位机的设计,花了几天时间做了一个很简单的采集系统。
今天把它拿出来跟各位小伙伴们分享,希望对各位有所帮助,同时也希望大佬们指出不足,起到一个相互学习,相互促进的作用。
该系统原理是:51单片机把ds18b20传感器将采集到的温度值(十六进制)通过串口发送到labview,labview对单片机发来的数据做简单的处理然后显示。
上位机界面上位机(接受程序)简单的硬件连接数据纪录串口部分:void main() {if(flag==1||flag1==1) {S=test/10;Y=test%10;ES=0;flag=0;SBUF=S;while(!TI);TI=0;SBUF=Y;while(!TI);TI=0;if(temperature!=test)flag1=1;ES=1;}}//串口中断void ser() interrupt 4{if(RI==1){RI=0;a=SBUF;if(a=='1') P1=0x55;if(a=='0') P1=0xaa;flag=1;}}温度采集部分:#include#include "ds18b20.h"#include "delay.h"sbit DQ=P2^2; //温度传感器 I/O 口uchar reset_ds18b20(){uchar presence;DQ=0;delay_ds18b20(29); //延时480 - 960 us DQ=1; delay_ds18b20(3); //延时 15 - 60 us presence=DQ;delay_ds18b20(25); //延时 60 - 240 usreturn(presence);}uchar read_bit_ds18b20(){uchar i;DQ=1;delay_ds18b20(1);DQ=0;//delay(1); //延时 15us 也可以不延时DQ=1;//delay(3); //延时 1 - ∞ usfor(i=0;i<3;i++);return(DQ);}void write_bit_ds18b20(uchar dat){DQ=0; //置0 无需延时if(dat==1)DQ=1;delay_ds18b20(1); //延时 60 - 120 us DQ=1;delay_ds18b20(1); //延时 1 - ∞ us }void write_byte_ds18b20(uchar dat){uchar i,j;for(i=0;i<8;i++){j=((dat>>i)&0x01);write_bit_ds18b20(j);//delay(1); //延时 1 - ∞ us}}uchar read_byte_ds18b20(){uchar dat=0;uchar i;for(i=0;i<8;i++){if(read_bit_ds18b20())dat|=0x01<<>//delay(1); //延时 1 - ∞ us}return(dat);}int read_temp_ds18b20(){uchar templ=0,temph=0;int temp=0;reset_ds18b20();//复位write_byte_ds18b20(0xcc); //跳过ROMwrite_byte_ds18b20(0x44); //跳过温度采集delay_ds18b20(10); //750msreset_ds18b20();write_byte_ds18b20(0xcc); //跳过ROMwrite_byte_ds18b20(0xbe); //准备好数据(开始温度转换采集)templ=read_byte_ds18b20();//读低字节温度值temph=read_byte_ds18b20();//读低字节温度值temp=(templ+(temph*256));return(temp); }关键字。
LABVIEW 串口的使用
本站原创,转载请注明出处AVR与虚拟仪器串口的使用本页关键词:labview labview 下载labview8.2 labview教程labview论坛labview 8.20 labview 7.0 labview 序列号labview7.1labview 8.0 串口的使用串行通讯终端与计算机之间或者计算机与计算机之间进行交换信息时,除了采用并行通讯方式之外,还经常采用串行通讯方式。
并行通讯是指数据的各位同时进行传送,其有点是传送数据速度快,缺点是有多少位数据就需要多少根传输线,这在数据位数较多,传送距离较远时就不宜采用。
串行通讯是指数据一位一位地按顺序传送,其突出优点是只需一根传输线,特别适应于远距离传输,缺点是传送速度较慢。
在微机测量,控制系统中,目前串行数据的传输大多采用异步通讯的方式。
同步通讯和异步通讯串行通讯分为同步传送和异步传送两种方式。
? 同步传送方式要求通信双方以相同的速率进行,而且要准确地协调。
它通过共享一个单个时钟或定时脉冲源以保证发送方和接受方准确同步。
其特点是允许连续发送一组字符序列(而非单个字符),每个字符数据位数相同,没有起始位和停止位,效率高。
? 异步传送方式不要求通信双方同步,发送方和接受方可以有各自的时钟源。
为了能够实现通信,双方必须都遵循异步通信协议。
在异步通信中,通信双方必须规定两件事:一是字符格式,即规定字符各部分所占的位数,是否采用奇偶校验,以及校验的方式;二是采用的波特率,以及时钟率与波特率之间的比例关系。
由此可见,异步通信方式的传输效率比同步通信方式低,但它对通信双方的同步要求大大降低,因而成本也比同步通信方式低。
DTE和DCE在串行通讯中,用于发送和接收数据的设备称为数据终端设备(Data Terminal Equipment 简写为DTE)。
DTE既可以是一台计算机,也可以是一台只接收数据的打印机。
用于连接DTE 与数据通信网络的设备称为数据通信设备(Data Communications Equipment 简写为DCE),或称为数据电路终接设备。
mfc串口通信发送16进制数据的方法
mfc串口通信发送16进制数据的方法MFC(Microsoft Foundation Class)提供了许多串口通信的功能来发送和接收数据。
在MFC中,我们可以使用CSerialPort类来完成串口通信,并且可以通过该类发送16进制数据。
以下是在MFC中进行串口通信并发送16进制数据的方法:1.创建一个MFC应用程序项目:首先,我们需要创建一个MFC应用程序项目。
打开Visual Studio,选择“创建新项目”,然后选择MFC应用程序向导。
按照向导的指示进行项目的设置,最后创建一个新的MFC应用程序项目。
2.添加CSerialPort类到项目中:在刚创建的MFC应用程序项目中,右击项目名称,选择“添加”->“类”,在弹出的对话框中选择“MFC类”。
在“MFC类向导”中,选择“添加到一个MFC最后调用的类中”,然后点击“完成”按钮。
现在,CSerialPort类将被添加到项目中。
3.初始化串口设置:打开您的对话框类(例如CMyDialog),在头文件中添加头文件#include "SerialPort.h"。
在对话框类的OnInitDialog()函数中,添加以下代码来初始化串口设置:```cppCSerialPort serialPort;if (serialPort.InitPort(1, 9600, 'N', 8, 1)){//初始化串口成功}else{//初始化串口失败}```InitPort()函数用于初始化串口参数,参数分别为:串口号,波特率,奇偶校验位,数据位,停止位。
以上代码中的示例将串口号设置为1,波特率为9600,无奇偶校验位,数据位为8,停止位为1。
4.发送16进制数据:在需要发送数据的地方,我们可以使用以下代码来发送16进制数据:```cppunsigned char hexData[] = { 0x01, 0x02, 0x03 };int dataSize = sizeof(hexData) / sizeof(hexData[0]);serialPort.SendData(hexData, dataSize);```SendData()函数用于发送数据,第一个参数为待发送数据的指针,第二个参数为待发送数据的大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在LabVIEW中使用串口
第一部分使用LabVIEW系统VI
一、串口VI介绍
LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:
VI名称 VI功能
VISA Configure Serial
Port
初始化VISA resource name指定的串口通讯参数 VISA 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指定的串口的输入输出缓冲区
二、使用说明
在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图
首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口
如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISA Write,接收数据使用VISA Read。
在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。
图3、从串口发送数据图4、从串口接收数据
在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Size;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。
在串口使用结束后,使用VISA Close结束与VISA resource name指定的串口之间的会话。
图5、设置缓冲区大小图6、清空缓冲区图7、结束会话/线程
具体的例子可以参考:examples\instr\smplserl.llb。
第二部分使用MSCOMM控件
在LabVIEW中使用MSCOMM控件,与在VC、VB中使用一样。
同样可以使用中断方式进行接收。
图8、使用控件的串口收发程序
图9、程序数据流图
首先通过LabVIEW的工具菜单“Tools >> Advanced >> Import ActiveX Controls”将Microsoft的串口控件-“Microsoft Communications Control,version 6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在User Controls Palette里面可以找到这个控件。
图10、添加ActiveX控件菜单
图11、选择添加用户控件
图12、用户控件
将串口控件放置在Front Panel上,在框图程序中用控件属性对其进行编程,实现所需要的功能。
注意:一个串口资源要有一个MSCOMM控件与之相对应。
第三部分注意事项
一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz 或其倍数。
二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),所以如果需要发送或接收十六进制数值(Hex),请在发送或接收之前进行必要的转换。
2.1、数值型数据的处理方法:
1.如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这
种情况下,首先设置VISA Write的write buffer的显示属性为Hex Display,然后直
接输入要发送的16进制字符串就可以了。
串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命
令。
2.数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将
其转换成对应的16进制字符串,才能赋给VISA Write发送。
将这些数据构成一个
数组,用Byte Array To String进行转换,转换的结果就是对应数组数值的字符串,可以提交VISA Write发送。
或者使用Type Cast也可以实现同样的功能。
图13、串口数据转换界面
图14、串口数据转换数据流图
图15、操作界面
图16、单片机C程序
2.2、字符串型数据的处理方法:
我们在处理过程当中,传输的数据可能具有一定格式或协议,比如一个完整的数据帧包括起始段、数据段、校验段等等,而每一段往往又有几个部分组成,这几个部分的类型和长度可能又不尽相同,可能是数值型的,可能是字符型的,也可能是布尔型的,单字节或者是多字
节。
此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW里最方便的数据类型。
经过打包的字符数据要经过串口发送需要进行必要的转换,否则传输将出错。
比如我们打包过后需要发送的的字符串为:34 12 56 78 94(空格为了区分),如果直接将其赋给VISA Write 发送,串口上的数据将是:33 34 31 32 35 36 37 38 39 34。
正确的转换程序如下。
图17、字符型数据处理
数据接收:
从计算机串口接收到的数据是16进制的ASCII码,要转换成对应的数值型数据,可以使用String To Byte Array或者Type Cast。
三、LabVIEW串口VI不能使用中断方式传输。
关于串口通信的一个问题
labview中我现在在做一个上位机对串口发送 ASCII码和十六位进制转换问题
问题内容:
比如我的上位机打算发一个0x55 我的意图是发十六进制的55
但是串口输入输出都只能是字符串格式 55的字符串格式就变成发送ASCII码的55了就变成发送十六进制的3535了这个怎么解决?收发都有这个问题~ 分数不多急用谢谢各位了~
问题补充:
可能写的不清楚
比如我要发55 就是二进制的01010101 但是输入端不让直接发数字要转化成字符
我怎么转化成字符使字符还是01010101
最佳回答:
你的意思我大概清楚了。
这么给你解释下吧:且不管你的老师说的是什么,首先,在LabVIEW里,不管你的上位机发送的具体内容是什么,其给串口的指令对于LabVIEW来说都应是字符。
比如你要发的是字符“a”,那么发送的就是“a”;如果你要发送数字“15”,则LabVIEW实际能发送的是ASCII码为15的那个字符。
所以如果要发字符或者文本,直接发就是了,如果要发数字,则先将其转换为字符,我记得LabVIEW里有这样的vi,可以将15转换为其对应字符而不是转成文本的“15”。
当然如果你要发的是字符串“15”,那就按照字符的做法直接发就是了。
接收也是一样的,你收到的永远是字符或文本,这个不用担心。
其次,关于进制的问题。
这个只是指令设计者自己为了指令形式易懂易操作而弄的,对于程序,它不知道这是多少进制,它只需要发送的字符是正确的就可以。
比如你发55H,一定要事先将其变为十进制的85,这样发送的字符才是正确的。
至于它是什么01010101 的形式还是其他什么形式程序是不管的,它只要85对应的字符。
最后,如果你是为了输入指令方便想要弄成16进制输入或者显示,将基数改为16进制即可。
总结下就是:不管发什么,最终都应发送字符或文本,不要管指令的具体形式是什么,只要知道你发送的数据10进制是多少就OK了。
提问者回复:
ok~万分感谢
追问:
不好意思打扰了
0x55 0xAA 这类数字我懂了
但是如果我想输入文本呢?我做了一个读取文本文档的东西里面读出的都是ASCII码的形式吧?
如果我想发这类的也可以直接从ASCII码转为十六进制数么??
实在是不好意思~我们老师也不太懂救命稻草呀~
回答:
你指的文本是什么意思,是你要发送给下位机的字符串还是ascii组成的16进制数构成的一串“字符串”
评价回答:
ok~万分感谢
其他回答:
发送的就是ascii中55H对应的字符,创建数组,基数改为16进制,第一个元素输入55,然后接u8数组
转字符串,然后写入visa即可。