//private void btnInit_Click(object sender, EventArgs e) /* * strBitrate 波特率 * */ private bool PCAN_Init(string strBitrate) { bool bInitRet = false; m_PcanHandle = Convert.ToUInt16("51", 16); m_Baudrate = TPCANBaudrate.PCAN_BAUD_500K; m_HwType = TPCANType.PCAN_TYPE_ISA; TPCANStatus stsResult; // Connects a selected PCAN-Basic channel // if (m_IsFD) { stsResult = PCANBasic.InitializeFD(m_PcanHandle, strBitrate); } else { stsResult = PCANBasic.Initialize( m_PcanHandle, m_Baudrate, m_HwType, 256, // Convert.ToUInt32(strIO, 16), 3); // Convert.ToUInt16(strInterrupt)); } if (stsResult != TPCANStatus.PCAN_ERROR_OK) { if (stsResult != TPCANStatus.PCAN_ERROR_CAUTION) { //MessageBox.Show(GetFormatedError(stsResult)); bInitRet = false; } } else { // Prepares the PCAN-Basic's PCAN-Trace file bInitRet = true; } return(bInitRet); }
public bool OpenCan(short Channel, int ID, short Speed, bool m_IsFD = false) { #if PROGRAM_RUNNING TPCANStatus stsResult; UInt32 iBuffer; //-----------------------------[ Init can board ] // Connects a selected PCAN-Basic channel // try { try { m_PcanHandle[Channel] = (byte)ID; switch (Speed) { case 0: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_5K; break; case 1: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_10K; break; case 2: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_20K; break; case 3: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_33K; break; case 4: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_47K; break; case 5: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_50K; break; case 6: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_83K; break; case 7: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_95K; break; case 8: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_100K; break; case 9: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_125K; break; case 10: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_250K; break; case 11: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_500K; break; case 12: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_800K; break; case 13: m_Baudrate[Channel] = TPCANBaudrate.PCAN_BAUD_1M; break; } if (m_IsFD) { string s = "f_clock_mhz = 20,nom_brp = 5,nom_tseg1 = 2,nom_tseg2 = 1,nom_sjw = 1,data_brp = 2,data_tseg1 = 3, data_tseg2 = 1,data_sjw = 1"; stsResult = PCANBasic.InitializeFD( m_PcanHandle[Channel], s); } else { //m_HwType = TPCANType.PCAN_TYPE_ISA; stsResult = PCANBasic.Initialize( m_PcanHandle[Channel], m_Baudrate[Channel], m_HwType[Channel], 0x100, 3); } if (stsResult != TPCANStatus.PCAN_ERROR_OK) { uMessageBox.Show(promptText: GetFormatedError(stsResult), title: "경고"); //MessageBox.Show(GetFormatedError(stsResult)); } else { // Prepares the PCAN-Basic's PCAN-Trace file // ConfigureTraceFile((short)Channel); } //-----------------------------[ Open can board ] // Gets the current status of the message filter // if (!GetFilterStatus((short)Channel, out iBuffer)) { return(false); } // The filter will be full opened or complete closed // iBuffer = PCANBasic.PCAN_FILTER_OPEN; // The filter is configured // stsResult = PCANBasic.SetValue( m_PcanHandle[Channel], TPCANParameter.PCAN_MESSAGE_FILTER, ref iBuffer, sizeof(UInt32)); // If success, an information message is written, if it is not, an error message is shown // if (stsResult == TPCANStatus.PCAN_ERROR_OK) { Open[Channel] = true; } else { Open[Channel] = false; } if (stsResult == TPCANStatus.PCAN_ERROR_OK) { return(true); } else { uMessageBox.Show(promptText: GetFormatedError(stsResult), title: "경고"); //MessageBox.Show(GetFormatedError(stsResult)); } } catch (Exception Msg) { //MessageBox.Show(Msg.Message + "\n" + Msg.StackTrace); uMessageBox.Show(promptText: Msg.Message + "\n" + Msg.StackTrace, title: "경고"); //MessageBox.Show(GetFormatedError(stsResult)); } } finally { } return(false); #else return(true); #endif }
private void GetHwInfor() { UInt32 iBuffer; TPCANStatus stsResult; bool isFD; UInt32 Ch; UInt32 DeviceCh; StringBuilder HwName = new StringBuilder(); //StringBuilder HwDevice = new StringBuilder(); // Clears the Channel combioBox and fill it again with // the PCAN-Basic handles for no-Plug&Play hardware and // the detected Plug&Play hardware // CanList.Clear(); try { for (int i = 0; i < m_HandlesArray.Length; i++) { // Includes all no-Plug&Play Handles if (m_HandlesArray[i] <= PCANBasic.PCAN_DNGBUS1) { CanList.Add(FormatChannelName(m_HandlesArray[i])); } else { // Checks for a Plug&Play Handle and, according with the return value, includes it // into the list of available hardware channels. // stsResult = PCANBasic.GetValue(m_HandlesArray[i], TPCANParameter.PCAN_CHANNEL_CONDITION, out iBuffer, sizeof(UInt32)); if ((stsResult == TPCANStatus.PCAN_ERROR_OK) && ((iBuffer & PCANBasic.PCAN_CHANNEL_AVAILABLE) == PCANBasic.PCAN_CHANNEL_AVAILABLE)) { stsResult = PCANBasic.GetValue(m_HandlesArray[i], TPCANParameter.PCAN_CONTROLLER_NUMBER, out Ch, sizeof(UInt32)); stsResult = PCANBasic.GetValue(m_HandlesArray[i], TPCANParameter.PCAN_HARDWARE_NAME, HwName, 20); stsResult = PCANBasic.GetValue(m_HandlesArray[i], TPCANParameter.PCAN_CHANNEL_FEATURES, out iBuffer, sizeof(UInt32)); isFD = (stsResult == TPCANStatus.PCAN_ERROR_OK) && ((iBuffer & PCANBasic.FEATURE_FD_CAPABLE) == PCANBasic.FEATURE_FD_CAPABLE); if (isFD) { string s = "f_clock_mhz = 20,nom_brp = 5,nom_tseg1 = 2,nom_tseg2 = 1,nom_sjw = 1,data_brp = 2,data_tseg1 = 3, data_tseg2 = 1,data_sjw = 1"; stsResult = PCANBasic.InitializeFD( m_HandlesArray[i], s); } else { //m_HwType = TPCANType.PCAN_TYPE_ISA; stsResult = PCANBasic.Initialize( m_HandlesArray[i], m_Baudrate[i], m_HwType[i], 0x100, 3); } stsResult = PCANBasic.GetValue(m_HandlesArray[i], TPCANParameter.PCAN_DEVICE_NUMBER, out DeviceCh, sizeof(UInt32)); PCANBasic.Uninitialize(m_HandlesArray[i]); //CanList.Add(FormatChannelName(m_HandlesArray[i], isFD, (Int32)Ch)); CanList.Add(FormatChannelName(m_HandlesArray[i], isFD, (Int32)Ch, HwName.ToString(), DeviceCh)); } } } } catch (DllNotFoundException) { //MessageBox.Show("Unable to find the library: PCANBasic.dll !", "Error!"/*, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error*/); uMessageBox.Show(title: "Error!", "Unable to find the library: PCANBasic.dll !"); //MessageBox.Show(GetFormatedError(stsResult)); //Environment.Exit(-1); } return; }
/*---------------------------------------------------------------------------------------------------*/ public bool startDevice() { TPCANStatus result1 = 0; //if (CANINDEX != 0 && CANINDEX != 1) //{ // MessageBox.Show("请指定设备参数"); // return false; //} if (Form_SetCANParam.form_setcan.checkCANFDMode.Checked == true) { result1 = PCANBasic.InitializeFD(PCAN_PARA1.PCANIndex, "f_clock_mhz=20, nom_brp=5, nom_tseg1=2, nom_tseg2=1, nom_sjw=1, data_brp=2, data_tseg1=3, data_tseg2=1, data_sjw=1"); } else { result1 = PCANBasic.Initialize(PCAN_PARA1.PCANIndex, PCAN_PARA1.BTR0_1, TPCANType.PCAN_TYPE_ISA, 0x378, 3); } if (result1 == TPCANStatus.PCAN_ERROR_OK) { //MessageBox.Show("设备启动成功"); switch (PCAN_PARA1.PCANIndex) { case 0x0051: PCAN_COMMON_VAL.pcan_init_flag0 = 0x69; //通道1初始化成功标志 break; case 0x0052: PCAN_COMMON_VAL.pcan_init_flag1 = 0x69; //通道1初始化成功标志} break; case 0x0053: PCAN_COMMON_VAL.pcan_init_flag2 = 0x69; //通道1初始化成功标志 break; case 0x0054: PCAN_COMMON_VAL.pcan_init_flag3 = 0x69; //通道1初始化成功标志} break; case 0x0055: PCAN_COMMON_VAL.pcan_init_flag4 = 0x69; //通道1初始化成功标志 break; case 0x0056: PCAN_COMMON_VAL.pcan_init_flag5 = 0x69; //通道1初始化成功标志} break; case 0x0057: PCAN_COMMON_VAL.pcan_init_flag6 = 0x69; //通道1初始化成功标志 break; case 0x0058: PCAN_COMMON_VAL.pcan_init_flag7 = 0x69; //通道1初始化成功标志} break; } if (Form_SetCANParam.form_setcan.checkCANFDMode.Checked == true) { Form_BasicFunction.form_basic.checkEnableCANFD.Enabled = true; Form_BasicFunction.form_basic.EnableCANFD_BRS.Enabled = true; } else { Form_BasicFunction.form_basic.checkEnableCANFD.Checked = false; Form_BasicFunction.form_basic.checkEnableCANFD.Enabled = false; Form_BasicFunction.form_basic.EnableCANFD_BRS.Enabled = false; Form_BasicFunction.form_basic.EnableCANFD_BRS.Checked = false; } if (thread == null) //if(true)//方便连续直接打开设备 { thread = new Thread(receivingThread); thread.Start(); } IsOpen = true; return(true); } else { goto errorReporting; } errorReporting: if (result1 == TPCANStatus.PCAN_ERROR_ILLHW) { MessageBox.Show("请插入PCAN-USB设备"); } else { MessageBox.Show("PCAN-USB打开失败"); } return(false); }