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 数据帧指针   这里需要什么类型数据

解决方案 »

  1.   

    希望能附上调用方法怎么写
    Pci6621_Send(0,0,???);
      

  2.   

    [DllImport("你的DLL路径")]
    public static extern int Pci6621_Send(int mDev, int mPort, byte[] pSendFrame);
      

  3.   

    需要一个CANFRAME结构的指针(引用)
            [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);
            }
      

  4.   

    楼上办法可行,给你一个更全面的:     http://blog.csdn.net/sdl2005lyx/article/details/6801113
      

  5.   

    ref 结构体名
    结构体自己定义