1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| ....
[ComVisible(true)]
public unsafe class Class1
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct tCANMsg
{
// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public uint m_dwID; // CAN identifier
public uint m_bMsgType; // CAN message type
public uint m_bLen; // CAN data length code
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public uint[] m_bData; // CAN data
//
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct EthCanInstance
{
public uint m_dwHandle;
public tEthCanHwParam m_EthCanHwParam;
public tConnectionState m_ConnectionState;
public tConnectionState m_LastConnectionState;
public uint m_dwLastCanStatus;
public bool m_fIsConnected;
public uint m_dwCounter;
public tCANMsg m_CANMsgSend;
public tCANMsg m_CANMsgRecv;
public uint m_fReceived;
}
public static EthCanInstance[] EthCanInst_g = new EthCanInstance[1];
unsafe void read() {
uint dwReadRet;
EthCanInst_g[0].m_CANMsgSend.m_bData = new uint[8];
tCANTimestamp TimeStamp;
TimeStamp.m_dwMilliSec = (uint)Environment.TickCount;
TimeStamp.m_wMicroSec = 0;
TimeStamp.m_wMilliSec_Overflow = 0;
EthCanInst_g[0].m_CANMsgSend.m_bMsgType = 0x0;
EthCanInst_g[0].m_CANMsgSend.m_dwID = 0x204;
EthCanInst_g[0].m_CANMsgSend.m_bLen = 0x3;
EthCanInst_g[0].m_CANMsgSend.m_bData[0] = 0x57;
EthCanInst_g[0].m_CANMsgSend.m_bData[1] = 0x2;
EthCanInst_g[0].m_CANMsgSend.m_bData[2] = 0x0;
EthCanInst_g[0].m_CANMsgSend.m_bData[3] = 0x0;
EthCanInst_g[0].m_CANMsgSend.m_bData[4] = 0x0;
EthCanInst_g[0].m_CANMsgSend.m_bData[5] = 0x0;
EthCanInst_g[0].m_CANMsgSend.m_bData[6] = 0x0;
EthCanInst_g[0].m_CANMsgSend.m_bData[7] = 0x0;
//Write the CAN message into the transmit queue
dwReadRet = EthCanWriteCanMsg(EthCanInst_g[0].m_dwHandle, ref EthCanInst_g[0].m_CANMsgSend, ref TimeStamp);
}
...
.. |
Partager