请问如何在LV 中发送9位数据的串口通信,其实就是其中一位做地址位?
请问如何在LV 中发送9位数据的串口通信,其实就是其中一位做地址位? 它自己规定的是5~8位,而且写数据的函数中是以字节为单位的? 用VISA好像没有见着可以选9位的!不知道用MSCOMM可不可以!没有看过这个选项!这个9位的好像是单片机里面的多机通信的!如果不是多机的话,可以加个简单的协议,在内容上面加点识别的就可以做到的!好运! 每次PC作为主管,发送一个东西出去,下面的许多单片机去接收这个数据并分析。PC机:
mark方式:第9位恒定为1;
space第9位恒定为0,
那么我们可以通过改变这个设置,实现通讯。
发送地址时候,将其设置为1方式;
发送数据时,采用0方式。
下位机单片机程序好做。 为了研究这个多机通讯问题,从百度一路找来这里,发现这里还真不错,
网上其他地方和wdyjz说的都差不多,但是实现起来好像有困难
比如每次发往单片机端的数据是连续的,
共三侦
第一侦地址码的第九位要求是1
第二三侦数据的第九位要求是0
中间怎么来改变第九位(奇偶校验位)?
例如:010302
起始位8位数据位可编程的第九位 停止位
(奇偶校验位)
第一侦 0 0000 0001 1 1
第二侦 0 0000 0011 0 1
第三侦 0 0000 0010 0 1
如何来发送这样的三个字节的数据 设置奇偶检验模式即可~~~~见附图:
注意1ms延时以保证数据完整的发送出去~~~~(9600波特率下,发送10位数据要1.042ms,不知道延时1ms是不是足够了,你可以用示波器观察下这个vi所产生的波形,我记得以前我做的时候,好像没有问题的~~~)
或者可以用MSComm控件的CallBack,监听comEvSend事件的触发~~~
另外,Output接收的需要是一个字符串或者是一个U8的数组,光一个U8的数据会报错 ~~~ 注意1ms延时以保证数据完整的发送出去~~~~(9600波特率下,发送10位数据要1.042ms,不知道延时1ms是不是足够了,你可以用示波器观察下这个vi所产生的波形,我记得以前我做的时候,好像没有问题的~~~)
或者可以用MSComm控件的CallBack,监听comEvSend事件的触发~~~
----------------
非常感谢,不知道57600的波特率下能不能完整发送,今天回家就试一下,有什么问题,再向您请教。
页:
[1]