75 lines
3.6 KiB
C#
75 lines
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CapMachine.Wpf.CanDrive
|
|
{
|
|
/// <summary>
|
|
/// CAN DBC 解析数据
|
|
/// </summary>
|
|
public class CAN_DBCParser
|
|
{
|
|
public const Int32 DBC_PARSER_OK = 0;//没有错误
|
|
public const Int32 DBC_PARSER_FILE_OPEN = (-1);//打开文件出错
|
|
public const Int32 DBC_PARSER_FILE_FORMAT = (-2);//文件格式错误
|
|
public const Int32 DBC_PARSER_DEV_DISCONNECT = (-3);//设备未连接
|
|
public const Int32 DBC_PARSER_HANDLE_ERROR = (-4);//LDF Handle错误
|
|
public const Int32 DBC_PARSER_GET_INFO_ERROR = (-5);//获取解析后的数据出错
|
|
public const Int32 DBC_PARSER_DATA_ERROR = (-6);//数据处理错误
|
|
public const Int32 DBC_PARSER_SLAVE_NACK = (-7);//从机未响应数据
|
|
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern UInt64 DBC_ParserFile(int DevHandle, StringBuilder pDBCFileName);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgQuantity(UInt64 DBCHandle);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgName(UInt64 DBCHandle, int index, StringBuilder pMsgName);
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="DBCHandle"></param>
|
|
/// <param name="ID"></param>
|
|
/// <param name="pMsgName"></param>
|
|
/// <returns></returns>
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgNameByID(UInt64 DBCHandle, int ID, StringBuilder pMsgName);
|
|
/// <summary>
|
|
/// 获取ID根据名称
|
|
/// </summary>
|
|
/// <param name="DBCHandle"></param>
|
|
/// <param name="pMsgName"></param>
|
|
/// <returns></returns>
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgIDByName(UInt64 DBCHandle, StringBuilder pMsgName);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgSignalQuantity(UInt64 DBCHandle, StringBuilder pMsgName);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgSignalName(UInt64 DBCHandle, StringBuilder pMsgName, int index, StringBuilder pSignalName);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetMsgPublisher(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pPublisher);
|
|
//设置信号值
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_SetSignalValue(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pSignalName, double Value);
|
|
//获取信号值
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetSignalValue(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pSignalName, double[] pValue);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_GetSignalValueStr(UInt64 DBCHandle, StringBuilder pMsgName, StringBuilder pSignalName, StringBuilder pValueStr);
|
|
|
|
//将CAN消息数据填充到信号里面
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_SyncCANMsgToValue(UInt64 DBCHandle, IntPtr pCANMsg, int MsgLen);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_SyncCANFDMsgToValue(UInt64 DBCHandle, IntPtr pCANFDMsg, int MsgLen);
|
|
//将信号数据填充到CAN消息里面
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_SyncValueToCANMsg(UInt64 DBCHandle, StringBuilder pMsgName, IntPtr pCANMsg);
|
|
[DllImport("USB2XXX.dll")]
|
|
public static extern Int32 DBC_SyncValueToCANFDMsg(UInt64 DBCHandle, StringBuilder pMsgName, IntPtr pCANFDMsg);
|
|
|
|
}
|
|
}
|