Esempio n. 1
0
        public void Receive()
        {
            if (Enabled == false || isSend == false)
            {
                return;
            }
            rxpA429Result.data = 0;
            Channel429DriverRx driverRx = (Channel429DriverRx)ChannelDriver;
            RxpA429            rxpA429  = new RxpA429();
            uint           maxRxp       = 1;
            int            rxpNum;
            WaitStatusA429 opt = WaitStatusA429.BHT_L1_OPT_NOWAIT;
            uint           ret = driverRx.ChannelRecvRx(out rxpA429, maxRxp, out rxpNum, opt);//这里设置为存储一个数据,那么可以操作的data只有一个

            if (ret != 0)
            {
                errCount++;
                RunningLog.Record(string.Format("return value is {0} when receive data", ret));
            }
            else if (rxpNum > 0 && ret == 0)
            {
                count++;
                rxpA429Result = rxpA429;//这里将out的数据保存到类中
                FileHelper.WriteLogForReceive(Convert.ToString(rxpA429.data, 2));
            }
            MibDataA429 mibDataA429;

            ret = driverRx.ChannelMibGetRx(out mibDataA429);
            if (ret != 0)
            {
                RunningLog.Record(string.Format("return value is {0} when ChannelMibGetRx data", ret));
            }
            DeviceCount    = mibDataA429.cnt;
            errDeviceCount = mibDataA429.err_cnt;
            if (IsFileSaveAllow)//如果允许保存文件,那么就执行这一步操作
            {
                DataProcessModule.Save(rxpA429, rxpNum);
            }
        }
Esempio n. 2
0
        //17. ChannelRecvRx            HandleRef rxpBuf为RxpA429类型
        public uint ChannelRecvRx(out RxpA429 rxpBuf, uint maxRxp, out int rxpNum,
                                  WaitStatusA429 opt)
        {
            IntPtr ptr = _rxpA429IntPtr;

            byte[] bytes = _rxpA429InitArray;

            //获取数据前清空,内存中的数据
            Marshal.Copy(bytes, 0, ptr, bytes.Length);
            Marshal.Copy(_rxpNumInitArray, 0, _rxpNumIntPtr, _rxpNumInitArray.Length);
            //调用方法,获取数据
            uint ret = NativeMethods429.ChannelRecvRx(DeviceID, ChannelID, ptr, maxRxp, _rxpNumIntPtr, opt);

            //转换非托管数据为托管数据
            rxpBuf = null;
            rxpNum = 0;
            if (ret == Normal)
            {
                rxpBuf = (RxpA429)Marshal.PtrToStructure(ptr, typeof(RxpA429));
                rxpNum = (int)Marshal.PtrToStructure(_rxpNumIntPtr, typeof(int));
            }
            return(ret);
        }
Esempio n. 3
0
 public static extern uint ChannelRecvRx(uint devID, uint chanID, IntPtr rxpBuf, uint maxRxp, IntPtr rxpNum, WaitStatusA429 opt);