1
我正在嘗試在C#中編程UBW以採取命令並將輸入返回給我。例如,當我在TeraTerm中建立USB連接時,輸入v會給出我正在使用的UBW當前固件版本的輸出。讀取/寫入串行端口(用於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();
}
}
從TeraTerm,我知道,波特率爲9600,奇偶校驗爲無,數據位= 8 ,stopbits = 1。我使用組合框來選擇COM,這裏是我用來設置它的代碼。我更新了我原來的帖子,包括我在哪裏設置了端口並將其打開。從我可以從鏈接中得知,port.DataReceived + = new SerialDataReceivedEventHandler(port_dataReceived);一旦緩衝區中有數據,應該將我的代碼發送到我的port_dataReceived方法。但由於某種原因,事實並非如此。 – Kevin
好吧,我是一個白癡,我正在使用一個CS實驗室來做我的程序,並完全忘記UBW固件沒有安裝在電腦上。它適用於我的筆記本電腦。 – Kevin