/// <summary> /// 如果初始化成功,则配置通道 /// </summary> public void ConfiguerTraceFile() { UInt32 iBuffer; TPCANStatus stsResult; //Configure the maximum size of a trace file to 5 megabytes // iBuffer = 5; stsResult = PCANBasic.SetValue(m_PcanHandle, TPCANParameter.PCAN_TRACE_SIZE, ref iBuffer, sizeof(UInt32)); if (stsResult != TPCANStatus.PCAN_ERROR_OK) { // tsslCANStatus.Text = GetFormatedError(stsResult); // Configure the way how trace files are created: // * Standard name is used // * Existing file is ovewritten, // * Only one file is created. // * Recording stopts when the file size reaches 5 megabytes. // iBuffer = PCANBasic.TRACE_FILE_SINGLE | PCANBasic.TRACE_FILE_OVERWRITE; } stsResult = PCANBasic.SetValue(m_PcanHandle, TPCANParameter.PCAN_TRACE_CONFIGURE, ref iBuffer, sizeof(UInt32)); // if (stsResult != TPCANStatus.PCAN_ERROR_OK) // tsslCANStatus.Text = GetFormatedError(stsResult); }
/// <summary> /// 配置日志信息 /// </summary> public void ConfiguerLogFile() { UInt32 iBuffer; iBuffer = PCANBasic.LOG_FUNCTION_ALL; PCANBasic.SetValue(PCANBasic.PCAN_NONEBUS, TPCANParameter.PCAN_LOG_CONFIGURE, ref iBuffer, sizeof(UInt32)); }
/// <summary> /// 获取错误详细信息 /// </summary> /// <param name="error"></param> /// <returns></returns> public string GetFormatedError(TPCANStatus error) { StringBuilder strTemp = new StringBuilder(256); if (PCANBasic.GetErrorText(error, 0, strTemp) != TPCANStatus.PCAN_ERROR_OK) { return(string.Format("An error occurred. Error-code's text({0:X}) couldn't be retrieved", error)); } else { return(strTemp.ToString()); } }
/// <summary> /// 设置一个通道的配置 /// </summary> public TPCANStatus setValue() { UInt32 iBuffer; TPCANStatus stsResult; iBuffer = Convert.ToUInt32(m_ReceiveEvent.SafeWaitHandle.DangerousGetHandle().ToInt32()); stsResult = PCANBasic.SetValue(m_PcanHandle, TPCANParameter.PCAN_RECEIVE_EVENT, ref iBuffer, sizeof(UInt32)); if (stsResult != TPCANStatus.PCAN_ERROR_OK) { // MessageBox.Show(GetFormatedError(stsResult), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // return; } return(stsResult); }
/// <summary> /// 初始化 /// </summary> public void initialize() { m_PcanHandle = PCANBasic.PCAN_USBBUS1; //通道 m_Baudrate = TPCANBaudrate.PCAN_BAUD_500K; //波特率 TPCANStatus result; //状态 result = PCANBasic.Initialize(m_PcanHandle, m_Baudrate); //初始化 if (result == TPCANStatus.PCAN_ERROR_OK) { ConfiguerTraceFile(); } else { throw new Exception("pcanhelper初始化失败"); } }
/// <summary> /// Function for reading PCAN-Basic message 读pcan消息,返回数组 /// </summary> public double[] ReadMessages() { double[] v = new double[51];//对外的实际值 TPCANMsg CANMsg; TPCANTimestamp CANTimeStamp; TPCANStatus stsResult; for (int i = 0; i < 51; i++) { v[i] = 0; } do { stsResult = PCANBasic.Read(m_PcanHandle, out CANMsg, out CANTimeStamp); if (stsResult == TPCANStatus.PCAN_ERROR_OK) { // v = ConvertToRealValue(CANMsg); v = testrealvalue(CANMsg); // v = MyProcessMessage(CANMsg); } }while (!Convert.ToBoolean(stsResult & TPCANStatus.PCAN_ERROR_QRCVEMPTY)); return(v); }
/// <summary> /// 发送数据函数 /// </summary> /// <param name="CANMsg"></param> public TPCANStatus writeee(TPCANMsg CANMsg) { return(PCANBasic.Write(m_PcanHandle, ref CANMsg)); }
/// <summary> /// 关闭PCAN /// </summary> public void close() { PCANBasic.Uninitialize(m_PcanHandle); }