labview中 我现在在做一个上位机对串口发送 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位。

LabVIEW串口发送数据_KC10121806_c01(精)

LabVIEW串口发送数据_KC10121806_c01(精)
基于LabVIEW的 物联网应用程序设计
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如何进行串口通信——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中使用串口

第一部分使用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如何进行串口通信——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中使用串口

第一部分使用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或者缓冲区中的数据字节数达到要求的字节数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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即可。

相关文档
最新文档