6.1.7. A short description of the work with supported by programming languages¶
Library usage can be examinated from test application testapp. Non-C languages are supported because library supports stdcall calling convention and so can be used with a variety of languages.
C test project is located at “examples/testapp” directory, C# test project - at “xamples/testcs”, VB.NET - “examples/testvbnet”, Delphi 6 - “examples/testdelphi”, sample bindings for MATLAB - “examples/testmatlab”, for Java - “examples/testjava”, for Python - “examples/testpython”. Development kit also contains precompiled examples: testapp and testappeasy as 32 and 64-bit applications for Windows and 64-bit application for OSX, testcs, testvbnet, testdelphi - 32-bit only, testjava is architecture-independent, testmatlab and testpython are runtime-interpreted. Also the programming guide can be downloaded from this link.
SDK requires Microsoft Visual C++ Redistributable Package 2013 (provided with SDK - vcredist_x86 or vcredist_x64)
Testapp can be built using testapp.sln. Library must be compiled with MS Visual C++ too, mingw-library isn’t supported. Make sure that Microsoft Visual C++ Redistributable Package 2013 is installed.
Open solution examples/testapp/testapp.sln, build and run from the IDE.
Wrapper assembly for libximc.dll is wrappers/csharp/ximcnet.dll. It is provided with two different architectures and depends on .NET 2.0.
Test .NET applications for Visual Studio 2013 is located at testcs (for C#) and testvbnet (for VB.NET) respectively. Open solutions and build.
Wrapper for libximc.dll is a unit wrappers/delphi/ximc.pas Console test application for is located at “testdelphi”. Tested with Delphi 6 and only 32-bit version. Just compile, place DLL near the executable and run program.
Sample MATLAB program testximc.m is provided at the directory examples/testmatlab.
On OS X: copy ximc/macosx/libximc.framework, ximc/macosx/ wrappers/ximcm.h, ximc/ximc.h to the directory examples/ matlab. Install XCode compatible with Matlab.
On Linux: install libximc*deb and libximc-dev*dev of target architecture. Then copy ximc/macosx/wrappers/ximcm.h to the directory examples/matlab. Install gcc compatible with Matlab.
For XCode and gcc version compability check document or similar.
On Windows before the start nothing needs to be done. Change current directory in the MATLAB to the examples/matlab. Then launch in MATLAB prompt:
How to run example on Linux. Navigate to ximc-2.x.x./examples/testjava/compiled/ and run:
$ java -cp /usr/share/java/libjximc.jar:testjava.jar ru.ximc.TestJava
How to run example on Windows or Mac. Navigate to ximc-2.x.x./ examples/testjava/compiled/. Copy contents of ximc-2.x.x/ximc/win64 or ximc-2.x.x/ximc/macosx accordingly to the current directory. Then run:
$ java -classpath libjximc.jar -classpath testjava.jar ru.ximc.TestJava
How to modify and recompile an example. Navigate to examples/ testjava/compiled. Sources are embedded in a testjava.jar. Extract them:
$ jar xvf testjava.jar ru META-INF
Then rebuild sources:
$ javac -classpath /usr/share/java/libjximc.jar -Xlint ru/ximc/TestJava.java
or for windows or mac:
$ javac -classpath libjximc.jar -Xlint ru/ximc/TestJava.java
Then build a jar:
$ jar cmf META-INF/MANIFEST.MF testjava.jar ru
Change current directory to the examples/testpython. Before launch:
On OS X: copy library ximc/macosx/libximc.framework to the current directory.
On Linux: you may need to set LD_LIBRARY_PATH so Python can locate libraries with RPATH. For example, you may need:
On Windows before the start nothing needs to be done. Launch Python 2 or Python 3:
Generic logging facility. If you want to turn on file logging, you should run the program that uses libximc library with the “XILOG” environment variable set to desired file name. This file will be opened for writing on the first log event and will be closed when the program which uses libximc terminates. Data which is sent to/received from the controller is logged along with port open and close events.
Required permissions: libximc generally does not require special permissions to work, it only needs read/write access to USB-serial ports on the system. An exception to this rule is a Windows-only “fix_usbser_sys()” function - it needs elevation and will produce null result if run as a regular user.
C-profiles. C-profiles are header files distributed with the libximc library. They enable one to set all controller settings for any of the supported stages with a single function call in a C/C++ program. You may see how to use C-profiles in “testcprofile” example directory.
In case you are not familiar with Jupyter Notebooks check official documentation.
By default this notebook uses virtual controller. So you don’t need any real hardware. But if you have one, you can also test it with this notebook.