1.设备为CAN总线
2.使用产家提供的DLL操作CAN总线
3.其DLL是c++写的dll内定义
typedef struct _CANFRAME {
UCHAR mFrame[10];
}CANFRAME,*PCANFRAME;
dll内的函数:
BOOL _stdcall Pci6621_Send(int mDev,int mPort,PCANFRAME pSendFrame);
用途:
用于PCI6621通讯端口的发送数据帧;
返回参数:
返回值为BOOL 返回TRUE表示发送成功,FALSE表示发送失败;
调用参数:
mDev 32位int 设备序号。取值为范围0-3; 现在填0
nPort 32位int 端口序号。取值为范围0-1; 现在填0
pSendFrame 数据帧指针 这里需要什么类型数据
2.使用产家提供的DLL操作CAN总线
3.其DLL是c++写的dll内定义
typedef struct _CANFRAME {
UCHAR mFrame[10];
}CANFRAME,*PCANFRAME;
dll内的函数:
BOOL _stdcall Pci6621_Send(int mDev,int mPort,PCANFRAME pSendFrame);
用途:
用于PCI6621通讯端口的发送数据帧;
返回参数:
返回值为BOOL 返回TRUE表示发送成功,FALSE表示发送失败;
调用参数:
mDev 32位int 设备序号。取值为范围0-3; 现在填0
nPort 32位int 端口序号。取值为范围0-1; 现在填0
pSendFrame 数据帧指针 这里需要什么类型数据
Pci6621_Send(0,0,???);
public static extern int Pci6621_Send(int mDev, int mPort, byte[] pSendFrame);
[StructLayout(LayoutKind.Sequential)]
public struct CANFRAME
{
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.U1, SizeConst = 10)]
public byte[] mFrame;
} public class LibWrap
{
[DllImport("MyDll.dll")]
public static extern bool Pci6621_Send([In] Int32 mDev, [In] Int32 mPort, ref CANFRAME pSendFrame);
}
static void Main()
{
CANFRAME sendFrame = new CANFRAME();
sendFrame.mFrame = new byte[10];
//sendFrame.mFrame[0] = 0x01;
//... bool bSuccess = LibWrap.Pci6621_Send(0, 0, ref sendFrame);
}
结构体自己定义