求助:串口通信
<P>我想通过RS-232C接口读取仪器上测量到的数据,对仪器命令不懂,怎么向仪器发送命令然后得到响应的数据??还有数据格式和所要发送的命令的格式怎么确定呀??</P> 不同的仪器有不同的通讯协议的,命令也是不同的,看它的说明书才行,要按说明书上的命令和格式来发! <P>我查了,看了好久,每次试老是得不到数据,帮我想想那里出了问题。我的程序是初始化串口,然后在一个While循环中,用VISA Write.vi向串口写一命令,接着用VISA Bytes at Serial Port读串口中字节数,其值作为VISA Read.vi的byte count,然后在循环框外关闭串口。</P><P>如果是两台主机,一边发,一边收,可以实现,线应该没事。就是读仪器的数据时有问题,也不出错,而且用探针可知VISA Bytes at Serial Port输出为0;仪器也按说明书设置了。</P> 你的机子可以用LV收发信息吗二台机子之间?哪应该不是VISA问题了!下面有没有数据发回来呀!是不是发的命令的格式不对呢! <P>我就是对这个仪器命令不太懂,仪器说明书上附了一点程序,是用True Basic编的。它接收的数据格式有字符和十进制格式两种。我再看看。仪器是一台电力测试仪3169或3166。</P> 应该是命令不对,或者说命令格式不对。你要看一下你的命令结束是以什么结束的(回车 回车/换行等),这应该和你对串口的初始化相一致,这样再试试~~ <P>谢谢各位的帮助!我的问题解决了一部分,问题出在发送命令也要加结束符,也就是上面这位楼主所说的。</P><P>不过,又有个新的问题,我读串口的数据时,Flow control 选了none。在循环框中连续读数据时,一会正确,一会得到说我命令错误的响应信息,这是为什么?我发的命令是同一条。下面是一部分数据,大家帮我看看。</P><P>+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0
+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0
COMMAND ERROR
COMMAND ERROR
COMMAND ERROR
+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0
+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0
COMMAND ERROR
COMMAND ERROR
+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0
+237.42E+0;+00.174E+0;+0.0283E+3;+0.0298E+3;+0.0411E+3;+0.688E+0</P> <P>仪器的通信设置呢?如波特率,校验位之类的,要和pc的设成一样的。或者pc的设成和仪器的一样。</P> 这些参数在程序、MAX和仪器中设置都相同。另外,为什么在连续读数时得到的是同一组数据,如上面这段数据所示,值都没有变化,怎么才能得到连续变化的数据。 <P>我感觉是程序的运行速度过快,仪器提供测量不到足够的数据,怎么可以解决程序和仪器的速度匹配问题呢,我用FLOW CONTROL过,但是没有得到满意的结果。</P><P>解释一下,上面的这段数据中,在说明书中查到COMMAND ERROR 是发送错误命令时才会得到的响应,可是我发的命令就是同一条啊???</P>
页:
[1]