发送AT指令

       最近由于实验室项目需要,需要对GSM模块进行调用,可是购买模块自带的dll文件只适用于32wei系统,可系统真实的运行环境却是64bit,不得已,只好自己上手去写了,该模块的调用,其实很简单的,首先呢,硬件联系上GSM模块,该步骤适用串口精灵即可

      1.确定串口的名称,即COM1  COM2  或者COM3 。。。

      2.利用串口编程,这模块的实现,可以使用各种语言,我呢,使用了C#,所以说明也在C#语言之下

      由于要求的功能简单,所以对串口的操作也相对简单,只是向串口发送几个简单的命令

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;//用于启用线程类;
using System.IO.Ports;//用于调用串口类函数
namespace Web.view.User
{
    class com_port
    {
        public string iPort = "com1"; //默认为串口1

        public int iRate = 9600; //波特率1200,2400,4800,9600
        public byte bSize = 8; //8 bits
        public int iTimeout = 1000; //延时时长
        public SerialPort serialPort1 = new SerialPort();//定义一个串口类的串口变量 
        public string cur_Port;
        private string _phoneNum;
        private string _auditnum;
        public string PhoneNum
        {
            get { return _phoneNum; }
            set { _phoneNum = value; }
        }
        public string AuditNum
        {
            get { return _auditnum; }
            set { _auditnum = value; }
        }     
        public  com_port(string port_num)
        {
           // Microsoft.VisualBasic.Devices.Computer cmbCOM = new Microsoft.VisualBasic.Devices.Computer();            
            this.serialPort1.BaudRate = 9600;
            this.serialPort1.PortName = "COM" + port_num;                    
        }       
        //开串口
        public bool OpenCom()
        {
            try
            {
                if (serialPort1.IsOpen)
                {   
                    Console.WriteLine("串口已打开\r\n");
                }
                else
                {
                    serialPort1.Open();//打开串口
                    Console.WriteLine("串口已打开");
                }
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine("错误:" + e.Message);
                return false;
            }

        }
        private void SubSendData()
        {
            this.serialPort1.Write("AT+CMGF=1\r");
            this.serialPort1.Write("AT+CMGs=\""+_phoneNum+"\"\r");
            this.serialPort1.Write(_auditnum + "\x01a");//发送短信息,使用Ctrl+Z结束        
        }
        //发送数据函数
        public void SendData()
        {
            if (this.serialPort1.IsOpen)
            {
                //发送数据
                SubSendData();
                this.serialPort1.Close();
            }
            else
            {
                this.serialPort1.Open();
                //发送数据
                SubSendData();
            }
           this.serialPort1.Close();
       }      
    }
}

这样最初的功能就完成了,但是呢,有一点,就是在使用的时候发送一次还行,如果多次的话总会出现COM3 ACCESS DENIED提示,因为应用,经过检查发现,是因为多次初始化的原因,才会有这样的反应,所以呢,我们只需要在每次发送之后关闭端口即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值