C# 读/写串行端口(用于UBW)

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

我正在尝试用C编写UBW,以获取命令并返回输入。例如,当我在TeraTerm中建立USB连接时,输入v会给我当前使用的UBW固件版本的输出

我在C中建立了连接。我认为我发送的命令是正确的,但是我的datareceived处理程序从未在调试器中调用

以下是尝试写入端口的代码:

  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固件。它在我的笔记本电脑上工作。