private void btn_opencan_Click(object sender, EventArgs e) { if (m_bOpen == 1) { CanToolsHelper.CloseCan(); canrec_thread.Abort(); m_bOpen = 0; } else { int ret = CanToolsHelper.OpenCan(); if (ret == -1) { MessageBox.Show("Open USBCAN Failed!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (ret == -2) { MessageBox.Show("USBCAN Init Failed!!", "ERROR" , MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (ret == -3) { MessageBox.Show("USBCAN Start Failed!", "ERROR" , MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } m_bOpen = 1; //启动一个CAN数据接收线程 canrec_thread = new Thread(Rec_data); canrec_thread.Start(); } btn_opencan.Text = m_bOpen == 1 ? "关闭CAN" : "打开CAN"; timer_rec.Enabled = m_bOpen == 1 ? true : false; }
/// <summary> /// 摘要:每隔30ms读取一次can数据,并将数据存储到队列中 /// </summary> public void Rec_data() { string str = ""; while (m_bOpen == 1) { str = CanToolsHelper.CanReceive(); cq.Enqueue(str); Thread.Sleep(30); } }