短信设备开发新手不求人了解的C#串口类,简单的串口调试器
分享软件开发的朋友接到领导的命令“给公司的XX系统添加一个短信功能”,在不了解这行的情况下,
百度搜索一些资料,了解到有:
1、运营商提供通道接口进行二次开发到公司的系统上实现这个短信功能。
2、通过短信设备设备进行二次开发实现短信功能。
1的方法我就不介绍了你可以找通道商进行了解。2想进行短信设备开发的一般软件开发人员都想自己完全的开发,一免费,二日后维护自己情况,做出来了老板更赞,但是又不怎么了解呢,那么下面几天我会通过发布几个文章介绍一下实现短信功能的例子给大家分享下:
首先稍微了解下神马是短信设备和GSM MODEM呢
GSM Modem俗称“短信设备”,PC可通过串口与其通信,通过向其所连接的串口发送AT指令(at指令也不知道什么?点击去查看指令集直接去一个个测试下你就完全清楚了,也就几个个而已,不要懒了,懒你就找客服购买接口吧)控制我们的“猫”发送短信,想尽快了解这个串口通讯当时是通过一个源代码程序来得最快了请看下面:
写这样一个软件,首先要了解串口通信,.NET已经为我们封装了SerialPort类,方便串口通信。
需要熟悉此串口类,就需要实现一个简单的串口调试器。
效果图:
GSMMODEM.cs源代码:
using System; using System.IO.Ports; using System.Threading; namespace 时讯网 { class GSMMODEM { //构造函数 public GSMMODEM() { //串口初始化 _sp.NewLine = "\r\n"; _sp.ReadTimeout = 2500; _sp.RtsEnable = true; //_sp.DtrEnable = true; //_sp.Handshake = Handshake.RequestToSendXOnXOff; } public GSMMODEM(string ComPort, int BaudRate) { //串口初始化 _sp.PortName = ComPort; _sp.BaudRate = BaudRate; _sp.NewLine = "\r\n"; _sp.ReadTimeout = 2500; _sp.RtsEnable = true; //_sp.DtrEnable = true; //_sp.Handshake = Handshake.RequestToSendXOnXOff; } //属性 private SerialPort _sp = new SerialPort(); //public bool AutoDelMsg = false; //设置是否在阅读短信后自动删除SIM卡内短信存档(建议在经常接收短信时设置为 true) //设计和运行时都可以读写,true 自动删除 false 不自动删除 //默认为 true //端口号 public string ComPort { get { return _sp.PortName; } set { _sp.PortName = value; } } //波特率 public int BaudRate { get { return _sp.BaudRate; } set { _sp.BaudRate = value; } } //是否开启 public bool IsOpen { get { return _sp.IsOpen; } } //打开设备 public void OpenComm() { try { _sp.Open(); } catch (Exception ex) { throw (ex); } } //关闭设备 public void CloseComm() { try { _sp.Close(); } catch (Exception ex) { throw (ex); } } //发送AT指令,返回由设备返回的数据 public string SendATCommand(string ATCmd) { _sp.DiscardInBuffer(); try { _sp.WriteLine(ATCmd); } catch (Exception ex) { throw (ex); } try { Thread.Sleep(100); return _sp.ReadExisting(); } catch (Exception ex) { throw (ex); } } public string Write(byte[] byte1, int a, int b) { try { _sp.Write(byte1, a, b); } catch (Exception ex) { throw (ex); } try { Thread.Sleep(100); return _sp.ReadExisting(); } catch (Exception ex) { throw (ex); } } } }
回帖 ( 0 )