字符串的一部分未插入

时间:2016-08-17 09:54:32

标签: java javafx combobox

我有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;

1 个答案:

答案 0 :(得分:1)

您似乎将文本编码为ASCII并且还需要数字的字符,即'1''2',...,'5'(编码0x310x320x330x340x35)而不是标题开头,文本开头,文本结束,传输结束和查询的控制代码(请参阅{ {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};