利用SPCOMM串口接收数据后,触发事件,发现每次在发送数据过后,串口接收数据时间过长,单步跟踪发现在如下代码中的PWM_SENDDATAEMPTY: _SendDataEmpty; 多次运行后再跳转至ReceiveData( PChar(msg.LParam), msg.WParam );,这是为什么呢,可以设置什么参数跳过这个有什么解决办法,直接一收到数据就进入ReceiveData( PChar(msg.LParam), msg.WParam );,从而触发数据接收事件,谢谢,急救~~~~~procedure TComm.CommWndProc( var msg: TMessage );
begin
case msg.msg of
PWM_GOTCOMMDATA:
begin
ReceiveData( PChar(msg.LParam), msg.WParam );
LocalFree( msg.LParam )
end;
PWM_RECEIVEERROR: ReceiveError( msg.LParam );
PWM_MODEMSTATECHANGE:ModemStateChange( msg.LParam );
PWM_REQUESTHANGUP: RequestHangup;
PWM_SENDDATAEMPTY: _SendDataEmpty;
end;
end;
begin
case msg.msg of
PWM_GOTCOMMDATA:
begin
ReceiveData( PChar(msg.LParam), msg.WParam );
LocalFree( msg.LParam )
end;
PWM_RECEIVEERROR: ReceiveError( msg.LParam );
PWM_MODEMSTATECHANGE:ModemStateChange( msg.LParam );
PWM_REQUESTHANGUP: RequestHangup;
PWM_SENDDATAEMPTY: _SendDataEmpty;
end;
end;
谢谢,我刚接触这个,不太明白要怎么操作,我现在是发送一个数据,从串口收到返回应答数据后,再发送下一个,都是在onReceiveData中编码的,但是现在发现接收数据时间很长,请问,照您这么说的要怎么编写程序呢,谢谢~~~
// Default size of the Input Buffer used by this code.
INPUTBUFFERSIZE = 2048;