使用C#开发GSM发短消息的程序

开发平台是VS.NET,语言使用C#,GSM使用西门子TC35i
步骤:
1、新建windows工程。
2、引用控件MScomm,命名为com,在窗体上添加2
textBox,分别命名为txtSend,txtReceive,添加2按钮,命名为cmdSend,cmdSendSms。
3、编辑函数InitComPort()
private void InitComPort()
{
// Set the com port to be 1
com.CommPort = 1;
    
// This port is already open, close it to reset it.
if (com.PortOpen) com.PortOpen = false;
    
// Trigger the OnComm event whenever data is received
com.RThreshold = 1;  
    
// Set the port to 9600 baud, no parity bit, 8 data bits, 1 stop bit (all standard)
com.Settings = "9600,n,8,1";

// Force the DTR line high, used sometimes to hang up modems
com.DTREnable = true;
    
// No handshaking is used
com.Handshaking = MSCommLib.HandshakeConstants.comNone;

// Don't mess with byte arrays, only works with simple data (characters A-Z and numbers)
com.无效Mode = MSCommLib.无效ModeConstants.com无效ModeText;
    
// Use this line instead for byte array 无效, best for most communications
//com.无效Mode = MSCommLib.无效ModeConstants.com无效ModeText;
    
// Read the entire waiting data when com.无效 is used
com.无效Len = 0;

// Don't discard nulls, 0x00 is a useful byte
com.NullDiscard = false;
    
// Attach the event handler
com.OnComm += new System.EventHandler(this.OnComm);
    
// Open the com port
com.PortOpen = true;  
}
在窗体load的时候调用上面的函数。
4、添加事件
private void OnComm(object sender, EventArgs e)  //  MSCommLib OnComm Event Handler

txtReceive.AppendText ((string)com.无效 );

5、添加按钮事件
 private void cmdSend_Click(object sender, System.EventArgs e) {
            com.Output =txtSend.Text+'\r' ;
        }
6、发短消息。
private void cmdSendSms_Click(object sender, System.EventArgs e) 
{
string str;
str="at+cmgs="  +'\"'+ "13*********"+ '\"'+'\r';
com.Output =str ;
  str="aaaaaaa"+ '\u001a';
        com.Output =str ;

        }


5): 收短消息

 private void receiveSms()
        {

        mscom.Output ="AT+CMGL="+'\"'+"ALL"+'\"'+'\r'+'\n';
         //mscom.Output ="AT+CMGL"+'\r'+'\n';
        System.Threading.Thread.Sleep(4000);
       // buffer=(string)mscom.无效 ;
       //  return buffer;   
         }
发送短消息
(6):private void sendSms(string num,string content)
        {
            mscom.Output ="AT+CMGS=\""+num+"\"\r";
            System.Threading.Thread.Sleep(200);
            mscom.Output =content+'\u001a';
       
               
            System.Threading.Thread.Sleep(4000);

        }
以上是使用GSM模块发短消息的主要代码。
收短消息可以向com发命令at+cmgr=1(2\3\4……)+\r即可
希望对大家有帮助。

转载于:https://www.cnblogs.com/dagco/archive/2005/05/26/163085.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序参考网上某个例程编写而成,已完成信功能。GSM模块为wavecom moden。先点击获取SIM卡信息按钮获取信中心号码,然后输入手机号,信内容信。希望对同样初次接触GSM模块的兄弟们有帮助。 以下是本程序开发纪录(包括程序都写得比较不规范,请见谅!) 7.14----------------------------------------------- 开始着手GSM模块的学习和编程。弄了一天的时间,以为是win7下的超级终端有错误,后来才现是我把波特率弄错了,这个wave moden的默认波特率是115200,而我却设成了一般情况下的9600。这是一个很大的教训,欲速则不达。 7.15----------------------------------------------- 自己用C#编了个简单的GSM与上位机连通判断的模块,目标是从串口送“AT”给GSM模块,GSM模块能够返回与超级终端上返回得到的信息一致(即AT\n OK)。不过没有完成预期的目标,查阅了一些资料现有可能出现的错误是送的AT指令编码没编好。 7.16----------------------------------------------- 实现了GSM模块与上位机的连通。比如,从C#界面送“AT”,能够从串口读取到GSM模块返回的“AT\n OK”信息,其他AT指令亦能实现。 现了一个小BUG,如果GSM模块上电后即在VS2008上调试,则程序能够顺利运行;但如果上电后在超级终端调试过后,再在VS2008上调试,则不能从C#的小程序上获取GSM模块返回的信息。 实现了GSM模块信的功能。可以送中文\英文信。在此过程中出现了一个低级失误,没把生成的信中心号码“+8613000……”前的“+”去掉,导致生成的PDU编码有误,送失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值