private void CanInterface_CapturePacketEvent(object sender, CanMessageEventArgs e) { if (FilterHeadString != "") { int pos = FilterHeads.IndexOf(e.msgInfo.DevPosition); if (pos < 0) { return; } } if (FilterMsgIdString != "") { int pos = FilterMessageIds.IndexOf(e.msgInfo.MsgId); if (pos < 0) { return; } } ListViewItem item = new ListViewItem(); item.Tag = e.msgInfo; item.Text = e.msgInfo.ID.ToString("X"); item.SubItems.Add(e.msgInfo.GetDataString()); item.SubItems.Add(e.msgInfo.DevPosition.ToString()); item.SubItems.Add(e.msgInfo.MsgType.ToString()); item.SubItems.Add(e.msgInfo.MsgId.ToString()); item.SubItems.Add(Hyrel.ProcessCanMessage(e.msgInfo.DevPosition, e.msgInfo.MsgId, e.msgInfo.data)); if (listView1.InvokeRequired) { listView1.Invoke((MethodInvoker) delegate() { listView1.Items.Add(item); listView1.Items[listView1.Items.Count - 1].EnsureVisible(); }); } else { listView1.Items.Add(item); listView1.Items[listView1.Items.Count - 1].EnsureVisible(); } }
unsafe public void CaptureCanPacketCallback(CANInterface ifc) { while (!IsDispose) { if (!IsCapturing) { continue; } UInt32 res = new UInt32(); res = VCI_Receive(USB_CAN2, 0, Channel, ref CanReceivedrecobj[0], MAX_RECEVIEDPACKETS, 100); for (UInt32 i = 0; i < res; i++) { if (CanReceivedrecobj[i].RemoteFlag == 1) { continue; } if (CanReceivedrecobj[i].ExternFlag != 1) { continue; } byte len = (byte)CanReceivedrecobj[i].DataLen; CANMESSAGEINFO msg = new CANMESSAGEINFO(); msg.DataLen = len; fixed(VCI_CAN_OBJ *recobj = &CanReceivedrecobj[i]) { msg.ID = recobj->ID; for (int k = 0; k < len; k++) { msg.data[k] = recobj->Data[k]; } } CanMessageEventArgs e = new CanMessageEventArgs(); e.msgInfo = msg; CapturePacketEvent?.Invoke(ifc, e); break; } Thread.Sleep(100); } }