C#使用串口SerialPort开发收发短信系统总结
开发环境:VS2008+SQLSERVER2008+单口+8口
主要知识:串口参数配置+常用操作+短信编码的加密解密
下面详细介绍下相关的知识经验和总结:
一串口参数配置:
PortName 串口名称,COM1, COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,COM10等(笔记本默认包括COM1-COM4,台式机默认COM1-COM2,单口端口为笔记本或者台式机对应的串口号,多口对应笔记本或者台式机之后的端口号)。
BaudRate 波特率(单口默认为9600,8口短信或者彩信猫为1152000)
Parity 奇偶校验(基本上选择默认设置就好,不进行自定义配置)
DataBits 数据位(基本上选择默认设置就好,不进行自定义配置)
StopBits 停止位(基本上选择默认设置就好,不进行自定义配置)
二常用操作:
编码模式:
主要是PDU模式跟TEXT模式,对应的指令分别是AT+CMGF=0和AT+CMGF=1
模块型号或者机器码,对应指令为AT+CGMI
读取中的短信,主要分以下六类:
读取所有已读短信,对应指令为AT+CMGF=1
读取所有未读短信,对应指令为AT+CMGF=0
读取所有已发短信,对应指令为AT+CMGL=3
读取所有未发短信,对应指令为AT+CMGL=2
读取所有短信,对应指令为AT+CMGL=4
读取指定编号的短信,对应指令为AT+CMGR=编号数字
串口的打开关闭写数据主要是SerialPort对象自带的Open(),Close(),Write(string/byte[])等方法
三短信编码的加密解密
短信收发时的编码方式主要分三种,7BIT、8BIT、UCS2,所以对应的加密解密函数对应就会有六个。
加密短信内容时的操作对象主要包括目标加密手机号码,加密短信内容,加密短信中心号码。
解密短信内容时的操作对象主要包括解密短信发送方的手机号码,解密收到短信的时间,解密收到短信的内容。
发送短信的编码格式类似于0011000B6831**********0008C408828265E55FEB4E50(08828265E55FEB4E50代表发送的短信长度为08个字节+内容为节日快乐)
收取短信的编码格式类似于08916831开头的
以上为本人原创经验总结分享给大家,相关函数方法可以在网络上比较容易搜索到,可以参考开源代码http://code.google.com/p/gsmmodem/。不过这个还是很不完善。凭借这个研究出能用到实际项目中的系统我觉得一般人还需要至少个把月时间。包括与数据库打交道的常用操作如记录收到所有短信内容和已发短信日志到数据库中等等。
分享到:
相关推荐
对C#的serialport类功能进行了总结,给出了发送,接收数据的完整操作类代码,可直接运用该类进行c#的串口数据操作
类中实现串口事件DataReceived接收数据。定义3个事件,用来通知数据接收完成、数据发送完成、每次接收数据。实现C#串口通信SerialPort类,包含C#编程代码。
支持串口大量数据读写操作,能一次性读取数据,通过设置超时大小控制一次读取串口所有数据。支持事件触发,异步发送接收数据。附件有demo,可下载Virtual Serial Port Driver模拟串口测试。
C#工程文件serialport串口接收助手ADC图像采集chart控件显示,代码采用C#窗体控件其中包含了serialport控件和chart控件,可以用于单片机/stm32的ADC电压电流采集
C# 使用SerialPort控件制作的串口助手,请忽略我的名字,源代码全部开放,实现功能有收发数据,自动收发,十六进制收发和收发文件等。大家可以下载可以修改,完全开源。好东西值得这么多分。
在C#中使用serialPort控件、消息处理和DataReceived事件实时显示数据。
一看就会,上手快,关于串口的打开,关闭,数据发送,数据的接收,数据处理,更新线程,自动发送等,本程序的数据处理是判断接收到的数据的数据格式是否正确 .
实现串口事件DataReceived接收数据 后台开启一个监控线程来监控是否数据接收完成 定义3个事件,用来通知数据接收完成、数据发送完成、每次接收数据。
通过Serialport空间自动接收串口通信的数据,有CRC16位数据校验,可设置串口名,波特率等,主要是接收到的数据以追加的形式保存到了text文档中,文档以当天日期命名。
本实例演示定义委托,并利用委托把来自串口接收到的数据显示在文本框中!熟悉委托的定义和串行数据收发的简单功能!
以网上某位大虾的源码为版本,沿用了其可用的代码部分。对其余欠妥部分进行了改造。不要资源分,是大家不用为积分而烦恼。出来混都不容易,希望大家相互照应!
串口通信助手,封装SerialPort 通信类,发送端与接收端连接及接收/回复(字符/十六进制)。包含源代码(VisualStudio 2010或更高版本编译运行)。(RS485/RS232/CAN)
//声明串口类实例 public SerialPortUtility mySp = new SerialPortUtility(); //打开串口 mySp.OpenSerialPort("COM1" /*串口号*/, 9600/*波特率*/, 0/*校验位*/, 8/*数据位*/, 1/*停止位*/); // 订阅事件...
主要实现功能是将串口发送过来的数据按波形显示 注:本例是以串口调试助手和虚拟串口VSPD软件模拟串口发送数据的 我所用的串口调试助手每次...详细说明见同名CSDN博客“C#用serialPort和chart控件实现简单波形绘制”
C#串口收发数据 private void button1_Click(object sender, EventArgs e) { serialPort1.PortName = "COM1"; serialPort1.BaudRate = 9600; serialPort1.Open(); byte[] data = Encoding.Unicode.GetBytes...
包含串口通信(Serial Communications),C#串口编程,SerialPort类的使用,定义3个事件,用来通知数据接收完成、数据发送完成、每次接收数据。支持串口大量数据读写操作,能一次性读取数据,通过设置超时大小控制一...
用c#语言serialport控件编写的双路串口数据发送接收软件exe
最近在做一个有关高铁模拟仓显示系统的客户端程序,在这个程序中要运用串口serialPort传输数据,因为每次接收数据结束后要更新UI界面,所以就用到了的Invoke,将更新UI的程序代码封装到一个方法中,然后通过Incoke...
该资源用于测试串口通信是否正常,能够显示传输和接收的数据数目,测试方法可以将TX、RX短接,因为程序中传输的数据是0x5A,如果接收的数据不是0x5A就会弹出出错messagebox。
C#中SerialPort类中DataReceived事件GUI实时处理方法 MSDN:从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI ...