阅读AT指令结果代码

3
我正在处理一个涉及发送AT指令到手机调制解调器并接收其结果代码的项目。我已经成功地发送了AT指令,但是我无法弄清楚如何读取来自命令的结果代码,例如当您发送“at”时,它返回“OK”,如果您发送“at + cbc”,则返回电池状态。我尝试在发送命令后使用Read、ReadLine和ReadExisting,但不起作用,我还尝试创建一个接收数据的事件并使用这些函数,但也没有效果。以下是我的源代码,希望您能给我一些帮助。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApplication1
{
    public partial class check : Form
    {
        SerialPort sp;

        public check()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            sp = new SerialPort();
            sp.PortName = "COM3";
            sp.BaudRate = 9600;
            sp.Parity = Parity.None;
            sp.DataBits = 8;
            sp.StopBits = StopBits.One;
            sp.ReadTimeout = 3000;
            sp.WriteTimeout = 3000;
            //sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            try
            {
                if(!sp.IsOpen)
                {
                    sp.Open();
                }
                sp.WriteLine(tbCmd+"\r\n");
                System.Threading.Thread.Sleep(2000);
                tbStatus.Text = sp.ReadLine();      
            }
            catch(Exception ex)
            {
                tbStatus.Text = "Error!\r\n" + ex.ToString();
            }
        }

        //void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        //{
        //    tbStatus.Text = sp.ReadExisting();
        //}
    }
}

@motevallizadeh:可能是包含应通过COM端口发送的AT命令的文本框... - C.B.
2个回答

0
    sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);

    void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if(e.EventType != SerialData.Chars)
        {
            tbStatus.Text = "IGNORED: " + e.EventType.ToString();
            return;
        }
        try
        {
            int nBytesToRead = sp.BytesToRead;
            char[] receivedData = new char[nBytesToRead];
            sp.Read(receivedData, 0, nBytesToRead);
            tbStatus.Text = "RECEIVED: " + new string(receivedData);
        }
        catch (Exception ex)
        {
            tbStatus.Text = "ERROR: " + ex.Message;
        }
    }

0

我在诺基亚论坛上看到,诺基亚60系列手机不支持读取短信消息命令,并且这些AT命令在诺基亚手机上无法使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接