在串口通信中,我发出采集命令后,用一个waiting 函数来等待结果
waiting 是通过采集过程中传莱的不同消息进行处理 如果拖动窗体,采集过程则停止
其实要是将采集过程放到线程中,肯定能解决,但现在这样改动太大。
我觉得在这个 waiting 函数中消息 处理不完整。
function tfrm_cjmk.waiting:integer;
VAR
message1:tmsg;
begin
result:=0;
while (GetMessage(message1, 0, 0, 0)) do
begin
if message1.message=WM_TIMEOUT then
begin
result:=1;
break;
end;
if message1.message=WM_NORMAL then
begin
result:=2;
break;
end;
if message1.message=WM_ERROR then
begin
result:=3;
break;
end;
if message1.message=WM_END then
begin
result:=4;
break;
end;
TranslateMessage(message1);
DispatchMessage(message1);
end;
end;
在这里是不是要定义默认处理? 以上几个消息都是自定义消息。程序中根据waiting
返回值做不同处理
在线等待。
waiting 是通过采集过程中传莱的不同消息进行处理 如果拖动窗体,采集过程则停止
其实要是将采集过程放到线程中,肯定能解决,但现在这样改动太大。
我觉得在这个 waiting 函数中消息 处理不完整。
function tfrm_cjmk.waiting:integer;
VAR
message1:tmsg;
begin
result:=0;
while (GetMessage(message1, 0, 0, 0)) do
begin
if message1.message=WM_TIMEOUT then
begin
result:=1;
break;
end;
if message1.message=WM_NORMAL then
begin
result:=2;
break;
end;
if message1.message=WM_ERROR then
begin
result:=3;
break;
end;
if message1.message=WM_END then
begin
result:=4;
break;
end;
TranslateMessage(message1);
DispatchMessage(message1);
end;
end;
在这里是不是要定义默认处理? 以上几个消息都是自定义消息。程序中根据waiting
返回值做不同处理
在线等待。
楼上说的是用线程类吧?我是自己写的串口类,我将所有通讯代码移到线程类中,但是在
调用串口类的发数据m_port[Current].OutPut()时有问题,不知到跟我的串口类的线程有没有什么冲突,串口类在启动后既创建监视线程,监听端口的数据,m_Port[Current].StartMonitor().