초기 커밋.
This commit is contained in:
167
LFP_Manager_PRM/Function/csExtCANControlFunction.cs
Normal file
167
LFP_Manager_PRM/Function/csExtCANControlFunction.cs
Normal file
@@ -0,0 +1,167 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace LFP_Manager.Function
|
||||
{
|
||||
// 1. The type of the ZLGCAN series interface card information.
|
||||
public struct VCI_BOARD_INFO
|
||||
{
|
||||
public UInt16 hw_Version;
|
||||
public UInt16 fw_Version;
|
||||
public UInt16 dr_Version;
|
||||
public UInt16 in_Version;
|
||||
public UInt16 irq_Num;
|
||||
public byte can_Num;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public byte[] str_Serial_Num;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
|
||||
public byte[] str_hw_Type;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
||||
public byte[] Reserved;
|
||||
}
|
||||
|
||||
// 2. Define the data type of the CAN message frame.
|
||||
unsafe public struct VCI_CAN_OBJ //Use unsafe code
|
||||
{
|
||||
public uint ID;
|
||||
public uint TimeStamp;
|
||||
public byte TimeFlag;
|
||||
public byte SendType;
|
||||
public byte RemoteFlag; //Whether it is a remore frame
|
||||
public byte ExternFlag; //Whether it is a extended frame
|
||||
public byte DataLen;
|
||||
|
||||
public fixed byte Data[8];
|
||||
|
||||
public fixed byte Reserved[3];
|
||||
}
|
||||
//2. Define the data type of the CAN message frame.
|
||||
//public struct VCI_CAN_OBJ
|
||||
//{
|
||||
// public UInt32 ID;
|
||||
// public UInt32 TimeStamp;
|
||||
// public byte TimeFlag;
|
||||
// public byte SendType;
|
||||
// public byte RemoteFlag;//Whether it is a remore frame
|
||||
// public byte ExternFlag;//Whether it is a extended frame
|
||||
// public byte DataLen;
|
||||
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
||||
// public byte[] Data;
|
||||
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
|
||||
// public byte[] Reserved;
|
||||
|
||||
// public void Init()
|
||||
// {
|
||||
// Data = new byte[8];
|
||||
// Reserved = new byte[3];
|
||||
// }
|
||||
//}
|
||||
|
||||
// 3. Define the data type of the CAN controller status.
|
||||
public struct VCI_CAN_STATUS
|
||||
{
|
||||
public byte ErrInterrupt;
|
||||
public byte regMode;
|
||||
public byte regStatus;
|
||||
public byte regALCapture;
|
||||
public byte regECCapture;
|
||||
public byte regEWLimit;
|
||||
public byte regRECounter;
|
||||
public byte regTECounter;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
|
||||
public byte[] Reserved;
|
||||
}
|
||||
|
||||
// 4. Define the data type of the error message.
|
||||
public struct VCI_ERR_INFO
|
||||
{
|
||||
public UInt32 ErrCode;
|
||||
public byte Passive_ErrData1;
|
||||
public byte Passive_ErrData2;
|
||||
public byte Passive_ErrData3;
|
||||
public byte ArLost_ErrData;
|
||||
}
|
||||
|
||||
// 5. Define the data type for initializing CAN
|
||||
public struct VCI_INIT_CONFIG
|
||||
{
|
||||
public UInt32 AccCode;
|
||||
public UInt32 AccMask;
|
||||
public UInt32 Reserved;
|
||||
public byte Filter;
|
||||
public byte Timing0;
|
||||
public byte Timing1;
|
||||
public byte Mode;
|
||||
}
|
||||
|
||||
public struct CHGDESIPANDPORT
|
||||
{
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
|
||||
public byte[] szpwd;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
|
||||
public byte[] szdesip;
|
||||
public Int32 desport;
|
||||
|
||||
public void Init()
|
||||
{
|
||||
szpwd = new byte[10];
|
||||
szdesip = new byte[20];
|
||||
}
|
||||
}
|
||||
|
||||
///////// new add struct for filter /////////
|
||||
//typedef struct _VCI_FILTER_RECORD{
|
||||
// DWORD ExtFrame; //Whether it is an extended frame
|
||||
// DWORD Start;
|
||||
// DWORD End;
|
||||
//}VCI_FILTER_RECORD,*PVCI_FILTER_RECORD;
|
||||
public struct VCI_FILTER_RECORD
|
||||
{
|
||||
public UInt32 ExtFrame;
|
||||
public UInt32 Start;
|
||||
public UInt32 End;
|
||||
}
|
||||
|
||||
class csExtCANControlFunction
|
||||
{
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_OpenDevice(UInt32 DeviceType, UInt32 DeviceInd, UInt32 Reserved);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_CloseDevice(UInt32 DeviceType, UInt32 DeviceInd);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_InitCAN(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, ref VCI_INIT_CONFIG pInitConfig);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_ReadBoardInfo(UInt32 DeviceType, UInt32 DeviceInd, ref VCI_BOARD_INFO pInfo);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_ReadErrInfo(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, ref VCI_ERR_INFO pErrInfo);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_ReadCANStatus(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, ref VCI_CAN_STATUS pCANStatus);
|
||||
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_GetReference(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, UInt32 RefType, ref byte pData);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_SetReference(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, UInt32 RefType, ref byte pData);
|
||||
//unsafe static extern UInt32 VCI_SetReference(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, UInt32 RefType, byte* pData);
|
||||
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_GetReceiveNum(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_ClearBuffer(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd);
|
||||
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_StartCAN(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd);
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_ResetCAN(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd);
|
||||
|
||||
[DllImport("controlcan.dll")]
|
||||
static extern UInt32 VCI_Transmit(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, ref VCI_CAN_OBJ pSend, UInt32 Len);
|
||||
|
||||
//[DllImport("controlcan.dll")]
|
||||
//static extern UInt32 VCI_Receive(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, ref VCI_CAN_OBJ pReceive, UInt32 Len, Int32 WaitTime);
|
||||
[DllImport("controlcan.dll", CharSet = CharSet.Ansi)]
|
||||
static extern UInt32 VCI_Receive(UInt32 DeviceType, UInt32 DeviceInd, UInt32 CANInd, IntPtr pReceive, UInt32 Len, Int32 WaitTime);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user