当前位置:主页>仓库管理软件> 列表

SPComm 发送数据的奇怪问题(今天在线等) 找畅销进销存软件

库存管理软件版1楼: 我用SPComm 发送一串指令时出现一个奇怪问题,指令串如下:
7E 0B 01 01 75 (16进制)
每次发送后,用监测工具发现发送出去的指令都变了, 无故增加了一些其他的指令,
例如:可能会成了 7E 0B B0 01 D2 01 75, 或者其他, 反正本来只发送5个字节,结果却变成了7个, 8个, 甚至 10多个字节, 经测试, 跟踪, 发现问题可能出现在发送的指令串中的 0B 上, 把 0B 换成其他都没问题, 把 0B 换到其他位置,如:0B 7E 01 01 75, 问题依旧。 请高手指教。

2楼: 有可能会出现这种问题,可能是spcomm的bug,一些特殊字符不能直接传输,可以检查一下是否spcomm属性设置问题 如企业财务软件有哪些

3楼: Xon/Xoff属性设为false试试

4楼: 应该是控件属性设置的问题

5楼: 我試試先, 謝謝樓上各位高手的回答

6楼: 把控件为true的属性 都改为 false试试

库存管理软件版7楼: 還是不行, 請各位說的具體些

謝謝!!!

8楼: XOFF/XON是字符流控制协议。这两个字符有特殊含义,所以传送数据时
如果传送到这两字符会丢失,一般XOFF为$13,XON为$11。
在WindowsAPI函数可以改变其代表字符
你用SPCOMM本身已经设定也许已设定值为此
所以我建议关闭XOFF/XON以及其相关属性
至于还出现此问题,可能是SPCOMM的bug了,特别是在发送16进制的时候

9楼: 謝謝 uiit

照你說的做了, 問題依舊.

我發現SPComm裡面發送完 0B 後, 我只需要接著發送 01, 但是在跟蹤完 WriteFile後, 一次就發送了多個字節, 如: B0 01 D2 等 , 或者更多, 實在是不明白其中原因.

謝謝樓上各位的幫忙, 討論繼續.

10楼: 会不会是监测工具有问题?
还是用交叉线COM1对COM2监测保险一些
收发的数据位停止位校验位都要设置一致

11楼: TO: maxim88
我正是用Com1 與 Com2 連接測試

12楼: 把代码贴出来看看吧 如家庭记账本软件

13楼: 你别告诉我你两边比特率设置不一样

库存管理软件版14楼: TO樓上:
如果是這種低級錯誤我就不會上來發帖了

15楼: Inx_XonXoffFlow和Outx_XonXoffFlow都设为False看看。我这边试没问题

16楼: 使用2.5版本比较稳定

17楼: readIntervalTimeOut:= 100;XoffLimit:=500;XonLimit:=500;

18楼: MyComm: TComm; // MyComm SPComm baudrate:9600



var bgCommand_Send: array of byte;

setlength(bgCommand_Send, 5);

bgCommand_Send[0]:=$7E;
bgCommand_Send[1]:=$0B;
bgCommand_Send[2]:=$01;
bgCommand_Send[3]:=$01;
bgCommand_Send[4]:=$75;

try
for i := 0 to high(bgCommand_Send) do
begin
MyComm.WriteCommData(@bgCommand_Send[i], sizeof(bgCommand_Send[i]));
end;
except
end;

19楼: 是不是用数组的原因,直接用字串试试
s:='''';
s:=char($7e)+char($0b)+char($01)+char($01)+char($75);
Comm1.WriteCommData(PAnsiChar(s),Length(s));

20楼: MyComm.WriteCommData(@bgCommand_Send, 5);
不要循环

库存管理软件版21楼: TO 樓上:
試過了, 問題依舊, 懷疑是監測器的問題, 自己寫的接收程序接收的結果沒問題
算了, 散分

22楼: 散分 如畅销进销存软件