[問題] MFC上RS232的傳輸問題
大家好,小弟我用MFC寫了一段讀和寫RS232的程式,RS232的baud rate是9600
程式大致如下敘述
a. 第一段程式是用一個無限迴圈去看RS232有沒有資料傳過來,大概長這樣
num = 256;
while(true)
{
// tick1
ReadFile(this->m_hCom, ReadBuf, num, &Read, NULL);
// tick2
}
這段程式的執行結果大概會是這樣,從tick1執行到tick2需要2700個tick,讀回來
的ReadBuf裡面什麼也沒有,RS232這時也確實沒有傳資料過來,如果num改成128
tick1到tick2就減少成1435個tick,請問有辦法在無法知道ReadBuf會抓到什麼樣
的資料的情況下,讓ReadFile很快就結束嗎? 還是說只要讀的資料量越大,就一定
得花更多時間?
b. 第二段程式是用兩個同步執行的thread,去對同一個RS232做WriteFile,兩個thread
都會呼叫底下的這個fumction
BOOL RS232_RES(unsigned char* response)
{
CString resStr;
resStr = CString(response);
num = resStr.GetLength();
while(lockflag.IsLocked())
{
Sleep(1);
}
lockflag.Lock();
// tick1
WriteFile(this->m_hCom, response, num, &num, NULL);
// tick2
lockflag.Unlock();
}
在這邊的話,如果response的長度是12,則兩個thread都可以馬上從tick1執行到tick2
但如果兩個thread的response的長度都超過35個byte,則會很明顯的從tick1到tick2
會需要2秒左右的時間,請問如果response的長度必定會影響到WriteFile執行完畢的
時間嗎?? 有沒有方法可以縮短呢?? 謝謝大家!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.247.92
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440245949.A.E8B.html
推
08/29 00:17, , 1F
08/29 00:17, 1F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章