/// <summary> /// Check if a Tranport Address belongs to the same network as this one. /// </summary> public override bool IsSameNetwork(TransportAddress ta) { if (ta == null || GetType() != ta.GetType()) { return(false); } SerialTransportAddress t = (SerialTransportAddress)ta; return(serialport == t.serialport); }
public virtual void Send(TransportAddress t, byte[] data) { byte[] tmp; SerialHeader header; if (data.Length > ushort.MaxValue) { throw new ArgumentOutOfRangeException("there are too many bytes to transmit"); } // Check if this message is going to use Acknowledgements if (((SerialTransportAddress)t).forceACK) { header = new SafeSerialHeader(); } else { header = new SerialHeader(); } header.length = (ushort)data.Length; if (header is SafeSerialHeader) { ((SafeSerialHeader)header).sequence = GetSequence(); } tmp = new byte[header.size + data.Length]; header.GetBytes().CopyTo(tmp, 0); data.CopyTo(tmp, header.size); header.CRC = SerialCRC.Calculate(tmp, (uint)tmp.Length); header.GetBytes().CopyTo(tmp, 0); if (header is SafeSerialHeader) { lock (SendBuffer) { SendBuffer.Add(sequence, new SafeData(tmp)); } } try { WriteToPort(tmp, 0, tmp.Length, header is SafeSerialHeader); } catch (Exception e) { throw e; } }
public void DataReceived(byte[] buffer, int offset, int length, TransportAddress t) { byte[] tmpBuff = new byte[length]; for (int i = 0; i < length; i++) { tmpBuff[i] = buffer[offset + i]; } object value; switch ((char)tmpBuff[0]) { case 't': switch ((char)tmpBuff[1]) { case 'S': value = ToShort(tmpBuff, 2); display.UpdateS1((short)value); break; case 's': value = ToShort(tmpBuff, 2); display.UpdateS2((short)value); break; case 'L': value = ToShort(tmpBuff, 2); display.UpdateL1((short)value); break; case 'l': value = ToShort(tmpBuff, 2); display.UpdateL2((short)value); break; default: break; } break; case 'p': switch ((char)tmpBuff[1]) { case 'x': value = ToDouble(tmpBuff, 2); display.SetPositionX((double)value); break; case 'y': value = ToDouble(tmpBuff, 2); display.SetPositionY((double)value); break; case 'a': value = ToDouble(tmpBuff, 2); display.SetPositionAngle((double)value); break; } break; case 'm': switch ((char)tmpBuff[1]) { case 'x': value = ToShort(tmpBuff, 2); display.SetMagX((short)value); break; case 'y': value = ToShort(tmpBuff, 2); display.SetMagY((short)value); break; case 'z': value = ToShort(tmpBuff, 2); display.SetMagZ((short)value); break; } break; case 'L': string message; switch ((char)tmpBuff[1]) { case 'D': //DEBUG ToString(tmpBuff, 2, out message); display.debug(message); break; case 'I': //INFO ToString(tmpBuff, 2, out message); display.info(message); break; case 'E': //ERROR ToString(tmpBuff, 2, out message); display.error(message); break; } break; case 'b': switch ((char)tmpBuff[1]) { case 'v': //voltage double voltage = ToDouble(tmpBuff, 2); display.setVoltage(voltage); break; case 'i': //current double current = ToDouble(tmpBuff, 2); display.setCurrent(current); break; case 'p': //percent ushort Rvoltage = ToUShort(tmpBuff, 2); display.setRVoltage(Rvoltage); break; case 'e': //estimation ushort estimation = ToUShort(tmpBuff, 2); display.setEstimation(estimation); break; } break; default: break; } }
/// <summary> /// Check if a Tranport Address belongs to the same network as this one. /// </summary> public override bool IsSameNetwork(TransportAddress ta) { if (ta == null || GetType() != ta.GetType()) return false; SerialTransportAddress t = (SerialTransportAddress)ta; return (serialport == t.serialport); }
public virtual void Send(TransportAddress t, byte[] data) { byte[] tmp; SerialHeader header; if (data.Length > ushort.MaxValue) throw new ArgumentOutOfRangeException("there are too many bytes to transmit"); // Check if this message is going to use Acknowledgements if (((SerialTransportAddress)t).forceACK) { header = new SafeSerialHeader(); } else { header = new SerialHeader(); } header.length = (ushort)data.Length; if (header is SafeSerialHeader) { ((SafeSerialHeader)header).sequence = GetSequence(); } tmp = new byte[header.size + data.Length]; header.GetBytes().CopyTo(tmp, 0); data.CopyTo(tmp, header.size); header.CRC = SerialCRC.Calculate(tmp, (uint)tmp.Length); header.GetBytes().CopyTo(tmp, 0); if (header is SafeSerialHeader) { lock (SendBuffer) { SendBuffer.Add(sequence, new SafeData(tmp)); } } try { WriteToPort(tmp, 0, tmp.Length, header is SafeSerialHeader); } catch (Exception e) { throw e; } }
/// <summary> /// Check if a Tranport Address belongs to the same network /// </summary> abstract public bool IsSameNetwork(TransportAddress ta);
/// <summary> /// Check if a Tranport Address belongs to the same network /// </summary> public abstract bool IsSameNetwork(TransportAddress ta);