Exemplo n.º 1
0
        public static void Read()
        {
            NCTYPE_CAN_STRUCT  _STRUCT = new NCTYPE_CAN_STRUCT();
            NCTYPE_CAN_STRUCT *p       = &_STRUCT;
            int size = sizeof(NCTYPE_CAN_STRUCT);

            ncRead(pObjHandlePtr, size, p);
            DateTime date = DateTime.FromFileTime((long)p->Timestamp);

            Console.Write("Timestamp:{0}\t", date);
            Console.Write("Id:{0:X2}\t", p->ArbitrationId);
            Console.Write("FrameType:{0:X2}\t", p->FrameType);
            Console.Write("Length:{0:X2}\t", p->DataLength);
            byte *pdata = p->Data;

            for (int i = 0; i < 8; i++)
            {
                Console.Write("{0:X2}" + " ", *pdata);
                pdata++;
            }
            Console.WriteLine();
        }
Exemplo n.º 2
0
        public static void ReadMult()
        {
            //读取多帧只是依次读取多帧,导致不能实时读到发送后的值,需在一段时间内读去查询值。
            var cancelTokenSource = new CancellationTokenSource(1000);

            while (!cancelTokenSource.IsCancellationRequested)//设置读取超时
            {
                NCTYPE_CAN_STRUCT[] _STRUCT1 = new NCTYPE_CAN_STRUCT[150];
                fixed(NCTYPE_CAN_STRUCT *p = _STRUCT1)                      //指针指向数组的首指针
                {
                    NCTYPE_CAN_STRUCT *pp = p;                              //fixed语句的指针不能移动需赋值给新指针才可操作。
                    int szie = sizeof(NCTYPE_CAN_STRUCT) * _STRUCT1.Length; //结构体数组的总元素个数。

                    ncReadMult(pObjHandlePtr, szie, pp, ref pActualDataSize);
                    pActualDataSize = pActualDataSize / (uint)sizeof(NCTYPE_CAN_STRUCT);
                    for (int i = 0; i < pActualDataSize; i++)
                    {
                        if (pp->ArbitrationId == 0x7ab)
                        {
                            DateTime date = DateTime.FromFileTime((long)pp->Timestamp);
                            Console.Write("Timestamp:{0}\t", date);
                            Console.Write("Id:{0:X2}\t", pp->ArbitrationId);
                            Console.Write("FrameType:{0:X2}\t", pp->FrameType);
                            Console.Write("Length:{0:X2}\t", pp->DataLength);
                            byte *pdata = pp->Data;
                            for (int t = 0; t < 8; t++)
                            {
                                Console.Write("{0:X2}" + " ", *pdata);
                                pdata++;
                            }
                            Console.WriteLine();
                        }
                        pp++;//指针操作地址加一(数组的下一个元素)
                    }
                }
            }
        }
Exemplo n.º 3
0
 static extern int ncWriteMult(ulong ObjHandle, ulong DataSize, NCTYPE_CAN_STRUCT *DataPtr);
Exemplo n.º 4
0
 static extern int ncReadMult(uint ObjHandle, int SizeofData, NCTYPE_CAN_STRUCT *DataPtr, ref uint ActualDataSize);
Exemplo n.º 5
0
 static extern int ncRead(uint ObjHandle, int DataSize, NCTYPE_CAN_STRUCT *DataPtr);