Exemplo n.º 1
0
        /*
        private static T ReadUsingMarshalUnsafe<T>(byte[] data) where T : struct
        {
            unsafe
            {
                fixed (byte* p = &data[0])
                {
                    return (T)Marshal.PtrToStructure(new IntPtr(p), typeof(T));
                }
            }
        }
        */
        void initializeDataPackets()
        {
            VData = new VesselData();
            VData.id = 1;

            HPacket = new HandShakePacket();
            HPacket.id = 0;
            HPacket.M1 = 1;
            HPacket.M2 = 2;
            HPacket.M3 = 3;

            CPacket = new ControlPacket();

            VControls.ControlGroup = new Boolean[11];
            VControlsOld.ControlGroup = new Boolean[11];
        }
Exemplo n.º 2
0
        private void HandShake()
        {
            HPacket = (HandShakePacket)ByteArrayToStructure(buffer, HPacket);

            //HPacket = ReadUsingMarshalUnsafe<HandShakePacket>(buffer);
            Debug.Log("KSPSerialIO: Handshake received - " + HPacket.M1.ToString() + HPacket.M2.ToString() + HPacket.M3.ToString());
        }
Exemplo n.º 3
0
        // same as Port_ReceivedEvent just without the event args
        public void ProcessData()
        {
            while (Port.IsOpen && Port.BytesToRead > 0)
            {
                if (processCOM ())
                {
                    switch (id)
                    {
                    case HSPid:
                        HPacket = (HandShakePacket)ByteArrayToStructure (buffer, HPacket);
                        Invoke ("HandShake", 0);

                        if ((HPacket.M1 == 3) && (HPacket.M2 == 1) && (HPacket.M3 == 4))
                        {
                            DisplayFound = true;
                        }
                        else
                        {
                            DisplayFound = false;
                        }
                        break;
                    case Cid:
                        VesselControls ();
                        //Invoke("VesselControls", 0);
                        break;
                    default:
                        Invoke ("Unimplemented", 0);
                        break;
                    }
                }
            }
        }
Exemplo n.º 4
0
        private void Port_ReceivedEvent(object sender, SerialDataReceivedEventArgs e)
        {
            while (Port.BytesToRead > 0)
            {
                if (processCOM ())
                {
                    switch (id)
                    {
                    case HSPid:
                        HPacket = (HandShakePacket)ByteArrayToStructure (buffer, HPacket);
                        Invoke ("HandShake", 0);

                        if ((HPacket.M1 == 3) && (HPacket.M2 == 1) && (HPacket.M3 == 4))
                        {
                            DisplayFound = true;
                        }
                        else
                        {
                            DisplayFound = false;
                        }
                        break;
                    case Cid:
                        VesselControls ();
                        //Invoke("VesselControls", 0);
                        break;
                    default:
                        Invoke ("Unimplemented", 0);
                        break;
                    }
                }
            }
        }
Exemplo n.º 5
0
        //This replace the event, we have to call that ourself + pass it from private to public
        public void EventCallDirectly()
        {
            Debug.Log ("KSPSerialIO : Calling our event, trying to read ...");
            Debug.Log (Port.BytesToRead);
            while (Port.BytesToRead > 0 && Port.IsOpen)
            {
                Debug.Log ("KSPSerialIO : Calling succefull ...");
                if (processCOM())
                {
                    switch (id)
                    {
                        case HSPid:
                            HPacket = (HandShakePacket)ByteArrayToStructure(buffer, HPacket);
                            Invoke("HandShake", 0);

                            if ((HPacket.M1 == 3) && (HPacket.M2 == 1) && (HPacket.M3 == 4))
                            {
                                DisplayFound = true;

                            }
                            else
                            {
                                DisplayFound = false;
                            }
                            break;
                        case Cid:
                            VesselControls();
                            //Invoke("VesselControls", 0);
                            break;
                        default:
                            Invoke("Unimplemented", 0);
                            break;
                    }
                }
            }
        }