串口通信的问题。(100分)

  • 主题发起人 主题发起人 gelu
  • 开始时间 开始时间
G

gelu

Unregistered / Unconfirmed
GUEST, unregistred user!
欲写一屏幕保护程序,不断监听串口,探测是否有信息传递给计算机。如果没有,到一定时间(比如3分钟)进入屏幕保护程序,
如有信息传来,自然退出,如在屏保运行期间移动鼠标或键盘,要求输入用户名与密码。
(我的水平很菜,请解答详细点)
 
使用spcomm控件
 
你是否需要拦截该串行口的数据?
 
你是要整段的程序吗?
 
尽量详细点吧。
 
如果用spcomm的话,串口不用监听的,
如果有数据他会触发一个事件给你。
 
关于串口监听的部分,我以前写过,最近没什么时间,如果需要我可以在这周周末
找找看,或者再写一个。
如有需要请注明。
 
麻烦了。
 
这是我程序中关于串口监听线程的部分。
const
Wm_commnotify=Wm_User+1;
type
……
TComm=Class(TThread) //声明一个背景线程----串口监听
protected
procedure Execute;override;
end;

var
Form1: TForm1;
hCommFile,Post_Event: Thandle;
lpol: Poverlapped;
TimeOut:TCommTimeOuts;

implementation
……

Procedure TComm.Execute;
var
dwEvtMask: Dword;
Wait: Boolean;
Begin
fillchar(lpol,sizeof(toverlapped),0);
While True do
Begin
dwEvtMask:=0;
Wait:=WaitCommEvent(hCommFile,dwEvtMask,lpol);
if Wait Then
begin
waitforsingleobject(post_event,infinite);
resetevent(post_event);
PostMessage(Form1.Handle,WM_COMMNOTIFY,0,0);//向form1发送消息。你可以再写个消息响应事件。
end;
end;
End;

基本上就这部分了。以前在98/2000下,调试通过;现在没有再调试了。
 
接受答案了.
 
后退
顶部