Exemple #1
0
        /// <summary>
        /// udp pid_dataを取り込む。
        /// </summary>
        public void set_udp_pid_data(byte[] bytes, ref KV_PID_DATA kpd)
        {
            GCHandle gch = GCHandle.Alloc(bytes, GCHandleType.Pinned);

            kpd = (KV_PID_DATA)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(KV_PID_DATA));
            gch.Free();
        }
Exemple #2
0
        /// <summary>
        /// KV1000用byte列に変換 エンディアンも違う
        /// </summary>
        public byte[] ToBytes(KV_PID_DATA obj)
        {
            int    size = Marshal.SizeOf(typeof(KV_PID_DATA));
            IntPtr ptr  = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(obj, ptr, false);
            byte[] bytes = new byte[size];
            Marshal.Copy(ptr, bytes, 0, size);
            Marshal.FreeHGlobal(ptr);
            return(bytes);
        }
Exemple #3
0
        /// <summary>
        /// PID 受信データ処理
        /// </summary>
        private void Pid_Data_Set(KV_PID_DATA kpdr)
        {
            //IDがゼロでなければコピー
            if (kpdr.mt2_wide_id != 0)
            {
                kv_pid_data.mt2_wide_time = kpdr.mt2_wide_time;
                kv_pid_data.mt2_wide_id   = kpdr.mt2_wide_id;
                kv_pid_data.mt2_wide_az   = kpdr.mt2_wide_az;
                kv_pid_data.mt2_wide_alt  = kpdr.mt2_wide_alt;
                kv_pid_data.mt2_wide_vk   = kpdr.mt2_wide_vk;
            }
            if (kpdr.wide_id != 0)
            {
                kv_pid_data.wide_time = kpdr.wide_time;
                kv_pid_data.wide_id   = kpdr.wide_id;
                kv_pid_data.wide_az   = kpdr.wide_az;
                kv_pid_data.wide_alt  = kpdr.wide_alt;
                kv_pid_data.wide_vk   = kpdr.wide_vk;
            }
            if (kpdr.sf_id != 0)
            {
                kv_pid_data.sf_time = kpdr.sf_time;
                kv_pid_data.sf_id   = kpdr.sf_id;
                kv_pid_data.sf_az   = kpdr.sf_az;
                kv_pid_data.sf_alt  = kpdr.sf_alt;
                kv_pid_data.sf_vk   = kpdr.sf_vk;
            }
            if (kpdr.fine_id != 0)
            {
                kv_pid_data.fine_time = kpdr.fine_time;
                kv_pid_data.fine_id   = kpdr.fine_id;
                kv_pid_data.fine_az   = kpdr.fine_az;
                kv_pid_data.fine_alt  = kpdr.fine_alt;
                kv_pid_data.fine_vk   = kpdr.fine_vk;

                send_udp_data();
                udp_send_on = 0;
            }
        }