85 lines
5.1 KiB
C#
85 lines
5.1 KiB
C#
using System.Runtime.InteropServices;
|
||
using System.Text;
|
||
|
||
namespace CapMachine.Wpf.LinDrive
|
||
{
|
||
/// <summary>
|
||
/// LDF文件解析
|
||
/// </summary>
|
||
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);
|
||
|
||
/// <summary>
|
||
///将帧数据发送到LIN总线,或者向从机读取数据,内部会根据主机名称和帧发布者自动判断是发送数据还是读取数据,发送数据校验模式是通过协议版本号自动判断的。
|
||
// 若是发送数据给从机,需要先调用LDF_SetSignalValue函数设置该帧里面每个信号的值。
|
||
//若是向从机读数据,调用该函数后,可以通过调用LDF_GetSignalValue函数获取读到的值。
|
||
/// LDFHandle ldf文件解析句柄,通过LDF_ParserFile函数获取 。
|
||
/// pFrameName 帧名称。
|
||
/// </summary>
|
||
/// <param name="LDFHandle"></param>
|
||
/// <param name="pFrameName"></param>
|
||
/// <param name="FillBitValue"></param>
|
||
/// <returns></returns>
|
||
[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_SyncMsgToValue(UInt64 LDFHandle, USB2LIN_EX.LIN_EX_MSG[] pLINMsg, int MsgLen);
|
||
[DllImport("USB2XXX.dll")]
|
||
public static extern Int32 LDF_StopSchTable(UInt64 LDFHandle);
|
||
[DllImport("USB2XXX.dll")]
|
||
public static extern Int32 LDF_Release(UInt64 LDFHandle);
|
||
}
|
||
}
|