labview串口通讯的深入分析.
我们分别命名为:bit 0--->Relay 0,1--->
值 | 描述 |
380 | 无效属性值 comInvalidPropertyValue |
383 | 属性为只读 comSetNotSupported |
394 | 属性为只读 comGetNotSupported |
8000 | 端口打开时操作不合法 comPortOpen |
8001 | 超时值必须大于 0 |
8002 | 无效端口号 comPortInvalid |
8003 | 属性只在运行时有效 |
8004 | 属性在运行时为只读 |
8005 | 端口已经打开 comPortAlreadyOpen |
8006 | 设备标识符无效或不支持该标识符 |
8007 | 不支持设备的波特率 |
8008 | 指定的字节大小无效 |
8009 | 缺省参数错误 |
8010 | 硬件不可用(被其它设备锁定) |
8011 | 函数不能分配队列 |
8012 | 设备没有打开 comNoOpen |
8013 | 设备已经打开 |
8014 | 不能使用 comm 通知 |
8015 | 不能设置 comm 状态 comSetCommStateFailed |
8016 | 不能设置 comm 事件屏蔽 |
8018 | 仅当端口打开时操作才有效 comPortNotOpen |
8019 | 设备忙 |
8020 | 读 comm 设备错误 comReadError |
8021 | 为该端口检索设备控制块时的内部错误 comDCBError |
以上这部分转载于网上.
labview可以直接调用ACTIVEX控件,所以可以直接使用,新版本的LV可以注册回调函数(REG CALLBACK),所以这个控件的所有功能都是可用的,下面示意一下调用的方法.
重点介绍一下VISA串口通讯的方法:
基本流程是:打开(配置)--->循环(读写)--->关闭(释放)
一共有八个VI节点
1.VISA Configure Serial Port :
设定波特率,数据位,停止位,奇偶校验位,流控制,超时处理,结束符使能,结束符.
特别需要注意的是超时(TIMEOUT) 和结束符号两个参数.TIMEOUT默认的10秒,结束符号默认是使能状态,默认的结束符是0X0A(\n),另外,回车0x0D (\r)也经常做为做为结束符号.
如果采用的是二进制通讯,可能会遇到结束符的问题.因为二进制中0A是10,0D是13,这两个是作为数字出现的,如果不禁止结束符号,会导致读提前结束,产生错误的结果,这再和设备通讯时可能会碰到.
至于波特率,数据位等,对照要通讯的设备的要求设定就可以了.
2.Visa Write: 这个节点负责把缓冲区的数据发送出去,并返回实际发送的数据.
MSCOMM串口通讯时是可以选择文本和二进制方式的,VISA有选择项吗?没有,完全取决于你的字符串,这是一个需要注意的问题.
正常显示方式时,字符串是"1234"在内存中存储的是ASCII,看下图.
"1"=31,"2"=32 "3"=33,"4"=34.
发送的字符串"1234"实际发送的是16进制的31,32,33,34.用过单片机的都知道,实际所有的串口通讯从本质上说,都是二进制的,只不过接收方面如何判定数据的问题.
比如发送的是33(HEX),接收方面可以解释成数字1,(字符串型),或者是数字33.
用过C的人知道,字符串实际和U8数组是等价的.
所以VISA是不管是否是字符串还是数值,都是采用二进制发送的,关键是我们在于我们的字符串是如何构成的.
Visa Read等其它的几个都比较简单,就不介绍了.
labview串口通 相关文章:
- LabVIEW在串口通信中的应用(03-23)
- labview实现串口通信(二)(01-09)
- labview实现串口通信(一)(01-09)
- LabVIEW串口通信详解(01-09)
- LabVIEW串口通讯问题解决方案(01-06)
- labview实现串口通信(三)(01-06)