我想从串行通信中分割数据并将其传递到表

时间:2015-02-11 04:17:09

标签: java database split serial-communication

我想用这种格式分割数据串行

<STX> data1<FS> Data2<FS> Data3<FS> ...Data_n<FS>Checksum<ETX>

其中

  • STX为十六进制的0x02
  • FS为十六进制的0x1C
  • ETX在十六进制中是0x03

然后我需要将它发送到数据库表

我使用RXTX库并按字节值获取结果。

有人可以帮助并与我分享如何做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我用丑陋的方式得到结果我认为但真正的问题是我只想从数组[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");
                    }
            }
        }