Hallo,
Ik ben eigenlijk meer C programmeerder maar wil nu toch met C# beginnen. Ik heb een CAN naar USB adapter van NI die ik graag wil aansturen.
Het probleem is dat de functie Read een pointer naar een struct verwacht.
Functie aanroep:
De pointer naar DataPtr geeft de locatie aan naar de struct waar de data heengeschreven moet worden.
Hier dient dan een struct te staan:
Deze struct moet er als volgt uitzien:
Functie aanroep:
Hier krijg ik een error "Cannot convert ..."
Wat ik niet snap is hoe ik nu deze struct aan de functie meegeef?
Alvast bedankt.
Ik ben eigenlijk meer C programmeerder maar wil nu toch met C# beginnen. Ik heb een CAN naar USB adapter van NI die ik graag wil aansturen.
Het probleem is dat de functie Read een pointer naar een struct verwacht.
Functie aanroep:
C#:
1
2
| [DllImport("nican.dll")] public static extern unsafe UInt32 ncRead(UInt32 objHandle, UInt32 dataSize, UInt32* DataPtr); |
De pointer naar DataPtr geeft de locatie aan naar de struct waar de data heengeschreven moet worden.
Hier dient dan een struct te staan:
Deze struct moet er als volgt uitzien:
C#:
1
2
3
4
5
6
7
8
9
| [StructLayout(LayoutKind.Sequential)] public struct canFrames{ public byte FrameType; public UInt32 ArbitrationId; public System.Runtime.InteropServices.ComTypes.FILETIME Timestamp; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public Byte[] Data; public Byte DataLenght; } |
Functie aanroep:
C#:
1
2
3
4
5
| canFrames CanData = new canFrames(); UInt32 ReturnCan; [..] InitializeComponent(); ReturnCan = ncRead(handle, 8, CanData); |
Hier krijg ik een error "Cannot convert ..."
Wat ik niet snap is hoe ik nu deze struct aan de functie meegeef?
Alvast bedankt.