You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
3.2 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace USB2XXX
{
class USB2LIN
{
//定义函数返回错误代码
public const Int32 LIN_SUCCESS = (0); //函数执行成功
public const Int32 LIN_ERR_NOT_SUPPORT = (-1); //适配器不支持该函数
public const Int32 LIN_ERR_USB_WRITE_FAIL = (-2); //USB写数据失败
public const Int32 LIN_ERR_USB_READ_FAIL = (-3); //USB读数据失败
public const Int32 LIN_ERR_CMD_FAIL = (-4); //命令执行失败
public const Int32 LIN_ERR_CH_NO_INIT = (-5); //该通道未初始化
public const Int32 LIN_ERR_READ_DATA = (-6); //LIN读数据失败
//LIN和校验模式
public const Byte LIN_CHECK_MODE_STD = 0;
public const Byte LIN_CHECK_MODE_EXT = 1;
public const Byte LIN_CHECK_MODE_NONE = 2;
//BREAK位数定义
public const Byte LIN_BREAK_BITS_10 = 0x00;
public const Byte LIN_BREAK_BITS_11 = 0x20;
//定义主从模式
public const Byte LIN_MASTER = 1;
public const Byte LIN_SLAVE = 0;
//定义从机操作模式
public const Byte LIN_SLAVE_WRITE = 0;
public const Byte LIN_SLAVE_READ = 1;
//定义初始化LIN的数据类型
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct LIN_CONFIG
{
public UInt32 BaudRate; //波特率,最大20K
public Byte CheckMode; //校验模式0-标准校验模式1-增强校验模式包含PID
public Byte MasterMode; //主从模式0-从模式1-主模式
public Byte BreakBits; //Break长度0x00-10bit,0x20-11bit
}
//LIN数据收发帧格式定义
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct LIN_MSG
{
[MarshalAs(UnmanagedType.U1)]
public Byte ID; //ID取值范围0~0x3F
[MarshalAs(UnmanagedType.U1)]
public Byte DataLen; //发送数据时,代表发送数据的长度,不含校验数据,接收数据时,数据的长度,包含校验数据
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9, ArraySubType = UnmanagedType.I1)]
public Byte[] Data; //数据存储区
}
//USB2LIN相关函数定义
[DllImport("USB2XXX.dll")]
public static extern Int32 LIN_Init(Int32 DevHandle,Byte LINIndex,ref LIN_CONFIG pConfig);
[DllImport("USB2XXX.dll")]
public static extern Int32 LIN_Write(Int32 DevHandle,Byte LINIndex,LIN_MSG[] pLINMsg,Int32 Len);
[DllImport("USB2XXX.dll")]
public static extern Int32 LIN_Read(Int32 DevHandle, Byte LINIndex, IntPtr pLINMsg, Int32 Len);
[DllImport("USB2XXX.dll")]
public static extern Int32 LIN_SlaveSetIDMode(Int32 DevHandle,Byte LINIndex,Byte IDMode,LIN_MSG[] pLINMsg,Int32 Len);
[DllImport("USB2XXX.dll")]
public static extern Int32 LIN_SlaveGetData(Int32 DevHandle,Byte LINIndex,IntPtr pLINMsg);
}
}