spcomm数据接收的问题(50分)

  • 主题发起人 主题发起人 jhoper
  • 开始时间 开始时间
J

jhoper

Unregistered / Unconfirmed
GUEST, unregistred user!
我从串口中读数据,每条记录的格式是:年、月、日、时、分、秒、事件代号。可我用spcomm读出来的数据每条记录都缺最后一个字节(事件代号),但用commix却都能读出来,各位朋友说说这可能是什么导致的呢?谢谢,分不多了,不好意思,
 
http://www.delphifans.com/SoftView/SoftView_789.html
是個實例,你下載看代碼就可以了。
 
谢谢bbscom,这我运行了,得出的结果 跟我的程序 读出的一样,每条记录最后一位读不出来
 
有朋友知道怎么回是马?
 
把你的读取代码贴出来看看
 
很简单的,没啥花头 ,是不是属性设置方面要注意什么?
procedure TfrmMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
viewstring : string;
i:integer;
rbuf:array[0..1024] of byte;
begin
viewstring:='';

Move(Buffer^,pchar(@rbuf)^,BufferLength);

for i:=0 to BufferLength-1 do
begin
viewstring:=viewstring+inttohex(rbuf,2);
viewstring:=viewstring+' ';
end;
memo1.Lines.Add(viewstring);
memo1.Lines.Add('共计:'+inttostr(BufferLength));
Memo1.Invalidate;


end;
 
另外我这http://www.delphibbs.com/delphibbs/dispq.asp?lid=3262848帖中由于无人应答所以没法散分,但问题,我已经解决了,高手解决了这个问题,在那边留个名,我会把那100分也分给你们,谢谢
 
比如我用commix读出来的是:
24 10 28 02 52 33 11
24 10 28 02 52 27 11
24 10 27 09 19 14 11
24 10 27 09 06 27 11
24 10 27 08 59 33 11
24 10 27 08 58 08 11
而用上面的spcomm写的却是如此结果
24 10 28 02 52 33
24 10 28 02 52 27
24 10 27 09 19 14
24 10 27 09 06 27
24 10 27 08 59 33
24 10 27 08 58 08
 
memo1.Lines.Add('共计:'+inttostr(BufferLength));
这个输出的数据长度对不对呢
 
memo1.Lines.Add('共计:'+inttostr(BufferLength));
这个输出的数据长度对不对呢

这个长度就是丢失11后的长度
 
那你用串口工具給你的接收程序發數據,看看是不是最候一位的問題,至少查明問題是不是出在move函數上的?
 
没用过SPCOM,我都用的是ComPORT,
在 ComPORT中有个属性 EventChar(是设置字符,来触发接收事件)
不知道SPCOM有没这个属性,如果有,你可以改改这个看
 
多人接受答案了。
 
后退
顶部