Exemplo n.º 1
0
        //一次可以发送一条数据
        public static void Transmit1()
        {
            byte[] dataValue1 = new byte[8] {
                0xEC, 0xA0, 0x45, 0x2D, 0x43, 0x61, 0x72, 0x78
            };
            _VCI_CAN_OBJ nCTYPE_CAN_FRAME1 = new _VCI_CAN_OBJ();

            nCTYPE_CAN_FRAME1.ID         = 0x77a;//帧ID
            nCTYPE_CAN_FRAME1.SendType   = 0;
            nCTYPE_CAN_FRAME1.RemoteFlag = 0;
            nCTYPE_CAN_FRAME1.ExternFlag = 0;
            nCTYPE_CAN_FRAME1.DataLen    = 8;
            fixed(byte *pdata = dataValue1)
            {
                byte *pnewdata = pdata;

                for (int d = 0; d < 8; d++)
                {
                    nCTYPE_CAN_FRAME1.Data[d] = *pnewdata;
                    pnewdata++;
                }
            }

            {
                _VCI_CAN_OBJ *pcanObj     = &nCTYPE_CAN_FRAME1;
                _VCI_CAN_OBJ *pNewcanObj  = pcanObj;
                int           szie        = sizeof(_VCI_CAN_OBJ);
                uint          FrameNumber = VCI_Transmit(DeviceType, DeviceInd, CANInd, pNewcanObj, 2);
            }
        }
Exemplo n.º 2
0
        //拼装多条数据
        private static List <_VCI_CAN_OBJ> NewMethod(List <byte[]> data)
        {
            List <_VCI_CAN_OBJ> nCTYPE_CAN_FRAMEs = new List <_VCI_CAN_OBJ>();
            _VCI_CAN_OBJ        nCTYPE_CAN_FRAME1 = new _VCI_CAN_OBJ();

            for (int i = 0; i < data.Count; i++)
            {
                nCTYPE_CAN_FRAME1.ID         = 0x77A;//帧ID
                nCTYPE_CAN_FRAME1.SendType   = 0;
                nCTYPE_CAN_FRAME1.RemoteFlag = 0;
                nCTYPE_CAN_FRAME1.ExternFlag = 0;
                nCTYPE_CAN_FRAME1.DataLen    = 8;
                fixed(byte *pdata = data[i])
                {
                    byte *pnewdata = pdata;

                    for (int d = 0; d < 8; d++)
                    {
                        nCTYPE_CAN_FRAME1.Data[d] = *pnewdata;
                        pnewdata++;
                    }
                }

                nCTYPE_CAN_FRAMEs.Add(nCTYPE_CAN_FRAME1);
            }
            return(nCTYPE_CAN_FRAMEs);
        }
Exemplo n.º 3
0
        //一次可以发送多条数据
        public static void Transmit()
        {
            //byte[] dataValue1 = new byte[8] { 0x00, 0x74, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 };
            //byte[] dataValue2 = new byte[8] { 0x00, 0x74, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 };
            //byte[] dataValue3 = new byte[8] { 0x00, 0x74, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00 };

            byte[] dataValue1 = new byte[8] {
                0xEC, 0xA0, 0x45, 0x2D, 0x43, 0x61, 0x72, 0x78
            };
            byte[] dataValue2 = new byte[8] {
                0x11, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };
            List <byte[]> MultFrameValue = new List <byte[]>();

            MultFrameValue.Add(dataValue1);
            //MultFrameValue.Add(dataValue2);
            //MultFrameValue.Add(dataValue3);
            List <_VCI_CAN_OBJ> nCTYPE_CAN_FRAMEs = NewMethod(MultFrameValue);

            _VCI_CAN_OBJ[] canObj = new _VCI_CAN_OBJ[2];
            fixed(_VCI_CAN_OBJ *pcanObj = nCTYPE_CAN_FRAMEs.ToArray())
            {
                _VCI_CAN_OBJ *pNewcanObj  = pcanObj;
                int           szie        = sizeof(_VCI_CAN_OBJ) * canObj.Length;
                uint          FrameNumber = VCI_Transmit(DeviceType, DeviceInd, CANInd, pNewcanObj, 2);
            }
        }
