⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 利用手机或短信发射机发送短信的源码
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.IO;
using System.Data.SqlClient;
using System.Data.OleDb;


namespace SmsSender
{
    public partial class Form1 : Form
    {
        //声明api
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileInt(string lpApplicationName, string lpKeyName, int nDefault, string lpFileName);
        [DllImport("kernel32")]
        private static extern bool GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
        [DllImport("kernel32")]
        private static extern bool GetPrivateProfileSection(string lpAppName, StringBuilder lpReturnedString, int nSize, string lpFileName);
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileSection(string lpAppName, string lpString, string lpFileName);

        private const string FILE_NAME = ".\\Config.ini";

        public mycom mycom1 = new mycom();//串口类
        public PDUdecoding myPDUdecoding = new PDUdecoding();//PDU编码类
        public byte[] bRecievedata;//定义接收数据变量
        
        ////引用RS232类
        //public RS232 rs = new RS232();

        //是否允许关闭
        private Boolean iAllowClose = false;


        // This delegate enables asynchronous calls for setting
        // the text property on a TextBox control.
        delegate void SetTextCallback(string text);

        // This thread is used to demonstrate both thread-safe and
        // unsafe ways to call a Windows Forms control.
        private Thread thread = null;

        /// <summary>
        /// 定义设置短信内容相关变量
        /// </summary>
        String strSmsContent = String.Empty;
        String strReceiverNumber = String.Empty;
        /// <summary>
        /// 定义短信发射机相关变量
        /// </summary>
        StringBuilder strCenterNumber = new StringBuilder(256);
        public StringBuilder strPort = new StringBuilder(256);
        StringBuilder strRate = new StringBuilder(256);
        /// <summary>
        /// 定义数据库相关变量
        /// </summary>
        StringBuilder strServerIpAddress = new StringBuilder(256);
        StringBuilder strUserName = new StringBuilder(256);
        StringBuilder strPassWord = new StringBuilder(256);
        /// <summary>
        /// 定义测试版本发送数量
        /// </summary>
        public int iTestUserMaxSendCount = 2 + 3;
        public int iTestUserCurrentSendCount;



        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label3.Text =  "    本程序由辽宁工程技术大学鹏远软件工程研究所\r\n";
            label3.Text += "开发。版权归辽宁工程技术大学所有,未经授权任何\r\n";
            label3.Text += "人不得擅自使用。\r\n";
            label3.Text += "    本程序可单独使用,也可挂接连接库使用。\r\n";
            label3.Text += "    本演示版本一次可发送" + iTestUserMaxSendCount + "条。\r\n\r\n";

            label3.Text +="联系人:姜新宇\r\nQQ    :458371\r\n网  址:";

            txbReceiverNumber.Text = " ";
            iTestUserCurrentSendCount = 0;

