簡體   English   中英

如何將Java中的十六進制值發送到RS232串行端口

[英]how to send hexadecimal value in java to RS232 Serial port

我需要向我的微控制器發送一些命令。 我使用RXTX庫。 我可以連接到微控制器,但是在將命令轉換為正確的字節時遇到問題。

示例:我要發送0x80十六進制值。

如果我將128整數(0x80)轉換為字節

   byte a = (byte) 128;

我得到-128

Java字節的范圍是-128 - 127

但我需要發送128作為命令。 我該如何轉換?

我也有其他命令要發送。

80
20 F2 40 F8 3F 
FA 21 40 

其中之一是40位。

我寫到outputstream,可以接受byte[]int

...
  static OutputStream out;
out.write(byte[]);
out.write(int); 
..

但是int超出40bit范圍。 如何將40位整數解析為一個字節?

這個問題對我有幫助

不管Java的帶符號字節類型系統將其顯示為什么,0x80仍然是0x80。

只是發送。

我認為RXTX自由庫已經使用很久了,所以我認為這很重要。 只需發送string.getBytes()

您可以使用

Byte.parseByte("a", 16);

但這僅適用於最大為127的值,由於有符號/無符號問題,該值必須高於該值才能轉換為字節,因此我建議將其轉換為int然后轉換為字節

(byte) (Integer.parseInt("ef",16) & 0xff);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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