예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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));
        }
예제 #3
0
        /// <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());
            }
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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初始化失败");
            }
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
 /// <summary>
 /// 发送数据函数
 /// </summary>
 /// <param name="CANMsg"></param>
 public TPCANStatus writeee(TPCANMsg CANMsg)
 {
     return(PCANBasic.Write(m_PcanHandle, ref CANMsg));
 }
예제 #8
0
 /// <summary>
 /// 关闭PCAN
 /// </summary>
 public void close()
 {
     PCANBasic.Uninitialize(m_PcanHandle);
 }