亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 C# 中復制 Tera Term SerialPort 命令?

如何在 C# 中復制 Tera Term SerialPort 命令?

C#
智慧大石 2023-09-16 16:09:49
在 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);


查看完整回答
反對 回復 2023-09-16
  • 1 回答
  • 0 關注
  • 223 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號