Velleman K8055, Unity3D and dinput8.dll

Hello,

We have been using the Velleman K8055/VM110 for a couple of years now with great success (up to 200 installations and growing). We are now trying to use the cross platform Unity3D programming environment (C#) to monitor external sensors via the Velleman K8055/VM110.

Unfortunately, Unity crashes if the Velleman is plugged in before the program is started.

“dinput8.dll caused an Access Violation (0xc0000005) in module dinput8.dll at 001b:6ce26324”

“Write to location 001bae40 caused an access violation”

Unity have noted the restriction of the Velleman under Win NT and have suggested I talk with you regarding what the limitations are and if you have an “off the shelf” solution for this product.

Because of the excellent service we have had from Velleman over the last 2 years we are keen to maintain the relationship as this side of our business rapidly grows and we are hopeful of finding a Velleman compliant solution.

With thanks,

Peter

Apparently you programming environment enumerates USB devices somehow when it starts? The file dinput8.dll is part of the Microsoft Direct Input library (DirectX). Maybe Unity3D mistakingly thinks the K8055 is an input device (like a keyboard, mouse, …).

We have never worked with or heard of the Unity application/programming environment, so we do not know what it expects from the K8055 dll/board… However, the card should be usable in .NET.

What restrictions did they find under Windows NT? Maybe this can shed some light

Thanks for getting back to me.

Unity3D is one of the leading 3D programming environments based on .NET Javascript and C#.

Unity suggested I run the Windows system dxdiag.exe to see how Direct Input was handling the K8055.


IThe Dxdiag.exe suffers the same fate as Unity:
AppName: dxdiag.exe AppVer: 5.3.2600.2180 ModName: dinput8.dll
ModVer: 5.3.2600.2180 Offset: 00016324
When I run it without the Velleman attached, it of course doesn’t know of the Velleman and doesn’t rescan.
If I run with the exception (ignore Direct Input) it again shows no USB devices attached.

Can you work out what is going on here? I am assuming that both Dxdiag.exe and Unity are calling Direct Input via dinput8.dll and this is where there is an incompatibility with the k8055?

Any guidance here would be very welcome.

Regards,

Peter

This DirectX / K8055 problem has been discussed in this forum earlier.
Please see the thread: K8055 HID problems
The solution seems to be DirectX version 10.

Thanks for that thread. Yes, the incompatibility of the K8055/VM100 board with DirectX 9c certainly seems to be the problem.

While DirectX 10 appears to be a solution; obviously it is only for Vista and later users. As WinXP can never have DirectX 10, is this incompatibility something Velleman is able to address at the board hardware level?

Regards,

Peter

Indeed, the problem occurs only with certain versions of DirectX. No problem with the old version neither with the latest version.
The problem seems to be that some of the DirectX versions 9 detect the K8055 wrongly.

Sorry - the cause (and solution) of this problem is unknown.