public override bool Recv(byte[] buf) {
if(buf[0]==ADDR) {
if(buf[1]==0x10 && buf.Length==6) {
ushort n_gpi=(ushort)(buf[4] | (buf[5]<<8));
for(int i=0; i<16; i++) {
if(_pins[i]!=null && _pins[i].name[0]=='I') {
ushort mask=(ushort)(1<<i);
_pins[i].value=((n_gpi & mask)!=0);
}
}
_pins[16].value=true;
_pt=DateTime.Now.AddSeconds(_rand.Next(45, 75));
_busy=false;
} else {
_pins[16].value=false;
_pt=DateTime.Now.AddSeconds(_rand.Next(135, 165));
_busy=false;
}
_waitError=false;
_waitResp=false;
return true;
}
return false;
}
public override bool Poll(out byte[] buf) {