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.

45 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace USB2XXX
{
class USB2K
{
//定义函数返回错误代码
public const Int32 K_SUCCESS = (0); //函数执行成功
public const Int32 K_ERR_NOT_SUPPORT = (-1); //适配器不支持该函数
public const Int32 K_ERR_USB_WRITE_FAIL = (-2); //USB写数据失败
public const Int32 K_ERR_USB_READ_FAIL = (-3); //USB读数据失败
public const Int32 K_ERR_CMD_FAIL = (-4); //命令执行失败
public const Int32 K_ERR_SERVER_NO_RESPONSE = (-5); //ECU无响应
public const Int32 K_ERR_RESPONSE = (-6); //ECU响应数据错误
public const Int32 K_ERR_SEND_DATA = (-7); //数据发送出错
public const Int32 K_ERR_CHECK_ERROR = (-8); //数据发送出错
//定义初始化K的数据类型
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct K_MSG
{
public Byte Fmt; //Format byte, K_MSG_FMT
public Byte TgtAddr; //This is the target address for the message. It may be a physical or a functional address.
public Byte SrcAddr; //Source address
public Byte Len; //This byte is provided if the length in the header byte Fmt.DataLen is set to 0.
public Byte SId; //Service Identification byte
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 254, ArraySubType = UnmanagedType.I1)]
public Byte[] Data; //depending on service
public Byte CS; //Checksum byte
}
//USB2K相关函数定义
[DllImport("USB2XXX.dll")]
public static extern Int32 K_Init(Int32 DevHandle, Byte Channel,Int32 BaudRate);
[DllImport("USB2XXX.dll")]
public static extern Int32 K_5BaudInit(Int32 DevHandle, Byte Channel,Byte Addr,Byte[] pKB1,Byte[] pKB2);
[DllImport("USB2XXX.dll")]
public static extern Int32 K_FastInit(Int32 DevHandle, Byte Channel,IntPtr pRequest,IntPtr pResponse,Byte InterByteTimeMs);
[DllImport("USB2XXX.dll")]
public static extern Int32 K_Request(Int32 DevHandle, Byte Channel,IntPtr pRequest,IntPtr pResponse,Byte InterByteTimeMs,Int32 ResponseTimeOutMs);
}
}