C# 读/写串行端口(用于UBW)
我正在尝试用C编写UBW,以获取命令并返回输入。例如,当我在TeraTerm中建立USB连接时,输入v会给我当前使用的UBW固件版本的输出 我在C中建立了连接。我认为我发送的命令是正确的,但是我的datareceived处理程序从未在调试器中调用 以下是尝试写入端口的代码:C# 读/写串行端口(用于UBW),c#,serial-port,communication,C#,Serial Port,Communication,我正在尝试用C编写UBW,以获取命令并返回输入。例如,当我在TeraTerm中建立USB连接时,输入v会给我当前使用的UBW固件版本的输出 我在C中建立了连接。我认为我发送的命令是正确的,但是我的datareceived处理程序从未在调试器中调用 以下是尝试写入端口的代码: private void button1_Click(object sender, EventArgs e) { if (port.IsOpen) { //w
private void button1_Click(object sender, EventArgs e)
{
if (port.IsOpen)
{
//write command to port
port.WriteLine(textBox1.Text);
}
else
{
MessageBox.Show("Serial port is closed! Try again!");
}
textBox1.Clear();
}
下面是尝试从中读取的代码,该代码从未从调试器中调用过
private void port_dataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
port.ReadLine();
}
catch { }
}
下面是UBW主页,展示它是如何工作的
设置端口的组合框代码:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string portName = comboBox1.SelectedItem.ToString();
port = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
port.DataReceived += new SerialDataReceivedEventHandler(port_dataReceived);
try
{
port.Open();
//port.DataReceived += new SerialDataReceivedEventHandler(port_dataReceived);
}
catch
{
MessageBox.Show("The selected serial port cannot be opened!");
Application.Exit();
}
}
进入TeraTerm的COM端口属性,确保在代码中使用相同的属性 试着使用这个类,它包含了大量的串行内容,使之更容易:
从TeraTerm,我知道波特率是9600,奇偶校验=none,数据比特=8,停止比特=1。我使用一个组合框来选择COM,下面是我用来设置它的代码。我更新了我原来的帖子,包括我在哪里设置和打开端口。从该链接可以看出,port.DataReceived+=new SerialDataReceivedEventHandlerport\u DataReceived;一旦缓冲区中有数据,就应该将代码发送到我的port_dataReceived方法。但是由于某种原因,它没有。好吧,我是个白痴,我用CS实验室做我的程序,完全忘记了计算机上没有安装UBW固件。它在我的笔记本电脑上工作。