除了工作之外,大學的某個實驗課也寫過簡單的rs232通訊程式,後來因為USB與LAN等等介面的發展成熟,已經越來越少電子產品有console port了,甚至有些新的主機板上面已經沒有這個介面了...Orz。
但是在產品測試的階段,卻常常還是需要用到這個介面,我想大概是因為console介面的特性:簡單,設定少,問題比較單純(至少是不用裝driver或設定ip)。
最近在進行的一個案子,就是需要經由console來進行測試,在之前我比較少使用這種方式,所以感覺寫起來並不是那麼的friendly....
今天與同事討論了一下,發現我的Com port接收的動作不太理想,參考同事的code修改了一下:
原本的function:
bool COM_Recv(int com, char *resp, int timeout)
{
int i, len=0;
char buf[MAX_STRLEN]="";
for(i=0; i
break;
Sleep(100);
}
if(len>0)
{
memset(resp, 0, sizeof(resp));
sio_read(com, buf, sizeof(buf));
sprintf(resp, "%s", buf);
return true;
}
else
return false;
}
修改成:
bool COM_Recv(int com, char *resp, int timeout)
{
int i, len = 0;
char buf[500];
memset(buf, 0, sizeof(buf));
resp[0]=0;
for(i=0; i
{
sio_read(com, buf, sizeof(buf));
strcat(resp, buf);
if (strstr(resp,"->") != NULL)
return true;
}
Sleep(100);
}
return false;
}
2008年9月10日 星期三
Com Receive Function
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言