1

我正在尝试在 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 主页,展示了它是如何工作的。http://schmalzhaus.com/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();
        }

    }
4

1 回答 1

0

进入 TeraTerm 的 COM 端口属性,并确保您在代码中使用相同的属性。

Try using this class (it wraps up a lot of serial stuff to make it easier):

http://code.google.com/p/flux3gui/source/browse/Flux3GUI/SerialCommunication.cs?r=b4a4f8546b936eeabe60b7de32e3027493498dc6

于 2012-05-03T04:29:33.623 回答