Files
CapMachine/CapMachine.Wpf/LinDrive/LDFParser.cs

85 lines
5.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}