從串口讀取數(shù)據(jù),有兩種方法,1、每接收一個EV_RXCHAR,就用ReadFile讀一次,這樣我覺得太恐怖了。2、接收到一個EV_RXCHAR后,等一定數(shù)據(jù)量的CPU周期(GetTickCount),再一次性讀取緩沖區(qū)里的數(shù)據(jù)。這樣做,一般情況下不會有問題,但是,如果數(shù)據(jù)很多,過了“一定數(shù)據(jù)量的CPU周期”,還沒收完數(shù)據(jù)怎么辦?就會少讀數(shù)據(jù)了。 我用三個線程序來完成串口數(shù)據(jù)的接收,其實就是第一種方法的變種: 一個偵聽EV_RXCHAR,一個對EV_RXCHAR進行分析,其實就是超時判斷。如果接收到一個消息后,一段時間沒收到下一個EV_RXCHAR,就認為是一個數(shù)據(jù)包的結(jié)束。這個線程就會通知數(shù)據(jù)接收線程,進行數(shù)據(jù)接收。一般同一包數(shù)據(jù),兩個字符之間的時間間隔,應該很小了吧,而兩個數(shù)據(jù)包之間的間隔,應該不會太小吧!(這個地方我不清楚,猜的:( :) )最后一個線程,是接收數(shù)據(jù)的。
標簽:
串口
讀取
數(shù)據(jù)
上傳時間:
2014-01-24
上傳用戶:cylnpy