Re: 關於 RS232 傳輸接收資料

看板java作者 (小安)時間17年前 (2008/07/31 03:40), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/7 (看更多)
※ 引述《poc7667 (poc)》之銘言: : 再寫有關這類的程式 : 我輸入的資料是從Java Text Area讀取 "86 00 00 00 01 82 05 " : 類似這樣的字串 : 然後就直接給他寫入 : outputStream.write(output.getText().getBytes()); : 在Java Text Area資料格式應該是字串,RS232應該是吃"16進位數值資料" : 這樣直接丟過去會不會有錯呢?or應該如何做個轉換才好。 你自己都說是收數值資料囉 :) 以 "86" 來說,這是兩個 unicode 字元, 在記憶體中的值為 0x0038 和 0x0036 ( 印象中 Java 是 big-endian? 若有錯請指正 ) 而所謂的數值 86, 就真的是 16 進位中的 86, 在記憶體中的值就是 0x86 所以你寫入的值確實是有問題的, 如果要自己轉成 "數值" 86, 你可能會需要用到 String 和 Integer 所提供的方法。 讀的部份也是一樣, 從 RS232 收到的是數值, 必須自己轉成 unicode, 才會是你想要看到的數字字串。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.169.116 ※ 編輯: tkcn 來自: 61.230.169.116 (07/31 03:42)

07/31 10:48, , 1F
java是big endian沒錯, 我之前有去看過 . @see #161cst5-
07/31 10:48, 1F

07/31 14:20, , 2F
寫到檔案確定是big-endian沒錯,但我不敢肯定記憶體中也是
07/31 14:20, 2F
文章代碼(AID): #18aCEH0y (java)
討論串 (同標題文章)
文章代碼(AID): #18aCEH0y (java)