Exception is thrown when using .NET Core
Urmel11 opened this issue · comments
As reported in issue #1, the library throws following System.ArgumentException when using .NET Core.
Unhandled Exception: System.ArgumentException: Object contains non-primitive or non-blittable data.
at System.Runtime.InteropServices.GCHandle.InternalAlloc(Object value, GCHandleType type)
at System.Runtime.InteropServices.GCHandle.Alloc(Object value, GCHandleType type)
at rpi_ws281x.WS281x..ctor(Settings settings) in /home/daniel/Documents/RPI/rpi-ws281x-csharp/src/rpi_ws281x/WS281x.cs:line 28
at TestAppCore.ColorWipe.Execute(AbortRequest request) in /home/daniel/Documents/RPI/rpi-ws281x-csharp/src/TestAppCore/ColorWipe.cs:line 27
at TestAppCore.Program.Main(String[] args) in /home/daniel/Documents/RPI/rpi-ws281x-csharp/src/TestAppCore/Program.cs:line 38
As stated here , your code works because there's a bug on mono (how ironic is that right?). Later I'll try the given solution and report back here
I've got it working. Basically I've done what they suggested, removed the array and set 2 fields
@DanielSSilva I'm coming in late to this, but are you saying you changed ws2811_t
to look like this?
[StructLayout(LayoutKind.Sequential)]
internal struct ws2811_t
{
public long render_wait_time;
public IntPtr device;
public IntPtr rpi_hw;
public uint freq;
public int dmanum;
public ws2811_channel_t channel_0;
public ws2811_channel_t channel_1;
}
I did that and got past the blittable error and am now into some invalid GPIO pin errors, but that may just mean me having to work through required changes based on the above. Just wanted to make sure I'm on the right track.
Hello @tillig. IIRC what I've done was something like that yes.
https://github.com/rpi-ws281x/rpi-ws281x-powershell/blob/master/src/Native/ws2811_t.cs#L16-L17
On that repo there's this project but with that small change on my side. Although that seemed to work, I've had some segmentation fault errors :(
I haven't got back to it, but if you need any help ping me!
@DanielSSilva Awesome, thanks! I'm going to continue muscling through and will ping you if needed - I appreciate that offer.