public bool Receive(out CAN_OBJ obj, uint timeout = 0) { return(ECANStatus.STATUS_OK == ECANDLL.Receive(DefaultDeviceType, 0, 0, out obj, 1, timeout)); }
/// <summary> /// open and close can device, baud is 500kbps /// </summary> private void canOpenClose() { if (m_connect == 1) { m_connect = 0; this.mCan.EnableProc = false; this.mCan.EnableProc2 = false; this.can_device_open = false; ECANDLL.CloseDevice(1, 0); btnInit.Text = "打开CAN"; this.can_device_open = false; this.stopAllThread(); /* * btnReset.Enabled = false; * btnWrite.Enabled = false; * btnSendFile.Enabled = false; * checkBoxCan1.Enabled = true; * checkBoxCan2.Enabled = true; */ return; } INIT_CONFIG init_config = new INIT_CONFIG(); init_config.AccCode = 0; init_config.AccMask = 0xffffff; init_config.Filter = 0; switch (m_Baudrate) { case 0: //1000 init_config.Timing0 = 0; init_config.Timing1 = 0x14; break; case 1: //800 init_config.Timing0 = 0; init_config.Timing1 = 0x16; break; case 2: //666 init_config.Timing0 = 0x80; init_config.Timing1 = 0xb6; break; case 3: //500 init_config.Timing0 = 0; init_config.Timing1 = 0x1c; break; case 4: //400 init_config.Timing0 = 0x80; init_config.Timing1 = 0xfa; break; case 5: //250 init_config.Timing0 = 0x01; init_config.Timing1 = 0x1c; break; case 6: //200 init_config.Timing0 = 0x81; init_config.Timing1 = 0xfa; break; case 7: //125 init_config.Timing0 = 0x03; init_config.Timing1 = 0x1c; break; case 8: //100 init_config.Timing0 = 0x04; init_config.Timing1 = 0x1c; break; case 9: //80 init_config.Timing0 = 0x83; init_config.Timing1 = 0xff; break; case 10: //50 init_config.Timing0 = 0x09; init_config.Timing1 = 0x1c; break; } init_config.Mode = 0; if (ECANDLL.OpenDevice(1, 0, 0) != ECAN.ECANStatus.STATUS_OK) { MessageBox.Show("Open device fault!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Set can1 baud if (ECANDLL.InitCAN(1, 0, 0, ref init_config) != ECAN.ECANStatus.STATUS_OK) { MessageBox.Show("Init can fault!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); ECANDLL.CloseDevice(1, 0); return; } //set can2 baud switch (m_Baudrate2) { case 0: //1000 init_config.Timing0 = 0; init_config.Timing1 = 0x14; break; case 1: //800 init_config.Timing0 = 0; init_config.Timing1 = 0x16; break; case 2: //666 init_config.Timing0 = 0x80; init_config.Timing1 = 0xb6; break; case 3: //500 init_config.Timing0 = 0; init_config.Timing1 = 0x1c; break; case 4: //400 init_config.Timing0 = 0x80; init_config.Timing1 = 0xfa; break; case 5: //250 init_config.Timing0 = 0x01; init_config.Timing1 = 0x1c; break; case 6: //200 init_config.Timing0 = 0x81; init_config.Timing1 = 0xfa; break; case 7: //125 init_config.Timing0 = 0x03; init_config.Timing1 = 0x1c; break; case 8: //100 init_config.Timing0 = 0x04; init_config.Timing1 = 0x1c; break; case 9: //80 init_config.Timing0 = 0x83; init_config.Timing1 = 0xff; break; case 10: //50 init_config.Timing0 = 0x09; init_config.Timing1 = 0x1c; break; } init_config.Mode = 0; if (cmbCanPorts.SelectedItem.ToString() == "CAN-1") { if (ECANDLL.InitCAN(1, 0, 1, ref init_config) != ECAN.ECANStatus.STATUS_OK) { MessageBox.Show("Init can fault!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); ECANDLL.CloseDevice(1, 0); return; } } // enable the timer to rec can data frame from can device. m_connect = 1; this.can_device_open = true; if (cmbCanPorts.SelectedItem.ToString() == "CAN-0") { this.mCan.EnableProc = false; //this.mCan.ThreadReadDataFormDevice.Start(); //this.ThreadUpdateTable.Start(); //this.ThreadGetCanDataBuff.Start(); this.startAllThread(); DateTimeStamp = DateTime.Now; // this is the time base of the charts } else { this.mCan.EnableProc = false; } if (cmbCanPorts.SelectedItem.ToString() == "CAN-1") { this.mCan.EnableProc2 = false; DateTimeStamp = DateTime.Now; } else { this.mCan.EnableProc2 = false; } btnInit.Text = "关闭CAN"; /* * btnReset.Enabled = true; * btnWrite.Enabled = true; * btnSendFile.Enabled = true; * IncludeTextMessage("Open Success"); * * if (checkBoxCan2.Checked) * btnWrite2.Enabled = true; * * checkBoxCan1.Enabled = false; * checkBoxCan2.Enabled = false; * */ cmbCanPorts.Enabled = false; if (m_connect == 0) { MessageBox.Show("Not open device!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Start Can1 if (cmbCanPorts.SelectedItem.ToString() == "CAN-0") { if (ECANDLL.StartCAN(1, 0, 0) == ECAN.ECANStatus.STATUS_OK) { //IncludeTextMessage("Start CAN1 Success"); tmrRead.Enabled = false; } else { //IncludeTextMessage("Start Fault"); } } //start CAN2 if (cmbCanPorts.SelectedItem.ToString() == "CAN-1") { if (ECANDLL.StartCAN(1, 0, 1) == ECAN.ECANStatus.STATUS_OK) { //IncludeTextMessage("Start CAN2 Success"); tmrRead.Enabled = false; } else { //IncludeTextMessage("Start Fault"); } } }