Package: pylinkam
pylinkamThis Python module provides Python bindings for the official C/C++ Linkam SDK. It enables monitoring and control of various instruments provided by Linkam Scientific. The library can optionally be used with thepintpackage to handle unit conversion.BackgroundWe use a Linkam HFS600E-PB4 stage with T96 controller for gas sensing experiments in theSwinburneSensor Technology Lab. This library has been parted out from our custom developed experiment software for general use. If you find the package useful we'd love to hear about your projects!InstallationNote that the Linkam SDK binary files (LinkamSDK.dllorlibLinkamSDK.so) and the required license file (typicallyLinkam.lsk) arenotdistributed as part of this module.By default, the module will look for the Linkam SDK binary using the$PATHenvironment variable via thectypesmodule and will automatically append the module directory before searching.PlaceLinkamSDK.dll(debug or release) andLinkam.lskfiles inside thepylinkammodule folder(the one that contains__init__.py). Alternately, at runtime you can specify a binary name (remove the.dllextension on Windows) and path to access these files.Rundemo.pyto check for any connection/path issues. This will set the stage temperature to 25°C temporarily.Getting Module Path and TroubleshootingRunning the following in a Python console/environment should tell you where the place theLinkamSDK.dll(or Linux equivilent) andLinkam.lskfiles.importpylinkamprint(pylinkam.__file__)The SDK also generates log files in this directory by default, this is the first place to check when diagnosing issues. If you see license errors (quite common even in legimate installations) you'll need to contact your equipment supplier or Linkam support.UsageContext Manager ExampleInitialise the SDK by creating an instance ofpylinkam.sdk.SDKWrapperproviding optional paths for SDK binary files and the license file. Once initialised, use theconnect()method to create a context manager for the connection to a device.frompylinkamimportinterface,sdkwithsdk.SDKWrapper()aswrapper:withwrapper.connect()asconnection:print(f"Name:{connection.get_controller_name()}")temperature=connection.get_value(interface.StageValueType.HEATER1_TEMP)connection.set_value(interface.StageValueType.HEATER_SETPOINT,30)Manual ExampleYou can also use the classes directly without context managers, but you'll have to close connections manually to avoid memory leaks.frompylinkamimportinterface,sdkconnection=sdk.SDKWrapper().connect_usb()print(f"Name:{connection.get_controller_name()}")temperature=connection.get_value(interface.StageValueType.HEATER1_TEMP)connection.set_value(interface.StageValueType.HEATER_SETPOINT,30)connection.close()Python VersionsThis library requires a minimum of Python 3.6 to function. Newer versions should be compatible.CPU ArchitectureThis library has only been tested on 64-bit x86 processors.Tested DevicesThis library has been developed for the following Linkam instruments/addons, a check indicates that functionality has been verified on working hardware:T96 System Controller (via USB)T96 System Controller (via RS-232, might work :shrug:)HFS600E-PB4 Probe Stage (all stages should be supported)RH95 Humidity ControllerLNP96 Cooling Option (should work)Note that connecting multiple devices to a single host is untested, though the connect functions per the Linkam APIcanaccept a serial number.Tested API Versions and Platformsv3.0.5.5on Windows 10v3.0.15.35on Windows 10v3.0.19.12on Windows 10In theory the SDK binary files for Linux should have identical mappings, but this hasn't been tested. Versions< 1.2.3usedWinDLLto load the Linkam SDK binary, however more recent versions will automatically detect the platform and useCDLLwhen not on Windows. We don't have hardware connected to a Linux machine to test, so please report any issues.AcknowledgmentsDeveloped atSwinburne University of Technology. If used in an academic or research project, please consider citing this work as it helps attract funding and track research outputs:C. J. Harrison and M. Shafiei. pylinkam. (2022). [Online]. doi: https://doi.org/10.5281/zenodo.6758012This activity received funding fromARENAas part of ARENA’s Research and Development Program – Renewable Hydrogen for Export (Contract No. 2018/RND012). The views expressed herein are not necessarily the views of the Australian Government, and the Australian Government does not accept responsibility for any information or advice contained herein.DisclaimerThis library is not an official product or service of Linkam Scientific Instruments Ltd. This library is not endorsed, sponsored, or supported by Linkam Scientific Instruments Ltd. The name Linkam as well as related names, marks, emblems, and images are registered trademarks of their respective owners.