串口高手请进! (10分)

  • 主题发起人 主题发起人 cjf1009
  • 开始时间 开始时间
C

cjf1009

Unregistered / Unconfirmed
GUEST, unregistred user!
我的项目描述:一秒钟内端口可以接收到约10个相同的加密信号(字符串),我对每个信号接密后在操作。昨天实验,在一个笔记本上(性能不高),接受装置拔掉之后程序还在操作,而且时间挺长,什么问题?是不是“缓存”的问题?怎么解决?接到一个有效字符串就释放“缓存”?同时有别的信号近来怎么办?
给个意见啊,各位大侠们,最好来点程序!
 
用什么控件?
 
控件用的tvacomm
 
你用的什么方式接收数据啊?代码贴出来看看
 
procedure Tfrmfindcar.VaComm1RxChar(Sender: TObject; Count: Integer);
var
I: Integer;
Tmp : String;
begin
Tmp := VaComm1.ReadText;
for I := 1 to Length(Tmp) do
case Tmp of
#10:;
#13:
begin
edit1.Text := CARdInfo;//接到的字符串
Decoder(edit1.text);//进行以后的 操作的函数
CARDInfo := '';
end;
else
CARDinfo := CARDInfo + Tmp;
end;
end;
 
缓存应该可以设的吧,试试,没用过vacomm
 
给个思路啊,各位大侠门!
 
收到字符后先放到一个队列中!
然后处理。
如下:
var
ReceiveStr:TStrings;
procedure ( );
begin
ReceiveStr:=Tstringlist.create;
ReceiveStr.add(CARdInfo);//收到的字符
ReceiveStr.Strings[0];//对第一条处理
ReceiveStr.delete;//第一条处理完后删除
。。。。。。。。。
。。。。。。。。。
ReceiveStr.Free;
end;





 
在这个问题之前又产生了个新问题,考考大家的眼睛了;(
http://delphibbs.com/delphibbs/dispq.asp?lid=2437454
 
问题出在:一定要使用Count来判断是否有新的字符。不要用length(tmp);
按下面修改:
procedure Tfrmfindcar.VaComm1RxChar(Sender: TObject; Count: Integer);
var
I: Integer;
Tmp : String;
begin
Tmp := VaComm1.ReadText;
if Count>0 then
begin
for I := 1 to Count do
case Tmp of
......
end;
end;
end;
You friend Xycall;
you can send email:zzhs@163.com, if you want to discuss with me!
 
后退
顶部