我在用MSCOMM控件作串口编程时遇到一些麻烦.
MSCOMM oncomm是事件驱动的.但与我想象中的等同于"中断"方式似乎有差别.比如我想
Main_Send(){
//setoutput(...) /*send to serial output*/ //我想在这儿等待检查由oncomm被触发后置的标志位然后对响应包作某些处理.
while(TRUE){
if (flag == 1)
//do something needed
}//但是这样好象程序就陷在这里,onComm得不到触发了.
}onComm(){
flag = 1;
}
请问是否只能退出发送的主例程部分,然后onComm才能得到触发,必须在onComm中去处理才符合它的_这样一个_编程框架?甚至我发现我在两个分离的例程之间插入一个AfxMessageBox()对onComm事件的触发与否都具有举足轻重的作用:
定义:
main_send(){
send_to_port();
}
onComm(){
flag = 1;
}
recv_process(){
if(flag==1)
//do something;
}
使用:
main_send();
[AfxMessageBox("something");] //若选用,则onComm()被触发,
recv_process(); //否则,flag未被置,好象onComm()未被触发.
是否这里的AfxMessageBox()对事件派发有什么影响而致?
请不吝赐教.
MSCOMM oncomm是事件驱动的.但与我想象中的等同于"中断"方式似乎有差别.比如我想
Main_Send(){
//setoutput(...) /*send to serial output*/ //我想在这儿等待检查由oncomm被触发后置的标志位然后对响应包作某些处理.
while(TRUE){
if (flag == 1)
//do something needed
}//但是这样好象程序就陷在这里,onComm得不到触发了.
}onComm(){
flag = 1;
}
请问是否只能退出发送的主例程部分,然后onComm才能得到触发,必须在onComm中去处理才符合它的_这样一个_编程框架?甚至我发现我在两个分离的例程之间插入一个AfxMessageBox()对onComm事件的触发与否都具有举足轻重的作用:
定义:
main_send(){
send_to_port();
}
onComm(){
flag = 1;
}
recv_process(){
if(flag==1)
//do something;
}
使用:
main_send();
[AfxMessageBox("something");] //若选用,则onComm()被触发,
recv_process(); //否则,flag未被置,好象onComm()未被触发.
是否这里的AfxMessageBox()对事件派发有什么影响而致?
请不吝赐教.
中间要使用
PeekMessage()
GetMessage()
DispatchMessage()