import ch.psi.pshell.serial.SerialPortDevice; import ch.psi.pshell.serial.SerialPortDeviceConfig; import static ch.psi.utils.BitMask.*; import java.io.IOException; /* * */ /** * */ public class LaserUE extends SerialPortDevice{ public LaserUE(String name, String port) { super(name, port, 921600, SerialPortDeviceConfig.DataBits.DB_8, SerialPortDeviceConfig.StopBits.SB_1, SerialPortDeviceConfig.Parity.None); this.setMode(Mode.FullDuplex); System.out.print("XXX"); } int value = 0; int count = 0; @Override protected int readByte() throws IOException { int ret = super.readByte(); System.out.print(ret); return ret; } @Override protected void onByte(int rx) { //System.out.print(rx); if (rx < 0) { count = 0; } else { int index = ((rx&BIT7) > 0) ? 2 : (((rx&BIT6) > 0) ? 1 : 0); if (count==index){ if (index ==0){ value = rx & 0x3F; } else if (index ==1){ value = ((rx& 0x3F)<<6) + value; } else if (index ==2){ value = ((rx& 0x0F)<<12) + value; this.setCache(value); count = 0; } else { count = 0; } } else{ count = 0; } } } }