【问题标题】:Part of a string not getting inserted字符串的一部分没有被插入
【发布时间】:2016-08-17 09:54:31
【问题描述】:

我有一个Button,它获取ComboBox 的值并将其插入到字符串中以通过我的串行端口发送。由于某种原因,该值未插入到字符串中,但字符串的其余部分已正确构建。谁能告诉我为什么?

当 i 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;

【问题讨论】:

  • 你的组合框是什么类型的?
  • 它的private ComboBox<Byte> getPresetComboBox;
  • bytes 0x01-0x05 非常小。它们是否应该将数字包含为(8 位)字符,还是您故意发送控制字符(SOH、STX、ETX、EOT 或 ENQ)?
  • 我只是想在一个字符串中发送 3 个字符。例如,XS1 将是“设置预设 1”。我使用的协议没有 STX、ETX 校验和等。

标签: java javafx combobox


【解决方案1】:

您似乎将文本编码为 ASCII 并且还需要数字字符,即 '1''2'、...、'5'(编码 0x310x320x330x340x35) 而不是标题开始、文本开始、文本结束、传输结束和查询的控制代码(请参阅Control Codes)。

如果您确实需要 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};

【讨论】:

  • 我刚刚从另一个工作示例byte[] command = { (byte) startTx, address, byteOne, goPreset, 0x00, something, endTx, 0x0F }; 复制粘贴代码,这是一个典型的 485- 8byte PelcoP 字符串。我正在使用新的“FLIR”协议,它声明原始 ASCII,我尝试发送的 ascii 字符只是“SX1”,用于“设置预设 1”。 Combobox 显示 ASCII 表示,以方便用户使用。
  • 这个想法是,用户可以通过从ComboBox 中选择数字然后点击setpresetButton 来将位置保存到他们选择的“预设”以供以后调用
  • "XS1".getBytes(Charset.forName("US-ASCII")) 应该为您提供编码为 ASCII 的 XS1。顺便说一句,0x730x78小写 sx。不过我不熟悉 FLIR 协议...
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2022-11-29
  • 2018-05-25
相关资源
最近更新 更多