我在Java中從串口讀取數據時遇到了一個奇怪的問題。Java串口IO讀取
我已經通過在其中工作的罰款線程輪詢方法來讀取串口數據,但我有一個要求,我需要將數據寫入到串行端口和讀回ACK。將數據寫入串口是成功的,但我無法讀回數據。這裏有兩個讀取操作,一個在主線程中,另一個在主線程中。
一旦我接收串行寫入數據我暫停其從串行端口使用標誌讀取數據的線程,並開始再次一次寫入完成串口讀取數據,但我無法讀取數據。我寫操作後禁止讀取串口,並啓用線程讀取串口的線程,這裏我看到串口的ACK數據。
任何可以建議是怎麼回事錯這個串行讀操作?它不是緩衝讀/寫操作。
我不確定我遵循你的邏輯。你好像你一次從三個不同的線索閱讀,這聽起來不是一個好主意。 – gobernador
它不是三個不同的線程,而是兩個線程,一個線程輪詢連續讀取,另一個線程在主線程中讀取,只有當它執行寫操作時纔讀取 –
雖然我仍然不知道這個原因,但我相信我理解問題。我相信他是說主線程發送一個寫命令,並且有一個讀(ACK-Checker),之後應該看到一個ACK,並且在另一個線程(讓我們稱之爲「一般閱讀器」)中讀取一個讀做每一個其他的閱讀操作。問題似乎是,當他從主線程寫入時,該ACK檢查器沒有看到ACK。如果他禁用了「ACK-checker」,那麼「通用閱讀器」在進行正常輪詢(通常不應該)時會看到ACK。它是否正確? – Xantham