我用C#写了个上位机,经测试串口是有用的,但是连到短信猫上就不行了,短信猫一直没回信,但是短信猫用 超级终端测试完全正确
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 Uart
{
     public partial class Uart : Form
     {
         public Uart()
         {
             InitializeComponent();
         }
         //声明串口
         public SerialPort sp = new SerialPort();
         //定义委托
         delegate void HandleInterfaceUpdateDelegate(string text);
         //实例化委托
         HandleInterfaceUpdateDelegate interfaceUpdateHandle = null;
         //开始初始化
         private void Uart_Load(object sender, EventArgs e)
         {
             this.label_Uart_Info.Text = "";
             //初始化tabcontrol
             this.tabControl1.SelectedIndex = 1;
             //initialize combobox_enter
             this.cbxTransfer.SelectedIndex = 0;
             interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(Updata_Text_Rec);
         }
         private void Updata_Text_Rec(string text)
         {
             richTextBox_Rec.Text += text;
         }
         public int sendCount = 0;
         public int recCount = 0;
         //打开串口
         private void btn_Link_Uart_Click(object sender, EventArgs e)
         {
             sp.PortName = "COM3";
             sp.BaudRate = 9600;
             sp.DataBits = 8;
             sp.Parity = Parity.None;
             sp.StopBits = StopBits.One;
             sp.ReceivedBytesThreshold = 1;
             sp.Encoding = Encoding.GetEncoding("utf-8");
             try
             {
                 sp.Open();
             }
             catch (System.IO.IOException ex)
             {
                 MessageBox.Show(ex.ToString());
             }
             sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.sp_DataReceive);
             label_Uart_Info.Text = sp.PortName + ',' + sp.BaudRate + ',' + sp.DataBits + ',' + sp.Parity + ',' + sp.StopBits;
             if (sp.IsOpen == true)
             {
                 MessageBox.Show("串口连接成功");
             }
             else
             {
                 MessageBox.Show("串口连接失败");
             }
         }
         //关闭串口
         private void btn_Break_Uart_Click(object sender, EventArgs e)
         {
             sp.Close();
             richTextBox_Rec.Text = "";
             richTextBox_Send.Text = "";
             label_Uart_Info.Text = "未连接";
             if (sp.IsOpen == false)
             {
                 MessageBox.Show("串口正常关闭");
                 this.lbSendCount.Text = "发送计数";
                 this.lbRecCount.Text = "接收计数";
             }
             else
             {
                 MessageBox.Show("串口未能关闭");
             }
         }
         //DataReceived事件委托方法
         private void sp_DataReceive(object sender, EventArgs e)
         {
             byte[] databuf = new byte[sp.BytesToRead];
             sp.Read(databuf, 0, sp.BytesToRead);
             this.recCount += databuf.Length;
             //this.lbRecCount.Text = string.Format("接收到{0:X}Byte", this.recCount);