zubby 发表于 2007-10-9 18:14:35

串行通信时,按顺序给com口发两个不同的读取数据命令时,有什么要求?

我的程序,下面的压缩包中,在case中, 必须发送两个命令来完成功能。

其中:第一个命令 #saveCOUnt\r\n? 用来返回数据的个数,第二个命令#SAVEdata?\r\n 用来返回数据。

第一个命令只能返回来,数据有多少个,第二个命令才能返回来数据的具体数值 。

加断点运行,可以执行到,送第二个命令处。

执行过程中,在高亮状态下,第一个命令返回的数据是正确的,而第二个命令返回始终为空(bytes at

port 始终为0字节) 。


(#CANCel?\r\n命令用来结束端口向上传递数据。我加了和不加都是一样的效果)

提问:

我问的是串行通信中,在一个case中, 如果要给com口按照时间的顺序,发送不同的命令。在发送多个命

令的时候,有没有要求? 我发送的第二个命令有没有送到com口,怎么观察?

wdyjz 发表于 2007-10-9 22:41:13

拿串口调试助手先手动发送命令字看看效果如何,如果的确没有反应,可能说明硬件存在问题和不足;
然后再把你的程序的花样去掉,留下最简单的架构顺序发下命令字,看看工作情况,
通过实际的测试比较和验证,得出自己的结论,到底应该如何使用。
实际应用中就是这么多的麻烦事情,需要耐心,不耐心的时候出去散散步缓缓精神再做就好了。

zubby 发表于 2007-10-9 22:49:52

手动发送#saveCOUnt\r\n?,如果硬件处于MEM状态,返回一包数据,#SC 00 06\r\n.(表明有6组数据)
如果硬件不在MEM状态,返回一包数据,#NACK\r\n。

手动发送#SAVEdata?\r\n ,
如果硬件正确,发送一条指令,返回所有的6组数据,每个数据29字节。
如果硬件不在MEM状态,则只返回一包数据,,#NACK\r\n。

通过串口助手调试说明,下面的硬件发送没有问题。

zubby 发表于 2007-10-9 22:50:34

原帖由 wdyjz 于 2007-10-9 22:41 发表 http://www.cpubbs.com/bbs/images/common/back.gif
拿串口调试助手先手动发送命令字看看效果如何,如果的确没有反应,可能说明硬件存在问题和不足;
然后再把你的程序的花样去掉,留下最简单的架构顺序发下命令字,看看工作情况,
通过实际的测试比较和验证,得出自 ...


程序中没有任何花样阿,都是必要的东西。

rongcheng0501@1 发表于 2007-10-10 10:43:40

看的有些晕,
建议你把程序简化一下,
然后把2个读写程序分别作成一个子程序
如果都可以运行
再调用2次
方便,还不容易出错,一目了然
页: [1]
查看完整版本: 串行通信时,按顺序给com口发两个不同的读取数据命令时,有什么要求?