Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
 /// <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);
 }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
        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;
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Check if a Tranport Address belongs to the same network
 /// </summary>
 abstract public bool IsSameNetwork(TransportAddress ta);
Ejemplo n.º 8
0
 /// <summary>
 /// Check if a Tranport Address belongs to the same network
 /// </summary>
 public abstract bool IsSameNetwork(TransportAddress ta);