[英]Trying to write and read from the same com port, successful at writing, but failing at reading. Wat do?
我試圖從com端口獲取一些數據,就像我在上面寫數據一樣,但是事實證明它很難閱讀。 我設法找到一個簡單的代碼片段來讀取它,但是現在,我只讀取零。 可能是什么原因?
我將在下面發送我的代碼,並說明其預期用途。
private void ReadFromComPortActionPerformed(java.awt.event.ActionEvent evt) {
try {
String text = EmulatorInput.getText();
sendData(text, "COM4");
String out_Text = Arrays.toString(read());
EmulatorOutput.setText(out_Text);
System.out.println(out_Text);
} catch (IOException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
這是一個JButton,方法名稱和參數已由NetBeans創建。 代碼首先從輸入面板以字符串形式獲取文本,以com端口名稱發送該文本,連接至該端口,並由此打開輸入/輸出流,然后將從輸入面板獲取的字符串寫入到OutputStream。 然后,我創建一個名為out_Text
的新字符串,並使用read()
方法從端口讀取數據。
這是讀取方法;
private byte[] read() throws IOException {
byte[] buffer = new byte[16];
int total = 0, read = 0;
while (total <= 16 && (read = input.read(buffer, total, 16-total)) > 0) {
total += read;
}
return buffer;
}
在我發布的第一個方法使用read()
將其收斂為可以打印為字節數組的字符串之后,我最終僅得到一個零字節。
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
我對此感到非常困惑,因為我確定我已寫入端口。 我什至監視了我所寫的內容,並且可以看到,當我使用該程序將數據寫入com端口時,收到的數據增加了。
如果有不清楚的地方,或者您需要更多代碼,請通過注釋聯系。
非常感謝你。
經過幾次嘗試,我嘗試使用jSSC進行相同的操作,並設法再次寫入。 但是,我仍然無法閱讀。 然后我注意到,我正在創建成對的COM端口。 因此,簡單地,我開始寫一個端口,並從該端口對的另一個端口接收數據。 它像魅力一樣運作。 我不確定同一想法對rxtx庫是否有效,但是因為jSSC的文檔具有描述性,並且因為它易於使用,所以我切換到它以及工作方式。 您可以在沒有代碼的情況下找到我的詳細解釋。
PreStep >啟動此程序時,我的COM6和COM7完好無損。
步驟1 >通過jSSC的方法打開兩個端口。 我將它們構造為SerialPort,然后設置其參數(BaudRate,DataBits等)。
步驟2 >我開始從控制台獲取輸入,並將其寫入COM6。 當我監視端口及其中的字節時,每次發送輸入時它都在變化。
步驟3 >每次我按“ Enter”鍵發送輸入時,我都會從COM7對象調用一個讀取方法,它將向控制台發送一個字節數組(通過Arrays.toString(byte [] array)方法)。
我不知道為什么無法從與編寫相同的端口讀取內容,但是,我的問題已解決。 感謝您抽出寶貴時間閱讀此答案。 如有任何疑問,請將其張貼在此評論下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.