public byte[] GetByte(ShiJiaZhuangGps body)
        {
            //得到结构体的大小
            int size = Marshal.SizeOf(body);

            //创建byte数组
            byte[] bytes = new byte[size];
            //分配结构体大小的内存空间
            IntPtr structPtr = Marshal.AllocHGlobal(size);

            //将结构体拷到分配好的内存空间
            Marshal.StructureToPtr(body, structPtr, false);
            //从内存空间拷到byte数组
            Marshal.Copy(structPtr, bytes, 0, size);
            //释放内存空间
            Marshal.FreeHGlobal(structPtr);
            //返回byte数组
            return(bytes);
        }
Esempio n. 2
0
        public Plugin(PluginModel pModel, bool threadStart)
        {
            if (pModel == null)
            {
                throw new NullReferenceException("null reference");
            }
            byte[] boteHead = new byte[2];
            boteHead[0]       = 0x22;
            boteHead[1]       = 0x00;
            ShiJiaZhuangPro   = new ShiJiaZhuangProtocol();
            ShiJiaZhuangGPS   = new ShiJiaZhuangGps();
            ShiJiaZhuangTHead = new ShiJiaZhuangTHead();

            ShiJiaZhuangTHead.wHeader     = 0xAAAA;
            ShiJiaZhuangTHead.cmdFlag     = 0xCCCC;
            ShiJiaZhuangTHead.versionFlag = 0x0022;
            ShiJiaZhuangTHead.bodyLength  = System.Net.IPAddress.HostToNetworkOrder(51);

            ShiJiaZhuangTBody = new ShiJiaZhuangTBody();

            TranLimit       = 1000;
            this.pModel     = pModel;
            status          = 1;
            isSlow          = 0;
            isStop          = false;
            statistics      = 0;
            enabled         = pModel.Enabled;
            debugEnabled    = false;
            ShiJiaZhuangpro = new ShiJiaZhuangProtocol();

            if (threadStart)
            {
                this.dealDataThread = new Thread(new ThreadStart(Run));
                this.dealDataThread.Start();
            }
        }