Exemplo n.º 4
0
        //一次可以发送多条数据
        public static void Transmit()
        {
            //EC A0 45 2D 43 61 72 78
            byte[] dataValue1 = new byte[8] {
                0xEC, 0xA0, 0x45, 0x2D, 0x43, 0x61, 0x72, 0x78
            };
            //byte[] dataValue1 = new byte[8] { 0x11, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
            //byte[] dataValue3 = new byte[8] { 0x00, 0x74, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00 };
            //List<byte[]> MultFrameValue = new List<byte[]>();
            //MultFrameValue.Add(dataValue1);
            ////MultFrameValue.Add(dataValue2);
            ////MultFrameValue.Add(dataValue3);
            //List<_VCI_CAN_OBJ> nCTYPE_CAN_FRAMEs = NewMethod(MultFrameValue);
            //_VCI_CAN_OBJ[] canObj = new _VCI_CAN_OBJ[1];
            //fixed (_VCI_CAN_OBJ* pcanObj = nCTYPE_CAN_FRAMEs.ToArray())
            //{
            //    _VCI_CAN_OBJ* pNewcanObj = pcanObj;
            //    int szie = sizeof(_VCI_CAN_OBJ) * canObj.Length;
            //    uint FrameNumber = VCI_Transmit(DeviceType, DeviceInd, CANInd, pNewcanObj, 1);
            //}


            _VCI_CAN_OBJ nCTYPE_CAN_FRAME1 = new _VCI_CAN_OBJ();

            nCTYPE_CAN_FRAME1.ID         = 0x77A;//帧ID
            nCTYPE_CAN_FRAME1.SendType   = 0;
            nCTYPE_CAN_FRAME1.RemoteFlag = 0;
            nCTYPE_CAN_FRAME1.ExternFlag = 0;
            nCTYPE_CAN_FRAME1.DataLen    = 8;
            for (int d = 0; d < 8; d++)
            {
                nCTYPE_CAN_FRAME1.Data[d] = dataValue1[d];
            }

            _VCI_CAN_OBJ *pcanObj     = &nCTYPE_CAN_FRAME1;
            int           szie        = sizeof(_VCI_CAN_OBJ);
            uint          FrameNumber = VCI_Transmit(DeviceType, DeviceInd, CANInd, pcanObj, 1);
        }
Exemplo n.º 5
0
        //一次可以接收多条数据
        public static void Receive()
        {
            //读取多帧只是依次读取多帧,导致不能实时读到发送后的值,需在一段时间内读去查询值。
            var cancelTokenSource = new CancellationTokenSource(500);

            while (!cancelTokenSource.IsCancellationRequested)//设置读取超时
            {
                uint           dataNumber = VCI_GetReceiveNum(DeviceType, DeviceInd, CANInd);
                _VCI_CAN_OBJ[] canObj     = new _VCI_CAN_OBJ[100];
                fixed(_VCI_CAN_OBJ *pcanObj = canObj)
                {
                    _VCI_CAN_OBJ *pNewcanObj  = pcanObj;
                    int           szie        = sizeof(_VCI_CAN_OBJ) * canObj.Length;
                    uint          FrameNumber = VCI_Receive(DeviceType, DeviceInd, CANInd, pcanObj, 100, 400);

                    for (int i = 0; i < FrameNumber; i++)
                    {
                        if (pNewcanObj->ID == 0x77b)
                        {
                            DateTime date = DateTime.FromFileTime(pNewcanObj->TimeStamp);
                            Console.Write("Timestamp:{0}\t", date);
                            Console.Write("Id:{0:X2}\t", pNewcanObj->ID);
                            Console.Write("FrameType:{0:X2}\t", pNewcanObj->RemoteFlag);
                            Console.Write("Length:{0:X2}\t", pNewcanObj->DataLen);
                            byte *pdata = pNewcanObj->Data;
                            for (int t = 0; t < 8; t++)
                            {
                                Console.Write("{0:X2}" + " ", *pdata);
                                pdata++;
                            }
                            pNewcanObj++;
                            Console.WriteLine();
                        }
                    }
                }
            }
        }