天天看點

c# SIM 卡撥号

寫此部落格意為抛磚引玉,希望能和部落格園的朋友們探讨一下關于.NET 在工業方面的應用,包括:物聯網、無線通信、嵌入式開發、工業控制等等。歡迎探讨,多多指教!^_^

下面是我在開發中,使用C#代碼實作對安裝在COM 串行端口上的SIM卡撥号器的撥号排程程式。

應用場景:

在使用新能源的風光互補路燈遠端管理系統中,通信伺服器需要通過無線通信方式喚醒上位機。

> 上位機中内置GPRS 無線上網卡,被安裝在風光互補路燈中。

> 通信伺服器上擴充出4個COM 串行端口,分别安裝有:西門子C35TS 撥号器和西門子MC52I 撥号器。

使用需求:

> 監控中心跟上位機進行通信前,對沒有連接配接上的上位機先使用撥号器喚醒;

> 由于長時間連續使用撥号器進行撥号,将導緻撥号器的當機情況,是以采用輪番調用的線性方式使用4個撥号器;

> 實作自動檢測伺服器上的COM 串行端口,并自動識别可使用的撥号器;

> 增加撥号器後,程式能自動識别并添加使用;

> 拔出撥号器後,程式能自動識别并停止使用;

> 能克服撥号器的當機、假死等異常情況,并在指定的間隔時間重新檢測撥号器,并添加到伺服器中使用;

> 讓撥号器通過SIM卡,實作對上位機的撥号,挂機等功能;

程式實作:

程式中應用到AT 指令集,詳細介紹請看百度百科。這裡附上一些簡單的AT 指令集:

c# SIM 卡撥号
c# SIM 卡撥号

在程式項目中,需要引用如下程式集:

并使用到了.NET 的串行端口資源 SerialPort 類。

MySerialPort 類

對每一個連接配接到COM 串行端口的撥号器執行個體化 MySerialPort 對象,代碼如下:

c# SIM 卡撥号
c# SIM 卡撥号

SerialPortList 類

定義一個 SerialPortList 類,實作對所有連接配接上的撥号器 MySerialPort 對象進行管理和排程使用。代碼如下:

c# SIM 卡撥号
c# SIM 卡撥号

測試代碼如下:

c# SIM 卡撥号
c# SIM 卡撥号

測試結果:

c# SIM 卡撥号

參考資源:

<a href="http://blog.csdn.net/cy757/article/details/4474930">在C# 中使用SerialPort 類實作序列槽通信(陸續更新)</a>

<a href="http://blog.csdn.net/linfeng999/article/details/6121003">AT 指令發送短信流程</a>

<a href="http://blog.csdn.net/linfeng999/article/details/6601328">短信 PDU 解碼</a>

繼續閱讀