            thread = new Thread(new ThreadStart(this.MasterMethod));
            thread.IsBackground = true;
            thread.Start();
        }
        private void MasterMethod()
        {
            //读取短信发射机配置参数
            if (File.Exists(FILE_NAME))
            {
                GetPrivateProfileString("SmsSetting", "CenterNumber", "0", strCenterNumber, strCenterNumber.Capacity, FILE_NAME);
                GetPrivateProfileString("SmsSetting", "Port", "0", strPort, strPort.Capacity, FILE_NAME);
                GetPrivateProfileString("SmsSetting", "Rate", "0", strRate, strRate.Capacity, FILE_NAME);

                this.SetText("程序开始运行......" + "\r\n");
                this.SetText("读取短信机配置文件成功......" + "\r\n");
                this.SetText("信息中心:" + strCenterNumber.ToString() + "\r\n");
                this.SetText("串口:COM" + strPort.ToString() + "\r\n");
                this.SetText("速率:" + strRate.ToString() + "\r\n");
            }

            //读取数据库配置
            if (File.Exists(FILE_NAME))
            {
                GetPrivateProfileString("ServerInfo", "ServerIpAddress", "0.0.0.0", strServerIpAddress, strServerIpAddress.Capacity, FILE_NAME);
                GetPrivateProfileString("ServerInfo", "UserName", "0", strUserName, strUserName.Capacity, FILE_NAME);
                GetPrivateProfileString("ServerInfo", "PassWord", "0", strPassWord, strPassWord.Capacity, FILE_NAME);
                this.SetText("读取数据库配置完成......" + "\r\n");
            }

            //初始化短信发射机串口
            mycom1.PortNum = Convert.ToInt16(strPort.ToString());
            mycom1.BaudRate = Convert.ToUInt16(strRate.ToString());
            mycom1.ByteSize = Convert.ToByte("8", 10);
            mycom1.Parity = Convert.ToByte("0",10);
            mycom1.StopBits = Convert.ToByte("1", 10);
            mycom1.ReadTimeout = 1000;
            mycom1.WriteTimeout = 100;


            if (this.OpenCom())
            {
                int sendnumb = 0;
                this.SetText("串口初始化成功......" + "\r\n");
                this.SetText("\r\n");
                this.SetText("正在初始化GSM MODEM,请稍后......" + "\r\n");

                //////////////////////////////////////////////////////////////////////////
                //Thread.Sleep(500);

                //测试GSM-MODEM的存在性
                bRecievedata = mycom1.Read(500);
                sendnumb = mycom1.Write(Command_Send("AT"));
                bRecievedata = mycom1.Read(500);
                if (delspace(dis_package(bRecievedata)).IndexOf(delspace("4F4B")) > -1)
                {

                }
                else
                {
                    this.SetText("GSM MODEM初始化失败......" + "\r\n");
                    mycom1.Close();   //关闭串口 
                    return;
                }

                sendnumb = mycom1.Write(Command_Send("ATE0"));
                Thread.Sleep(200);
                bRecievedata = mycom1.Read(500);
                if (delspace(dis_package(bRecievedata)).IndexOf(delspace("4F4B")) > -1)
                {

                }
                else
                {
                    this.SetText("GSM MODEM初始化失败......" + "\r\n");
                    mycom1.Close();   //关闭串口 
                    return;
                }

                //////////////////////////////////////////////////////////////////////////
                //GSM MODEM判断合法性
                sendnumb = mycom1.Write(Command_Send("AT+FLID?"));
                Thread.Sleep(100);
                bRecievedata = mycom1.Read(500);
                if (delspace(dis_package(bRecievedata)).IndexOf(delspace("37 34 38 38 35 38 35 39 33 30 39 33 38 35 31 7F 7F")) > -1)
                {
                    this.SetText("GSM MODEM符合要求......" + "\r\n");
                }
                else
                {
                    this.SetText("您所使用的GSM MODEM为非指定的产品,初始化失败......" + "\r\n");
                    mycom1.Close();   //关闭串口 
                    return;
                }

                //////////////////////////////////////////////////////////////////////////
                //设置GSM MODEM的发送模式为PDU
                sendnumb = mycom1.Write(Command_SetPDUMode());
                Thread.Sleep(500);
                bRecievedata = mycom1.Read(500);
                if (delspace(dis_package(bRecievedata)).IndexOf(delspace("4F4B")) > -1)
                {
                    this.SetText("GSM MODEM初始化完成,可以正常工作......" + "\r\n");
                }
                else
                {
                    this.SetText("GSM MODEM初始化失败......"  + "\r\n");
                    mycom1.Close();   //关闭串口 
                    return;
                }
            }
            else
            {
                this.SetText("串口初始化失败......" + "\r\n");
                this.SetText("请关闭程序,检查硬件设备及参数设置,再重新开启程序......" + "\r\n");
                return;
            }


        }

        //////////////////////////////////////////////////////////////////////////
        //用代理的方法向监控记录listbox中加入item.text开始
        private void SetText(string text)
        {
            if (this.ltbMonitorLog.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.ltbMonitorLog.Items.Add(text);
            }
        }
        //用代理的方法向监控记录listbox中加入item.text结束

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("IExplore.exe", "http://www.lntu.org"); //在新的窗口打开
        }

        //////////////////////////////////////////////////////////////////////////
        //发送按钮
        private void btnSendSms_Click(object sender, EventArgs e)
        {
            //////////////////////////////////////////////////////////////////////////
            //检验测试用户是否达到最大发送量
            if (iTestUserCurrentSendCount > iTestUserMaxSendCount)
            {
                this.SetText("警告:测试用户每次的最大发送量为" + iTestUserMaxSendCount + ",您本次测试已经超过此数值......\r\n");
                return; 
            }
            //////////////////////////////////////////////////////////////////////////
            //检测GSM MODEM是否初始化
            if (mycom1.Opened == false)
            {
                this.SetText("GSM MODEM设备未初始化,不能发送短信......" + "\r\n");
                return;
            }
            //////////////////////////////////////////////////////////////////////////
            //给接收号码及短信内容赋值
            strSmsContent = txbSmsContent.Text;
            strReceiverNumber = txbReceiverNumber.Text;
            //////////////////////////////////////////////////////////////////////////

            this.btnSendSms.Enabled = false;

            if (delspace(strSmsContent) == String.Empty || strSmsContent == "请填写短信内容..." || strReceiverNumber == String.Empty)
            {
                this.SetText("请正确填写短信内容及对方号码......" + "\r\n");
                this.SetText("发送任务被取消......" + "\r\n");
                this.btnSendSms.Enabled = true;
                return;
            }
            int sendnumb = 0;
            try
            {
                sendnumb = mycom1.Write(Command_SendContentLength());
                Thread.Sleep(3000);
                bRecievedata = mycom1.Read(500);

                sendnumb = mycom1.Write(SendSms());
                this.SetText("发送数据(" + sendnumb + "):接收人:" + strReceiverNumber+"   内容:" + strSmsContent + "\r\n");
                Thread.Sleep(3000);

                bRecievedata = mycom1.Read(500);
                //this.SetText("接收到数据包:" + dis_package(bRecievedata) + "\r\n");
                
                sendnumb = mycom1.Write(Command_ExtractionDataPack());
                Thread.Sleep(3000);

                bRecievedata = mycom1.Read(500);
                //this.SetText("接收到数据包:" + dis_package(bRecievedata) + "\r\n");

            }
            catch
            {
                this.SetText("发送失败!" + "\r\n");
            }
            this.btnSendSms.Enabled = true;
            //////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -