簡體   English   中英

嘗試從同一com口進行寫入和讀取,寫入成功,但讀取失敗。 嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM