因要从PC机通过串口更新仪器Fireware/
更新方式是 PC每发一个字节给仪器,仪器马上发该字节回来以确认是否正确?
如此通信方式存在收发效率很低的问题? 大家帮忙算一下该种通信方式的最高收发速率是多少?? (串口速率为115200) 用VB控件写的程序更新速度只有400字节/s的速度,发1M大小的文件将近1个时,急死了,
改用Dephi 6用API函数方式来实现,速度也只有800/s 的速度?
但是仪器与仪器之间的更新1M大小的Fireware只有1分钟,为何相差这么远(仪器之间的串口速率为460.8K) ? Delphi用线程方式时,资源占用极高,高达98%,
请问如何降低资源占用过高的问题?
该部分代码为procedure TReadThread.Execute;
var
dwEvtMask:Dword;
Wait:Boolean;
buf:array[1..1] of byte;
lrc:LongWord;
begin
{ Place thread code here } // fillchar(lpol,sizeof(Toverlapped),0); While True do
Begin
begin
dwEvtMask:=0;
Wait:=WaitCommEvent(hcomm,dwevtmask,lpol);
//等待串行口事件;
if Wait Then
Begin
waitforsingleobject(post_event,infinite);
resetevent(post_event); //同步事件复位;
ReadPort; //读到串口数据
end;
end; end;end;
急..............
谢谢
更新Fireware建议采用块传送方式,这样要快一些。