(在线等)在串口编程中有什么用,这几行不懂就解释,谢谢 ( 积分: 100 )

  • 主题发起人 主题发起人 liufengliang
  • 开始时间 开始时间
L

liufengliang

Unregistered / Unconfirmed
GUEST, unregistred user!
var
wTime :TDateTime;
TestTime : Dword ;
Sm: Msg;
begin
TestTime := GetTickCount ;
//用于获取自windows启动以来经历的时间长度
wTime := GetTickCount + WaitTime;
while wTime>GetTickCount do
begin
//Peekmessage()如果消息隊列中沒有消息,PeekMessage立刻返回0
while(Peekmessage(sm,0,0,0,PM_REMOVE)) do
begin
Translatemessage(sm); //将虚拟键消息转换为字符消息
DispatchMessage(sm); //将消息发送给窗口过程(传递消息)
end;
end;
end;
在串口编程中有什么用,如何调试,这几行?
 
看不出跟串口通讯有什么关系,不过可以知道其含义是处理WaitTime时间的消息,这段时间内除了处理UI界面,其他都不干
 
谢谢,不过是这样的,
这只是一个函数,我在调试一个串口程序时,调入了这个函数。
在这里循环,像在等代什么?循环到某一刻就跳入到Mscomm中OnComm事件
本想在这看看发生了什么,却不知道如何看,这里发生了什么?
处理完OnComm事件又来循环,然后退出这个函数?

请问这里发生了什么?如何调试?
 
估计是延时吧(等串口数据或者延迟再发送数据),可能是没使用多线程,所以不用Sleep,不然会导致界面卡死
 
谢谢,我知道了一点不知道对不对,
Peekmessage(sm,0,0,0,PM_REMOVE)取出接收到的消息,并从消息队列中把消息移除,再循环体内处理消息。
Translatemessage(sm); 处理消息
循环一直等到超时为止。

用了线程的
 
这个函数是在主线程中还是在子线程中?
函数的作用就是阻塞WaitTime的时间,而且保证这段时间界面不会卡死(如果是在主线程)
 
1.创建mscomm,设置通讯参数,创建Oncomm事件
2.打开串口,发送AT命令
3.进入上面的函数(100)循环什么也没有做,退出(因为 wTime>GetTickCount 不成立
sm(0,0,0,0,0,(0,0)) )
4.发送AT命令
5.进入上面的函数(500)循环,进入了Oncomm事件,
调试时看见 sm(hwnd,message,wParam,IParam,time,pt)是什么意思???
在hwnd有值并执行DispatchMessage(sm)时进入Oncomm事件,为什么??

谢谢,您了,不好意思再问你了!
 
直接贴源代码吧~~~~
sm(hwnd,message,wParam,IParam,time,pt)是什么?
 
后退
顶部