我試圖將一串AT命令發送到USB加密狗。我已成功寫入串口。但我沒有成功回讀。基本上我想要做的是發送讓我們說AT到加密狗,並在richtextbox中收到確定。接下來將發送來自另一個設備的信息到加密狗並在richtextbox中讀取它。在richtextbox中回讀AT命令響應
下面是我使用的代碼:
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
SerialPort sp = null; //<---- serial port at form level
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// initialise port in form loadmyport.PortName = "COM3";
sp = new SerialPort();
sp.PortName = "COM8";
sp.BaudRate = 115200;
sp.Parity = Parity.None;
sp.DataBits = 8;
sp.StopBits = StopBits.One;
sp.NewLine = System.Environment.NewLine;
sp.ReadTimeout = 2000;
sp.WriteTimeout = 2000;
sp.DtrEnable = false;
sp.RtsEnable = false;
sp.WriteBufferSize = 4096;
sp.ReadBufferSize = 4096;
sp.Handshake = Handshake.None;
sp.Encoding = System.Text.Encoding.ASCII;
// also set up baud rate etc here.
// attach event handler to capture data received
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
}
private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
}
private void button1_Click(object sender, EventArgs e)
{
connect.Enabled = false;
try
{
// open port if not already open
// Note: exception occurs if Open when already open.
if (!sp.IsOpen)
{
sp.Open();
}
// send data to port
sp.Write("ATXXX,XXXXXXX\r\n");
disconnect.Enabled = true;
}
catch (Exception)
{
// report exception to user
Console.WriteLine(e.ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
connect.Enabled = true;
try
{
// open port if not already open
// Note: exception occurs if Open when already open.
if (!sp.IsOpen)
{
sp.Open();
}
// send data to port
sp.Write("atXX,0\r\n");
}
catch (Exception)
{
Console.WriteLine(e.ToString());
}
finally
{
disconnect.Enabled = false;
}
}
public void OnApplicationExit(object sender, EventArgs e)
{
sp.Close();
}
}
}
您有一個datareceived處理程序(sp_DataReceived),爲什麼不使用它? – user2019047
讓我更新我的帖子。我將此添加到接收到的數據處理程序中private void sp_DataReceived(object sender,SerialDataReceivedEventArgs e) {SerialPort sp =(SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine(「Data Received:」); Console.Write(indata);仍然沒有看到任何東西。 –
可能重複[SerialPort DataReceived事件不會觸發](http://stackoverflow.com/questions/8907490/serialport-datareceived-event-not-fire-c-console-application) –