c#中通过串口发送短信

本文关键字:串口 | 更新日期: 2023-09-27 18:13:49

我正在使用串口通过GSM/调制解调器发送短信。我的代码正在与单个短信一起工作。当我尝试批量发送短信时,问题就出现了。则不发送短信,不产生异常。

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.IO.Ports;
 using System.ComponentModel;
 using System.Windows.Forms;
 namespace program.cs
 {
    public class Class1
 {
    public string[] strarray = new string[10];
    SerialPort serialport1 = new SerialPort();
    string com = "COM8";
    int mybaudrate = 9600;

    //this.strarray =System.IO.Ports.SerialPort.GetPortNames();

    public void getports()
    {
        this.strarray = System.IO.Ports.SerialPort.GetPortNames();
    }
    public bool connetport() 
    {
        bool Isopen;
        serialport1.Close();
        try
        {
            if (!this.serialport1.IsOpen) 
            {
                this.serialport1.PortName = com;
                this.serialport1.Open();
                this.serialport1.BaudRate = mybaudrate;
                this.serialport1.StopBits = System.IO.Ports.StopBits.One;
                this.serialport1.Parity = System.IO.Ports.Parity.None;
                this.serialport1.Handshake = System.IO.Ports.Handshake.None;
                 Isopen= serialport1.IsOpen;


            }
            Isopen = true;

            }
        catch (Exception ex)
        {
            Isopen = false;
            throw ex;
        }
        return Isopen;   
    }
    public void sendsms() 
    {
        try
        {
            if (this.serialport1.IsOpen)
            {
                // to send bulk sms

                serialport1.BaseStream.Flush();
                int loop = 0;
                int howmany = 0;
                howmany = 200;

                while (loop < howmany)
                {
                    System.Threading.Thread.Sleep(3500);
                    string cb = char.ConvertFromUtf32(26);
                    this.serialport1.Write("AT+CMGF=1'r");
                   this.serialport1.Write("AT+CSCA=servicecenter'r   
                   'n");//Ufone              Service Center                    
                    this.serialport1.Write("AT+CMGS='"" + "03468916446" + "'"'r'n");// 
                    this.serialport1.Write("hello" + cb);//message text
                    message sending
                    System.Threading.Thread.Sleep(3500);
                    loop++;

                }
                MessageBox.Show("Message Sent Number" + loop);
                serialport1.Close();
            }
        }
        catch (Exception ex) 
        {
            serialport1.Close();
            throw ex;
        }

    }



}

}

上面的Class1用于连接和发送短信


主程序代码

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    bool check;
    Class1 obj = new Class1();
    private void button1_Click(object sender, EventArgs e)
    {
        check = obj.connetport();
        MessageBox.Show("Connecton Status" + check);
        obj.sendsms();
        MessageBox.Show("have completed");
    }
}
我花了很多时间来解决这个问题,但没有成功。非常感谢您的帮助

c#中通过串口发送短信

我建议使用Portmon (http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx)之类的工具来确保调制解调器正在接收您的消息。

如果他们是,你可能要检查你的运营商,因为他们很多黑洞批量短信。(以避免滥发讯息者等)