carlgu 发表于 2005-4-14 05:52:17

关于串口通讯协议的问题,请大家解答!!!谢谢各位了,比较急,请大家帮忙了!!

<P>我现在利用一个单片机采集模块采集数据,与计算机串口通信,遇到以下几个问题:</P>
<P>1 关于通信协议的问题,我用的单片机支持MODBUS协议,支持PC机以ASCII方式或者RTU方式呼叫,LABVIEW支持这种方式吗?
2 如果在LABVIEW中使用这种通信协议,输入的命令格式是否需要转换,
例如ASCII方式的命令格式为:08040000008,由这些16进制的字符表示,我在VISA WRITE的时候时候需要进行格式转变,变成何种形式?</P>
<P>谢谢各位了,比较急,请大家帮忙了!!</P>

carlgu 发表于 2005-4-17 22:19:59

没人理我吗,斑竹救命啊

cwyxf1015 发表于 2005-4-17 23:06:36

不用转换,直接用16进制的字符串发送就可以了,刚好我前几天也在做,modbus协议的!

cwyxf1015 发表于 2005-4-17 23:09:28

还有,要吧通讯格式弄清楚,modbus里好象不只是用16进制,也有ascii码的,按照要求的格式发送

carlgu 发表于 2005-4-18 02:00:24

<P>继续问斑竹:</P><P>例如主机呼叫“:080400000008&lt;SUM&gt;&lt;CR&gt;&lt;LF&gt;”</P><P>SUM为一个字节的累加和转换成的两位16进制数ASCII(除“:”外,所有二进制字节和的相反数)这个是什么意思,不太明白。</P><P>具体这个命令在串口的WRITE模块里应该怎么表示?斑竹你能给我个参考答案吗,我初次接触这个,很多都不明白,再次谢谢了!</P>

carlgu 发表于 2005-4-18 02:33:36

<P>&lt;CR&gt;&lt;LF&gt;是否用0D0A表示,SUM的结果是14,相反数是什么?</P>

carlgu 发表于 2005-4-18 02:54:46

<P>我算了算,是不是正确的形式是“:0804000000080B0D0A”</P><P>大家帮我看看是不是正确的命令格式。</P><P>OB是校验和取反:08+04+08=14 变为二进制10100取反01011,得到16进制0B</P><P>回车&lt;CR&gt;和换行&lt;LF&gt;为0D0A表示</P>

cwyxf1015 发表于 2005-4-18 03:39:18

<P>回车&lt;CR&gt;和换行&lt;LF&gt;确实是用0D0A表示</P><P>   不过用ASCII码不能显示,但必须要,16进制可以显示的</P>

cwyxf1015 发表于 2005-4-18 03:46:32

对于SUM我也不清楚,看看还有没有其他人会!

carlgu 发表于 2005-4-18 04:42:57

<P>16进制怎么显示回车&lt;CR&gt;和换行&lt;LF&gt;?</P>

rouths 发表于 2005-4-18 06:48:14

<P>&lt;CR&gt;和&lt;LF&gt;在LV的字符串那里可以找到相应的字符</P>
页: [1]
查看完整版本: 关于串口通讯协议的问题,请大家解答!!!谢谢各位了,比较急,请大家帮忙了!!