我有Button
获取ComboBox
的值并将其插入字符串以通过我的串口发送。由于某种原因,该值未插入到字符串中,但字符串的其余部分已正确构建。谁能告诉我为什么?
当我System.out.println(something);
时,它会正确打印在ComboBox
" 3"
这是我的按钮JavaFX.ActionEvent
@FXML
public void setPresetButton(ActionEvent event) {
byte _preset = (Byte) setPresetComboBox.getValue();
try {
something = presetNo[_preset - 1];
byte[] command = { (byte) setPresetX,setPresetS,something,0x20};
TwoWaySerialComm.SerialWriter sw = new TwoWaySerialComm.SerialWriter(
twoWaySerCom.serialPort.getOutputStream());
sw.out.write(command);
System.out.println(something);
} catch (IOException e) {
e.printStackTrace();
}
}
byte presetNo[] = { 0X01, 0X02, 0X03, 0X04, 0X05 };
byte something;
Byte[] preset = { 1, 2, 3, 4, 5 };
byte setPresetX = 0x78;
byte setPresetS = 0x73;
答案 0 :(得分:1)
您似乎将文本编码为ASCII并且还需要数字的字符,即'1'
,'2'
,...,'5'
(编码0x31
, 0x32
,0x33
,0x34
和0x35
)而不是标题开头,文本开头,文本结束,传输结束和查询的控制代码(请参阅{ {3}})。
如果您确实需要ASCII编码,可以使用String
进行编码:
String s = "xs" + something + ' ';
Charset charset = StandardCharsets.US_ASCII;
byte[] command = s.getBytes(charset);
或者,您也可以通过将'0'
添加到byte
值来获得正确的编码:
byte[] command = { (byte) setPresetX, setPresetS, (byte)(something + '0'), 0x20};