目前写一个串口通讯程序,采样周期20ms,用控件时,一旦界面刷新,就会丢数据包。估计是刷新产生的中断比串口的中断级别高。于是,就想开一个线程,但不知道是把串口的接收放到辅助线程,还是把界面放到辅助线程。如果把串口接收放到辅助线程,哪么,串口中断产生的事件,会从主线程传到辅助线程吗?现在一筹莫展,请高手指教。最好给个例程。邮箱:[email protected]。谢谢。
解决方案 »
- delphi7与delphi2010中char()函数问题
- 卡巴斯基泄露的v8代码1G多啊
- 关于Pos机打印出乱码的问题
- 那个兄弟能提供一些有关TSprig的信息还有Object TreeView窗口的信息?
- 突发其想,闲者来聚
- 显示速度问题
- "invalid variant type conversion"小弟初学,请前辈帮忙。
- delphi 6 与 oracle9i(本地连接,非ODBC连接)的问题
- 抢分了!不是高手请勿进来、
- ListView如何设置选中某行
- Delphi 7 调用 Java 创建的复杂Web Services 中 XSD文件怎么处理?
- [研究]delphi数据库连接与内存分配的效率问题(大家提点建议)
const MaxLen=255;
type
TReceviceEvent=procedure (Sender:Tobject) of object;
TBuffer=array [0..MaxLen) of byte;
TMyComPort=class(TCOMM)//inherited from SPCOMM
private
FReceviceEvent:TReceviceEvent;
procedure DoRecevice(sender:tobject);//这个方法就是接收后响应事件
procedure ReceviceData(sender:tobject;buffer:pointer;bufflen:word);//这个方法对应串口接收数据事件
public
FBuffData:TBuffer;
FReceviceLen:Integer;
property OnReceviceEvent:TReceviceEvent read FReceviceEvent write FReceviceEvent;
end;//..............实现procedure TMyComPort.ReceviceData(sender:tobject;buffer:pointer;bufflen:word);
begin
fillchar(fbuffdata,sizeof(tbuffer),0);
move(byte(buffer^),fbuffdata,bufflen);
frecevicelen:=bufflen;
if assigned(FReceviceEvent) then FreceviceEvent(self);
end;