シリアルポートリスナーがあるサーブレットコンテキストリスナーがあります。このリスナーでは、次の方法でシリアル ポートからのバイトを保存します。
public void contextInitialized(ServletContextEvent contextEvent){
context = contextEvent.getServletContext();
serial = SerialFactory.createInstance();
serial.open(Serial.DEFAULT_COM_PORT, 19200);
serial.addListener(new SerialDataListener(){
@Override
public void dataReceived(SerialDataEvent arg0) {
private byte[] serialDataByte;
serialDataByte = arg0.getData().getBytes();
context.setAttribute("serialData", serialDataByte);
seriale.write(serialDataByte); //the echo on serial port show me the right bytes
}
});
}
私のコントローラーでは、次の方法でシリアルポートデータにアクセスします。
private byte[] temp;
temp = (byte[]) getServletContext().getAttribute("serialData");
for(int i=0; i<temp.length;i++){
output.println(Integer.toHexString(temp[i] & 0x00FF));
}
このバイト配列をシリアル ポートに送信します。
aa 7f 40 a 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 fe 1a
長さは 69 です。一時配列に、元の配列のほんの一部しかない場合もあります。
aa 7f 40 a 72 0 0 0 0 0 0 0 0 0 0
時折:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 fe 1a
そして時には69バイトの正しい配列。シリアルポートから取得した正確なデータをコントローラに渡すにはどうすればよいですか? 前もって感謝します