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