| 发表于:2007-08-07 16:45:28 楼主 |
下面是程序代码段,原意为:当调用senddata函数时,当g_sendflg == on,等待timer执行,然后g_sendflg ==off,g_blsend=true。但现在sleep后,不执行timer. senddata(short size, char *data) { if(g_wdstate == aidle ¦ ¦ size > buffermax){ return idc_failed; } if(g_wdstate == cmdwaite){//指示待ち状態だけ送信 //送信内容記憶 memset(g_buff, 0, sizeof(g_buff)); memcpy(g_buff, data, size); g_wdcnt = size; g_sendflg = on; // while(g_sendflg == on){//結果を待つ sleep(100); // } if(g_blsend){//送信完了 return idc_succeeded; }else{ return idc_failed; } } //他の状態 return idc_receving; } void callback timerproc(uint nidevent) { unsigned long length = 0; bool blrlt = false; msg msg; try{ ::getmessage(&msg, null, 0, 0); ::dispatchmessage(&msg); //受信 g_sts = 0; blrlt = readfile(g_hcom,&g_sts,sizeof(g_sts),&length,null); //カウントインクリメント g_intcnter ++; //送信フラグon if(g_sendflg == on){ g_sts = 0; g_szcmd = g_buff[stx]; //送信 g_blsend = writefile(g_hcom,g_buff,g_wdcnt,&length,null); if(g_blsend){//送信成功 g_wdstate = recving; g_intcnter = 0; } g_sendflg = off; |
|
|
|
|