3DxWare SDK Version 3
Moderator: Moderators
3DxWare SDK Version 3
Use this topic to discuss the 3DxWare SDK Version 3.
The primary motivation for version 3 of the 3DxWare SDK is to support the new capabilities of 3DxWare 10:
· In conjunction with 3DxWare 10, your application can now support multiple simultaneously connected devices and run-time Plug-n-Play (PnP) of those devices.
· Your application can interrogate the number and type of connected devices. You can address each device separately if you want or them all as a group.
· This opens all sorts of interesting possibilities and fulfills one of the most popular requests we consistently receive.
· A 3Dx device no longer has to be connected when your application starts. The end-user can connect, disconnect and change devices at any time.
· A new event is sent to your application when a device leaves or arrives.
· 3DxWare 10 also supports the use of other Microsoft APIs (in addition to the API in this SDK).
Additional change details from previous releases:
· Simplify API structure. Deprecate SiCfg saving functions and SiSync extension.
· SDK license no longer allows redistribution of DLL binary files (these are always included in the driver user installation).
· Only USB devices are supported.
· The static libraries were all moved into the same directory under lib (x86/x64).
· Added prebuilt versions of the static libraries for four CRT usages: Multi-threaded DLL (default), Multi-threaded Debug DLL (D suffix), Multi-threaded (static) (MT suffix), Multi-threaded Debug (static) (MTD suffix).
· Some of the include files have been cleaned up and split. This should not affect existing code.
The primary motivation for version 3 of the 3DxWare SDK is to support the new capabilities of 3DxWare 10:
· In conjunction with 3DxWare 10, your application can now support multiple simultaneously connected devices and run-time Plug-n-Play (PnP) of those devices.
· Your application can interrogate the number and type of connected devices. You can address each device separately if you want or them all as a group.
· This opens all sorts of interesting possibilities and fulfills one of the most popular requests we consistently receive.
· A 3Dx device no longer has to be connected when your application starts. The end-user can connect, disconnect and change devices at any time.
· A new event is sent to your application when a device leaves or arrives.
· 3DxWare 10 also supports the use of other Microsoft APIs (in addition to the API in this SDK).
Additional change details from previous releases:
· Simplify API structure. Deprecate SiCfg saving functions and SiSync extension.
· SDK license no longer allows redistribution of DLL binary files (these are always included in the driver user installation).
· Only USB devices are supported.
· The static libraries were all moved into the same directory under lib (x86/x64).
· Added prebuilt versions of the static libraries for four CRT usages: Multi-threaded DLL (default), Multi-threaded Debug DLL (D suffix), Multi-threaded (static) (MT suffix), Multi-threaded Debug (static) (MTD suffix).
· Some of the include files have been cleaned up and split. This should not affect existing code.
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
By the way, I'm running visual studio 2010...
so, I get that error in release mode. in debug mode I get an error. When I dod sxstrace, I get the following information
so, I get that error in release mode. in debug mode I get an error. When I dod sxstrace, I get the following information
Code: Select all
=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = AMD64
CultureFallBacks = en-US;en
ManifestPath = C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\3DxTest.exe
AssemblyDirectory = C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\
Application Config File =
-----------------
INFO: Parsing Manifest File C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\3DxTest.exe.
INFO: Manifest Definition Identity is (null).
INFO: Reference: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
INFO: Resolving reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
INFO: Resolving reference for ProcessorArchitecture x86.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.
=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = Wow32
CultureFallBacks = en-US;en
ManifestPath = C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\3DxTest.exe
AssemblyDirectory = C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\
Application Config File =
-----------------
INFO: Parsing Manifest File C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\3DxTest.exe.
INFO: Manifest Definition Identity is (null).
INFO: Reference: Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
INFO: Resolving reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
INFO: Resolving reference for ProcessorArchitecture WOW64.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
INFO: Resolving reference for ProcessorArchitecture x86.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\3Dconnexion\3DxWare SDK\Demos\3DxTest\bin\win32i\debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.
IBlues1976
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
Yes, you do have to install the release (or beta) 3DxWare driver for the device.
We have had a couple of people test the debug builds of all the SDK samples with VS2010 SP1, on W7, both x86 and x64. The projects build and run for us, after conversion, of course. We also tested them with 3DxWare 6 and 3DxWare 10 beta.
I'll admit that I had to completely reinstall VS2010 on one of my machines, because VS hung when I tried to do anything at all. After the reinstall, it works fine. It could have been a dodgy install, as I can't recall ever using it on that machine.
Are you on an x86 machine or x64, building x86 or x64? I see manifest stitching going on in your sxstrace output.
We have had a couple of people test the debug builds of all the SDK samples with VS2010 SP1, on W7, both x86 and x64. The projects build and run for us, after conversion, of course. We also tested them with 3DxWare 6 and 3DxWare 10 beta.
I'll admit that I had to completely reinstall VS2010 on one of my machines, because VS hung when I tried to do anything at all. After the reinstall, it works fine. It could have been a dodgy install, as I can't recall ever using it on that machine.
Are you on an x86 machine or x64, building x86 or x64? I see manifest stitching going on in your sxstrace output.
Button events
I never receive an SI_BUTTON_PRESS_EVENT nor an SI_BUTTON_RELEASE_EVENT event I only ever receive an SI_BUTTON_EVENT and I receive two of those in response to a single button press and release. I'm not sure if that's what you intended?
I understood the SI_BUTTON_EVENT event to be deprecated?
Thanks, Ed
I understood the SI_BUTTON_EVENT event to be deprecated?
Thanks, Ed
Button events
I never receive an SI_BUTTON_PRESS_EVENT nor an SI_BUTTON_RELEASE_EVENT event I only ever receive an SI_BUTTON_EVENT and I receive two of those in response to a single button press and release. I'm not sure if that's what you intended?
I understood the SI_BUTTON_EVENT event to be deprecated?
Thanks, Ed
I understood the SI_BUTTON_EVENT event to be deprecated?
Thanks, Ed
Re: Button events
Sorry Ed. The current state is that SI_BUTTON_EVENT is implemented (it always will be), and SI_BUTTON_PRESS/RELEASE_EVENT are TBD.ed_smith wrote:I never receive an SI_BUTTON_PRESS_EVENT nor an SI_BUTTON_RELEASE_EVENT event I only ever receive an SI_BUTTON_EVENT and I receive two of those in response to a single button press and release. I'm not sure if that's what you intended?
I understood the SI_BUTTON_EVENT event to be deprecated?
Thanks, Ed
Thanks for bringing this up, so others won't be confused.
-
- Posts: 10
- Joined: Wed Feb 22, 2012 3:53 pm
-
- Posts: 11
- Joined: Tue Nov 27, 2012 2:39 am
Re: 3DxWare SDK Version 3
Hello,
I recently started to test version 3 out, and I have two issues. I am using Windows 7 64 bit with a SpaceNavigator.
The first issue I am having is that I never get any SI_DEVICE_CHANGE_EVENT in my application. It also looks like I never get those events in the 3DxTest32 either (I never see anything printed about connection/disconnection as the code sample says that example should do). It does however work just fine to disconnect and then connect and continue using the spacenavigation without restarting. Did anyone else experience this issue?
The second issue I am having is more of a question. When a SI_DEVICE_CHANGE_EVENT is obtained it is possible to get a device ID. Is it also possible to get a device id connected to a Motion event when two devices are connected. I have not found anything about this in the documentation. I would like to have one window receiving events from multiple connected SpaceNavigators but differ between them by the device Id. Currently I only have one SpaceNavigator so I can not really test to see where they differ and/or if something in the data is consistent even after disconnecting/connecting a device.
Thank you for your response.
Markus
I recently started to test version 3 out, and I have two issues. I am using Windows 7 64 bit with a SpaceNavigator.
The first issue I am having is that I never get any SI_DEVICE_CHANGE_EVENT in my application. It also looks like I never get those events in the 3DxTest32 either (I never see anything printed about connection/disconnection as the code sample says that example should do). It does however work just fine to disconnect and then connect and continue using the spacenavigation without restarting. Did anyone else experience this issue?
The second issue I am having is more of a question. When a SI_DEVICE_CHANGE_EVENT is obtained it is possible to get a device ID. Is it also possible to get a device id connected to a Motion event when two devices are connected. I have not found anything about this in the documentation. I would like to have one window receiving events from multiple connected SpaceNavigators but differ between them by the device Id. Currently I only have one SpaceNavigator so I can not really test to see where they differ and/or if something in the data is consistent even after disconnecting/connecting a device.
Thank you for your response.
Markus
Re: 3DxWare SDK Version 3
Hi MarkusSenseGraphics,
SI_DEVICE_CHANGE_EVENT requires the last software stack: 3DxWare 10 for Windows, currently in beta.
If you do not have 3DxWare 10 installed, you can the latest beta build from 3Dconnexion's labs page.
SI_DEVICE_CHANGE_EVENT requires the last software stack: 3DxWare 10 for Windows, currently in beta.
If you do not have 3DxWare 10 installed, you can the latest beta build from 3Dconnexion's labs page.
-
- Posts: 11
- Joined: Tue Nov 27, 2012 2:39 am
Re: 3DxWare SDK Version 3
I forgot to add which version I was using.
I have 3dxSoftWare 3.16.1 (x64 edition) installed. I was under the impression that this was the correct one.
I guess it was not.
Sorry for asking such a stupid question. Thank you for your answer.
Do you have any idea regarding the second question?
I have 3dxSoftWare 3.16.1 (x64 edition) installed. I was under the impression that this was the correct one.
I guess it was not.
Sorry for asking such a stupid question. Thank you for your answer.
Do you have any idea regarding the second question?
Re: 3DxWare SDK Version 3
We're working on the SDK document to add the event and functions new in 3DxWare 10. We're sorry for the inconvience of not having this data.
You should be able to tell a device from another by using the "portName" (a string) member of the struct passed in to calls of SiOpenPort() and SiGetDevicePort().
You should be able to tell a device from another by using the "portName" (a string) member of the struct passed in to calls of SiOpenPort() and SiGetDevicePort().
-
- Posts: 11
- Joined: Tue Nov 27, 2012 2:39 am
Re: 3DxWare SDK Version 3
Thank you,
Documentation is always an ongoing project, never quite finished
I think I might have misunderstood the ways multiple device connections should work. I will make sure I get another device in order to test and implement properly.
Thank you for your patience.
Documentation is always an ongoing project, never quite finished
I think I might have misunderstood the ways multiple device connections should work. I will make sure I get another device in order to test and implement properly.
Thank you for your patience.
Re: 3DxWare SDK Version 3
Multiple devices work by opening one handle for each. The events from each device arrive on the handle that was opened for it.
You can handle the individual SI_DEVICE_CHANGE_CONNECTs using SiOpenPort with the portName in the event, or just close everything and open everything again with SiOpen (using indexes). Whichever works for your application. Our puzzle demo does the former, 3DxConfig does the latter.
You can handle the individual SI_DEVICE_CHANGE_CONNECTs using SiOpenPort with the portName in the event, or just close everything and open everything again with SiOpen (using indexes). Whichever works for your application. Our puzzle demo does the former, 3DxConfig does the latter.