Re: 關於 RS232 傳輸接收資料
※ 引述《tkcn (小安)》之銘言:
: ※ 引述《poc7667 (poc)》之銘言:
: : 謝謝你的解答,現在我還在困惑,要怎麼解決!
: : eg: "88 7F 00 00 07 82"
: : 我把他中間的空白自動split
: : String str= output.getText();
: : String sentBuf[] = str.split(" ");
: : 理論上 sentBuf[0]="88".......sentBuf[5]="82"
: : 因為中間有"7F"
: : 我又做了這樣轉換
: : For(0 to last)
: : int k=Integer.parseInt(sentBuf[i],16);
: : sentBuf[i]=Integer.toString(k);
: 這裡你又把他轉成十進位字串了 @@
: 實際上你該傳的就是 value,不是字串。
意思是說int k=Integer.parseInt(sentBuf[i],16);
之後就直接 outputStream.write(k);出去了嗎?
這邊就算先把他轉成binaryString 再去parse他,直接丟出去,
應該也不影響結果吧?
16進位,2進位,最終出去都是signal
只是給人看的而已!
endian問題我自己是有寫一個程式
可以把字串
8D 00 00 00 01 81 0D轉成
D0 18 10 00 00 00 D8
後續的再加轉換成Int動作。
不過現在問題仍無法解決
http://tinyurl.com/3o7u54
麻煩板友提供點意見 3Q
: : 經過這段code:sentBuf[1]= "7F" 應該會被轉換成 sentBuf[1]="127"
: : 接著我就把split好且轉成的十進位丟進去給他吃。
: : tmp=sentBuf[i].getBytes();
: : outputStream.write(tmp);
: : //EndFor
: : 剛剛板友,您提到要做轉換以及 LowByte HighByte的Endian這點我不懂要如何做
: 我想這與 big-endian 無關,
: : sentBuf[1]="7F" 想辦法把他回文成 "F7"字串存回去?
: 完全不是這樣 Orz
: 先 google 一下 endian 吧,
: 不過我還是認為,你的問題與 endian 無關,
: 把 16 進位字串轉成 value 之後,直接輸出就好了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.199.27
討論串 (同標題文章)