Files
mxsc/plugins/LaserUE.java
gac-S_Changer c8c18059cb Closedown
2017-08-31 17:33:48 +02:00

87 lines
2.6 KiB
Java

import ch.psi.pshell.serial.SerialPortDevice;
import ch.psi.pshell.serial.SerialPortDeviceConfig;
import static ch.psi.utils.BitMask.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/*
*
*/
/**
*
*/
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.println("XXX");
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Starting");
while(!isClosed()){
try{
if (isInitialized()){
System.out.println("R");
int rx;
while ((rx = readByte()) >= 0) {
onByte((byte) rx);
}
}
} catch (Exception ex){
System.err.println(ex);
}
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(LaserUE.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("Quiting");
}
}).start();
}
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;
}
}
}
}