コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: Micke3rd/hvdk
        //for converting a struct to byte array
        public static byte[] getBytesGDJ(GetDataJoy gdj, int size)
        {
            var arr = new byte[size];
            var ptr = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(gdj, ptr, false);
            Marshal.Copy(ptr, arr, 0, size);
            Marshal.FreeHGlobal(ptr);
            return(arr);
        }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: Micke3rd/hvdk
        //for converting a byte array to struct
        static GetDataJoy fromBytes(byte[] arr)
        {
            var str  = new GetDataJoy();
            var size = Marshal.SizeOf(str);
            var ptr  = Marshal.AllocHGlobal(size);

            Marshal.Copy(arr, 0, ptr, size);
            str = (GetDataJoy)Marshal.PtrToStructure(ptr, str.GetType());
            Marshal.FreeHGlobal(ptr);
            return(str);
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: Micke3rd/hvdk
        //here we get data from the joystick
        void Get_Data_From_Joystick()
        {
            var JoyData = new GetDataJoy();
            //convert struct to buffer
            var buf = getBytesGDJ(JoyData, Marshal.SizeOf(JoyData));

            //send empty buffer to driver
            HID.ReadData(buf, (uint)Marshal.SizeOf(JoyData));
            var jd = fromBytes(buf);

            pbX.Value         = jd.X;
            pbY.Value         = jd.Y;
            pbZ.Value         = jd.Z;
            pbrX.Value        = jd.rX;
            pbrY.Value        = jd.rY;
            pbrZ.Value        = jd.rZ;
            pbSlider.Value    = jd.slider;
            pbWheel.Value     = jd.wheel;
            pbDial.Value      = jd.dial;
            lbHatData.Content = jd.hat.ToString();
            //let's convert the button bit array to two strings for display
            string s;

            s = Convert.ToString(jd.btn0, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn1, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn2, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn3, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn4, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn5, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn6, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn7, 2).PadLeft(8, '0');
            lbButtonsData1.Content = s;
            s = Convert.ToString(jd.btn8, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn9, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn10, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn11, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn12, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn13, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn14, 2).PadLeft(8, '0');
            s = s + " " + Convert.ToString(jd.btn15, 2).PadLeft(8, '0');
            lbButtonsData2.Content = s;
        }