C#通过短信设备类库GSMMODEM.dll实现简单的短信发送测试软件

分享

上一篇完成了一个简单了短信设备的C#类库《短信设备通过C#来实现API函数接口 》,提供了发送和接收短信的API函数调用。这篇提供这个API函数的使用方式,并且实现了一个简单的短信猫软件,这个小软件已经能够完成短信猫的基本功能,本文只是一个基本实现事例,如需要更多功能需要你们自己进行开发了。

上篇的项目工程文件可以生成GSMMODEM.dll文件,这个程序就是调用此文件中的方发等实现的。运行界面:

182210moo5513414i0qred




程序实现功能:自动扫描电脑串口,显示在combox控件中,供用户选择;提供两个波特率选项9600,115200(不够可以通过属性再添加);可以发送70字以内短信;按索引号读取短信;新消息到来提示;读取新消息。读信息只支持USC2编码,收到7bit编码的短信内容部分显示乱码,可以通过添加7bit编码的解码解决这一问题。

好了,开始说怎样实现它。

新建项目,添加引用 浏览选项卡,选择到GSMMODEM.dll打开,然后添加命名空间using GSMMODEM;之后就可以正常使用上一篇我们实现的类了

有关此C#类库详细信息参考:《短信设备通过C#来实现API函数接口

  private GSMModem gm = new GSMModem();    //实例化设备类


扫描电脑串口并加入comboBox1控件:

   
  foreach (string s in SerialPort.GetPortNames())
  {
      comboBox1.Items.Add(s);
  }



  • 发送短信:

   发送短信关键代码
try
  • 读取短信:


  •    读取短信关键代码
       try
        {
           gm.ReadMsgByIndex(Convert.ToInt32(textBox3.Text), out msgCenter, out phone, out msg, out time);   //调用设备对象的方法 按序号读取短信
           textBox4.Text = "短信中心:" + msgCenter + "\r\n" + "手机号码:" + phone + "\r\n" +
                   "短信内容:" + msg + "\r\n" + "发送时间:" + time.Substring(0, 4) + "-" +
                  time.Substring(4, 2) + "-" + time.Substring(6, 2) + " " + time.Substring(8, 2) +
                   ":" + time.Substring(10, 2) + ":" + time.Substring(12, 2);
           label9.Text = "读取成功";
         label9.ForeColor = Color.Green;
      }
      catch
       {
          label9.Text = "读取失败";
          label9.ForeColor = Color.Red;
          return;
    }
  • 删除短信:


  •    删除短信关键代码
       try
        {
           gm.DeleteMsgByIndex(Convert.ToInt32(textBox3.Text));   调用设备方法 删除
       }
       catch
        {
           label9.Text = "删除失败";
           label9.ForeColor = Color.Red;
          return;
      }
  • 新短信提示:
    这一部分比较麻烦,使用委托,回调函数 还有事件 有关详细信息参考MSDN。

  •    
       //委托 收到短信的回调函数委托
        delegate void UpdataDelegate();         //可以有参数,本处不需要
        UpdataDelegate UpdateHandle = null;
        
       private void Form1_Load(object sender, EventArgs e)
       {......
           gm.OnRecieved += new GSMModem.OnRecievedHandler(gm_OnRecieved);
        
          UpdateHandle = new UpdataDelegate(UpdateLabel8);        //实例化委托
       
       }

    gm.OnRecieved += new GSMModem.OnRecievedHandler(gm_OnRecieved);

    句添加事件绑定,收到短信后将自动运行gm_OnRecieved函数

  •   void gm_OnRecieved(object sender, EventArgs e)
      {
          Invoke(UpdateHandle, null);
      }

    函数内只有一句话:调用回调函数句柄UpdateHandle指向的函数
    UpdateHandle = new UpdataDelegate(UpdateLabel8); //实例化委托
    表明要调用的函数名为UpdateLabel8


  •   void UpdateLabel8()
      {
          label8.Text = "有新消息";
          label8.ForeColor = Color.Green;
      }
  • 函数体内更改控件Text属性,提示用户有新消息到来,此处亦可直接读取短信内容

  • 读新消息:

  gm.ReadMsgByIndex(gm.NewMsgIndex, out msgCenter, out phone, out msg, out time);

调用序号读取短信方法:只不过序号由属性NewMsgIndex提供


参考工程附件:

简单实现软件.rar


短信设备二次开发 2022-04-05 0 0

admin

  • 注册时间 : 2022-03-30 04:08:47
  • 邮箱地址 : admin@tenghengkeji.com
  • 此页面用于展示用户的基本上资料信息

回帖 ( 0 )