2011-04-09 63 views
0

問題閱讀:試圖通過Java從Java COMPORT

從使用COMPORT一些電子秤讀我試圖從使用Java的COM端口讀取。到目前爲止,我已經成功地創建了一個使用Java SerialPort和InputStream類從comport讀取的小型應用程序。

該應用程序使用SerialPortEventListener來偵聽通過計算器的比例發送到計算機的事件。到目前爲止,我已經通過事件監聽器裏的InputStream讀取來自COMPORT一些字節取得了一些成功,但是輸出沒有任何意義,我不斷收到消息的形式:

[[email protected] 

[[email protected] 

爲了闡明我在屏幕上接收這些消息時,我與秤的鍵盤進行交互。我只需要一些正確解釋輸出的幫助。我是否使用正確的類來讀取和寫入comport?

回答

1

您已經將數據讀入一個byte[],然後試圖利用System.out.println(data)其中data聲明byte[] data轉儲它。不幸的是,只會打印數組的內部表示形式,這是無用的,'['後面跟着十六進制哈希碼。

取而代之,您想要轉儲數組的內容。使用

System.out.println(Arrays.toString(data)) 

是最適合您的最簡單的方法。否則,您需要迭代數組,並打印每個字節,或者使用例如new String(data)(它將使用平臺默認編碼)將字節數組轉換爲String

1

這些看起來像打印字節數組對象作爲原始對象引用的結果。所以你的電話很可能會對System.out.something或System.err.something產生混淆。

0

你在那裏的對象顯然是一個字節數組。我把它拿到物體上並打印到控制檯上。 請參見:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#getName() 和:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString()

+0

是的,這是正確的,有沒有更好的方式來獲取從comport發送的數據?我應該使用InputStreamReader還是什麼? – 2011-04-09 00:33:49

+0

很大程度上取決於規模傳輸的內容以及您要做什麼。 (這是你的問題的代碼也可以幫助你)你可能能夠遍歷該字節數組來獲取內容。 [InputStreamReader](http://download.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html)是獲得一串字節 - >一串字符(你必須提供一個字符集)。 – Charlie 2011-04-09 00:41:05

+0

噢好吧...讓我試試看看會發生什麼。我無法提供代碼,因爲它在另一臺機器上。感謝您的反饋。 – 2011-04-09 00:44:03