rpi-ws281x / rpi-ws281x-csharp

C# / .NET library wrapper for the rpi-ws281x library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exception is thrown when using .NET Core

Urmel11 opened this issue · comments

commented

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.