Initial commit: BMS CAN monitor
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace BmsMonitor.App.Can;
|
||||
|
||||
internal static class ControlCanNative
|
||||
{
|
||||
internal const uint VciUsbCan2 = 4;
|
||||
internal const uint StatusOk = 1;
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct VciInitConfig
|
||||
{
|
||||
public uint AccCode;
|
||||
public uint AccMask;
|
||||
public uint Reserved;
|
||||
public byte Filter;
|
||||
public byte Timing0;
|
||||
public byte Timing1;
|
||||
public byte Mode;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||
internal struct VciCanObj
|
||||
{
|
||||
public uint Id;
|
||||
public uint TimeStamp;
|
||||
public byte TimeFlag;
|
||||
public byte SendType;
|
||||
public byte RemoteFlag;
|
||||
public byte ExternFlag;
|
||||
public byte DataLen;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] Data;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] Reserved;
|
||||
}
|
||||
|
||||
[DllImport("ControlCAN.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
internal static extern uint VCI_OpenDevice(uint deviceType, uint deviceIndex, uint reserved);
|
||||
|
||||
[DllImport("ControlCAN.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
internal static extern uint VCI_CloseDevice(uint deviceType, uint deviceIndex);
|
||||
|
||||
[DllImport("ControlCAN.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
internal static extern uint VCI_InitCAN(uint deviceType, uint deviceIndex, uint canIndex, ref VciInitConfig config);
|
||||
|
||||
[DllImport("ControlCAN.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
internal static extern uint VCI_StartCAN(uint deviceType, uint deviceIndex, uint canIndex);
|
||||
|
||||
[DllImport("ControlCAN.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
internal static extern uint VCI_ResetCAN(uint deviceType, uint deviceIndex, uint canIndex);
|
||||
|
||||
[DllImport("ControlCAN.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
internal static extern uint VCI_Receive(uint deviceType, uint deviceIndex, uint canIndex,
|
||||
[Out] VciCanObj[] receive, uint length, int waitTime);
|
||||
}
|
||||
Reference in New Issue
Block a user