這段時間用Moxa DA660(WinCE5.0平台)測試16口同時下發資料,發現由于該硬體裝置的CPU主頻僅有260M赫茲,大于10口同時下發資料就會造成發送延遲,導緻下發失敗。前次用.net的SerialPort類實作了一個PPC紅外口讀寫資料的小程式(其實就是序列槽操作),發現該程式在接收大量的資料時,很容易發生崩潰,并且該錯誤資訊,程式本身無法捕捉(用EVC開發的程式就沒有這種情況),是以就有了一探SerialPort類的沖動。
用.Net Reflector工具(該工具在《程式員》雜志4月刊有介紹)很容易就可以看到微軟.net架構集SerialPort的實作源碼,下面從構造函數開始談起(注:精簡架構下的system.dll反射後竟然看不到相關代碼,看來微軟對精簡集進行了加密,隻能看非精簡架構集的system.dll,其實作我想應該差不太多,但是Wince平台僅能實作同步讀寫)。
1、通信參數的預設值
3、核心讀代碼
//如果在逾時時間内沒有擷取指定的資料個數就會抛出異常,這種設計方式我不大習慣,如果逾時直接傳回-1或0即可,沒有必要抛出異常。
}
看該函數的構造函數中的代碼: