コマンドを受け取って入力を返すように、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();
}
}