基于DS80C410串口至以太網接口轉換器的實現
串口到以太網的主程序包括串口參數、流控制模式的設定,串口輸入輸出流的初始化,流量計數器的設定和初始化,接收超時、接收門限的設定(接收門限為緩沖容量長度,接收超時設為100ms),連接網絡服務器,創建并啟動串口接收和發送子線程,啟動維持線程。維持線程用于周期(周期為1分鐘)更新和統計接收和發送的數據流量。串口接收以太網數據是通過網絡接口從網絡結點上獲取數據并送至以太網緩沖區,再通過串口將數據流發送到串口設備。串口向以太網發送數據是把有效數據讀到串口接收緩沖區,通過向網絡緩沖區寫數據把串口數據發送到網絡結點(或服務器),并且對這兩個進程進行監視,并確認是否出現異常(網絡連接關斷或流量計數器異常)。
Java編程要點:申明串口到以太網擴展線程類,申明內部串口類及相應的輸入輸出流對象,內部網絡接口類及相應的輸入輸出流對象。輸入流對象就是可以從其獲得連續字節的對象,輸出流對象就是可向其輸入一系列字節的對象。在串口接收子線程中,將網絡數據寫到串口是通過調用串口輸出流的寫方法,將以太網緩沖器中接收到的數據發送到串口,具體為:spout.write(ethbuf,0,count) ,spout為串口輸出流對象,write()為寫方法作用是將數組ethbuf中count個字節寫入串口輸出流中,參數ethbuf為長度為1024的數組,參數0表示從數組的0處開始發送,參數count為以太網緩沖器中接收到的數據長度。類似的,在串口發送子線程中,將串口數據發到網絡服務器是通過網絡輸出流的寫方法,將串口輸入緩沖器中的數據發送到網絡服務器,具體為:sout.write(serbuf,0,count),sout為網絡接口輸出流對象,參數count為串口接收緩沖區中接收到的數據長度,其余同上不再細說。
4 結論
本文作者創新點:采用嵌入式以太網控制器,節省了外圍器件,硬件電路設計相對簡單,系統開發周期較短,開發成本相對較低;數據通信采用面向對象的Java語言,采用多線程技術,提高CPU工作效率;設計網絡化的測量和控制裝置。基于DS80C410串口至以太網接口轉換器可以實現串口設備和以太網服務器的數據流傳輸,通過以太網服務器對串口設備進行監控。串口設備和以太網的連接有助于提高數據傳輸效率,克服串行通訊本身傳輸速度慢,傳輸距離短的限制。目前廣泛用于廠站自動化的大量國內外保護測量設備都只有RS232/422/485通訊接口,串口設備通過外部轉換增加上網能力可能更符合實際要求,這就使得串口到以太網轉換器的實現具有現實性和應用可能性。
評論