SPCOMM串行通信问题 ( 积分: 200 )

  • 主题发起人 主题发起人 long_long
  • 开始时间 开始时间
L

long_long

Unregistered / Unconfirmed
GUEST, unregistred user!
SPCOMM读写不稳定,有时能读写,有时不能;(收不到Comm1ReceiveData事件)
 
SPCOMM读写不稳定,有时能读写,有时不能;(收不到Comm1ReceiveData事件)
 
很多人都用,没有这个问题
 
我做的串口通讯程序都是用SPComm和MSComm,在spcomm没出现过你这种情况,但是在mscomm中有你说的这种情况。我也是百思不得其解
 
我用的没有这问题啊.....
 
串口的程序spcomm的我用的很稳定,从来没出什么问题,到是我的以太网通讯常出问题,有不稳定的情况,有哪位高手知道多线程用在以太网通讯上应该主意哪些方面吗?多谢赐教,呵呵[:D]
 
由于我刚注册,要两天后才能提出问题,由于很着急,所有暂时在这里提个问题,请大家原谅。
在 SPCOM 的 ReceiveData 过程中我这样写的:
var
AkgStr:string;
begin
SetLength(AkgStr, BufferLength);
Move(Buffer^, PChar(AkgStr)^, BufferLength);
end;
可我跟踪下程序,将得到的 AkgStr 的值连续写到了文本文件中,却得到下面乱码,怎么没有0..9的数字啊!
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?巰?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?巰?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?幚?
?庎鋷?巰?
?庎鞄?幚?
?庎鋷?幚?
?幚丘幚?
?巰丘幚?
?幚囸巰?
?庎鞄?幚?
?庎鋷?幚?
?庎鋷?幚?

或者是

???????帏
???????帏
???????帏
??xxxxxf?
??xxxxxf?
??xxxxxf?
??xxxxxf?
??xxxxxf?
??xxxxxf?
???????帏
???????帏
???????帏

我该怎么办,是不是要将得到的 AkgStr 再处理一下,怎样处理?
 
Long_Long:你的问题你应确认一下,有两种可能,一个是信号不好,一个连接线虚接,
你先用两个串口对着调一下,确认是不是spComm的问题,我用了好多年了,也没有见到
程序出现这种问题!我处理的类似问题都是上面两中原因
 
to Yaogt:
我在http://www.delphibbs.com/delphibbs/dispq.asp?lid=719101 上看到好像与SPCOMM一些设置有关,由于我是对串口编程还是新手,请大侠赐教!
 
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
rbuf:array[1..512] of byte;
Str: String;
begin
Move(buffer^,pchar(@rbuf)^,BufferLength);
for i := 1 to BufferLength do
begin
if suiCheckBox1.Checked then
begin
Str := Str + ' ' + InttoHex(rbuf, 2);
end
else
begin
Str := Str + Chr(rbuf);
end;
end;
Memo1.Text := Memo1.Text + Str;
end;

把IgnoreNullChar := False
 
我作的一个程序,如下:
try
move(buffer^,pchar(@NMEA_BUF)^,bufferlength);
for i:=1 to bufferlength do
begin
NMEA_DATA:=NMEA_DATA+chr(NMEA_BUF)+'';
end;
NMEA_DATA:=trim(NMEA_DATA);
if memo1.Lines.Count>=200 then
memo1.Clear;
memo1.lines.add(NMEA_DATA);
另外,不知你的波特率是多少,建议你把SPCOMM的EADINTERVAITIMEOUT属性改小如10;你可以用超级终端来观察比对
 
后退
顶部