using System.Runtime.InteropServices; using System.Text; namespace CapMachine.Wpf.LinDrive { /// /// LDF文件解析 /// public class LDFParser { public const Int32 LDF_PARSER_OK = 0;//没有错误 public const Int32 LDF_PARSER_FILE_OPEN = (-1);//打开文件出错 public const Int32 LDF_PARSER_FILE_FORMAT = (-2);//文件格式错误 public const Int32 LDF_PARSER_DEV_DISCONNECT = (-3);//设备未连接 public const Int32 LDF_PARSER_HANDLE_ERROR = (-4);//LDF Handle错误 public const Int32 LDF_PARSER_GET_INFO_ERROR = (-5);//获取解析后的数据出错 public const Int32 LDF_PARSER_DATA_ERROR = (-6);//数据处理错误 public const Int32 LDF_PARSER_SLAVE_NACK = (-7);//从机未响应数据 [DllImport("USB2XXX.dll")] public static extern UInt64 LDF_ParserFile(int DevHandle, int LINIndex, byte isMaster, StringBuilder pLDFFileName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetProtocolVersion(UInt64 LDFHandle); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetLINSpeed(UInt64 LDFHandle); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetFrameQuantity(UInt64 LDFHandle); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetFrameName(UInt64 LDFHandle, int index, StringBuilder pFrameName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetFrameSignalQuantity(UInt64 LDFHandle, StringBuilder pFrameName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetFrameSignalName(UInt64 LDFHandle, StringBuilder pFrameName, int index, StringBuilder pSignalName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_SetSignalValue(UInt64 LDFHandle, StringBuilder pFrameName, StringBuilder pSignalName, double Value); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetSignalValue(UInt64 LDFHandle, StringBuilder pFrameName, StringBuilder pSignalName, double[] pValue); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetSignalValueStr(UInt64 LDFHandle, StringBuilder pFrameName, StringBuilder pSignalName, StringBuilder pValueStr); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_SetFrameRawValue(UInt64 LDFHandle, StringBuilder pFrameName, StringBuilder pRawData); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetFrameRawValue(UInt64 LDFHandle, StringBuilder pFrameName, StringBuilder pRawData); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetFramePublisher(UInt64 LDFHandle, StringBuilder pFrameName, StringBuilder pPublisher); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetMasterName(UInt64 LDFHandle, StringBuilder pMasterName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetSchQuantity(UInt64 LDFHandle); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetSchName(UInt64 LDFHandle, int index, StringBuilder pSchName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetSchFrameQuantity(UInt64 LDFHandle, StringBuilder pSchName); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetSchFrameName(UInt64 LDFHandle, StringBuilder pSchName, int index, StringBuilder pFrameName); /// ///将帧数据发送到LIN总线,或者向从机读取数据,内部会根据主机名称和帧发布者自动判断是发送数据还是读取数据,发送数据校验模式是通过协议版本号自动判断的。 // 若是发送数据给从机,需要先调用LDF_SetSignalValue函数设置该帧里面每个信号的值。 //若是向从机读数据,调用该函数后,可以通过调用LDF_GetSignalValue函数获取读到的值。 /// LDFHandle ldf文件解析句柄,通过LDF_ParserFile函数获取 。 /// pFrameName 帧名称。 /// /// /// /// /// [DllImport("USB2XXX.dll")] public static extern Int32 LDF_ExeFrameToBus(UInt64 LDFHandle, StringBuilder pFrameName, byte FillBitValue); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_ExeSchToBus(UInt64 LDFHandle, StringBuilder pSchName, byte FillBitValue); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_SetSchToTable(UInt64 LDFHandle, StringBuilder pSchName, byte FillBitValue); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_GetRawMsg(UInt64 LDFHandle, IntPtr pLINMsg, int BufferSize); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_StopSchTable(UInt64 LDFHandle); [DllImport("USB2XXX.dll")] public static extern Int32 LDF_Release(UInt64 LDFHandle); } }