在 Tera Term 中,我通過 USB 連接到串行設備(啟動時選擇單選按鈕“串行”和正確的端口)。連接后,我僅將默認速度更改為 115200(在設置=>串行端口中)。之后,tera term 要求我填寫如下命令:命令>我填寫設備特定命令。在本例中,它是“PC”,我收到預期的響應,即。“ABC”現在我正嘗試在 C# 中做同樣的事情。不幸的是,我得到的響應始終與我實際輸入的命令相同。因此,如果我輸入“PC”,則響應是“PC”,但我期望“ABC”。其他命令也有同樣的問題。命令 ”?” 回應“?” 而我期待的是“CBA”。如果我輸入錯誤的命令 => 然后我會收到消息“未知命令”所以我懷疑設備實際上獲得了正確的命令。我正在使用以下代碼: SerialPort COMport = new SerialPort(Port_Name, Baud_Rate); //Create a new SerialPort Object (defaullt setting -> 8N1) COMport.DataReceived += new SerialDataReceivedEventHandler(sPort_dataReceived); COMport.ErrorReceived += new SerialErrorReceivedEventHandler(sPort_ErrorReceived); COMport.BaudRate = 115200; COMport.Parity = Parity.None; COMport.DataBits = 8; COMport.StopBits = StopBits.One; COMport.RtsEnable = true; COMport.Handshake = Handshake.None; COMport.Open(); COMport.WriteLine(Data); Thread.Sleep(1000); // Just discovered after a lot of testing that this is necessary to read the response before the Comport closes COMport.Close(); 然后我執行以下操作: private void sPort_dataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string indata = sp.ReadExisting(); Console.WriteLine("Data Received:"); Console.Write(indata); MessageBox.Show(indata); }我嘗試過不同的事情,但我無法讓它發揮作用。希望這是因為我對此很陌生。我以前從未使用過 Tera term。
1 回答

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
新線似乎是一個問題。
我需要使用 Comport.Write (而不是 WriteLine)。然后我還需要附加一個回車符“\r”,但沒有換行符“\n”,正如我之前所想的那樣。(傳入的數據在“Command>”之后顯示了一個換行符,使得無法發送另一個有意義的命令=>原因是“\n”=>刪除它解決了問題)
這是我當前似乎有效的代碼(我不再需要附加“Command>”,只需按原樣發送命令):
if (thecommand == "")
{
ComPort.Write("\r"); //start from a clean slate
return;
}
ComPort.DiscardInBuffer();
ComPort.DiscardOutBuffer();
string Command1 = thecommand + "\r";
ComPort.Write(Command1);
- 1 回答
- 0 關注
- 223 瀏覽
添加回答
舉報
0/150
提交
取消