Beispiel #1
0
        public void Write(byte[] data)
        {
            var niTx = new NiCan.NCTYPE_CAN_FRAME();

            if (ExtendedId)
            {
                niTx.ArbitrationId = TransmittId | 0x20000000;
            }
            else
            {
                niTx.ArbitrationId = TransmittId;
            }
            niTx.DataLength = 8;
            niTx.IsRemote   = NiCan.NC_FALSE;
            niTx.Data0      = data[0];
            niTx.Data1      = data[1];
            niTx.Data2      = data[2];
            niTx.Data3      = data[3];
            niTx.Data4      = data[4];
            niTx.Data5      = data[5];
            niTx.Data6      = data[6];
            niTx.Data7      = data[7];
            NiCan.ncWrite(_handle, NiCan.CanFrameSize, ref niTx);
            IoLog.Instance.WirteLine("Tx: 0x" + niTx.ArbitrationId.ToString("X4") + " " + Tools.ByteArrayToCStyleString(data));
        }
Beispiel #2
0
        public void RestartCard(byte moduleAddress)
        {
            IoLog.Instance.WirteLine("Restart Module:" + moduleAddress);
            var niTx = new NiCan.NCTYPE_CAN_FRAME();

            niTx.ArbitrationId = 0x1558FFFF | 0x20000000;
            niTx.DataLength    = 2;
            niTx.IsRemote      = NiCan.NC_FALSE;
            niTx.Data0         = 0xAA;
            niTx.Data1         = moduleAddress;
            NiCan.ncWrite(_handle, NiCan.CanFrameSize, ref niTx);
            IoLog.Instance.WirteLine("Tx: 0x" + niTx.ArbitrationId.ToString("X4") + " "
                                     + Tools.ByteArrayToCStyleString(new byte[] { niTx.Data0, niTx.Data1 }));
        }
Beispiel #3
0
        public void Read(out byte[] data, int tiemoutMs)
        {
            int  items     = 0;
            long startTick = DateTime.Now.Ticks;

            data = null;
            var  rx      = new NiCan.NCTYPE_CAN_STRUCT();
            bool isFound = false;

            do
            {
                if (DateTime.Now.Ticks - startTick > tiemoutMs * 10000)
                {
                    throw new Iso15765TimeoutException("P2 Max Expired,Read Timeout.");
                }

                items = NiCanTools.ReadPending(_handle);
                if (items != 0)
                {
                    for (int i = 0; i < items; i++)
                    {
                        NiCanTools.NiCanStatusCheck(NiCan.ncRead(_handle, NiCan.CanStructSize, ref rx));
                        UInt32 arbId    = rx.ArbitrationId & 0x1FFFFFFF;
                        byte[] datatemp = new byte[]
                        { rx.Data0,
                          rx.Data1,
                          rx.Data2,
                          rx.Data3,
                          rx.Data4,
                          rx.Data5,
                          rx.Data6,
                          rx.Data7, };
                        data = new byte[rx.DataLength];
                        Buffer.BlockCopy(datatemp, 0, data, 0, rx.DataLength);
                        IoLog.Instance.WirteLine("Rx: 0x" + arbId.ToString("X4") + " " + "Data:" + Tools.ByteArrayToCStyleString(data));
                        if (arbId == ReceiveId)
                        {
                            isFound = true;
                        }
                    }
                }
            } while (!isFound);
        }