我想用这种格式分割数据序列
<STX> data1<FS> Data2<FS> Data3<FS> ...Data_n<FS>Checksum<ETX>
哪里
- STX 是十六进制的 0x02
- FS 是十六进制的 0x1C
- ETX 的十六进制为 0x03
然后我需要将其发送到数据库表
我使用 RXTX 库并按字节值获取结果。
有人可以帮助并与我分享如何做到这一点吗?
最佳答案
我以丑陋的方式得到了结果,但真正的问题是我只想从数组 [2] 输入数据数组直到长度 -2。现在(我设置了 60 个静态数组长度),但数据将始终是数组中的动态长度。有办法解决这个问题吗?我听说过列表数据类型,但我认为它更难。
public Constructor(GUI window)
{
this.dump = new String[60];
this.window = window;
}
int i = 0; String[] dump; boolean begin = false,first=true;
public void serialEvent(SerialPortEvent evt) {
if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE)
{
try
{
byte singleData = (byte)input.read();
if (singleData == 2){
begin =true; i=0;
}
if (singleData == 3){
begin = false; writeData();
}
if (begin == true){
if (singleData != 28 && singleData!=2 ){
if(dump[i]!=null && first==false){
dump[i]=dump[i]+ new String(new byte[] {singleData});
}
if(dump[i]==null){
dump[i]=new String(new byte[] {singleData});
first=false;
}
}
if (singleData==28){
System.out.println(dump[i] + " No." + i );
first=true;
i++;
}
}
}
catch (Exception e)
{
logText = "Failed to read data. (" + e.toString() + ")";
window.txtLog.setForeground(Color.red);
window.txtLog.append(logText + "\n");
}
}
}
关于java - 我想从串行通信中分离数据并将其传递到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446527/