measComp: EPICS Drivers for Measurement Computing Devices

March 22, 2018

Mark Rivers

University of Chicago

Introduction

This package provides EPICS drivers for the some of the USB and Ethernet I/O modules from Measurement Computing. Currently the USB-CTR04/08 and USB-4303 counter/timer, and multi-function modules (E-1608, USB-1208LS, USB-1208FS, USB-1608G, USB-1608GX-2A0, USB-231, USB-2408-2A0, TC-32) are supported. The multi-function modules support analog input and/or output, temperature input (USB-2408-2AO, E-TC, and TC-32), digital input/output, pulse counters (all but TC-32), and pulse generators (USB-1608G and USB-1608GX-2A0) These drivers are documented separately.

This module is supported on both Windows and Linux, 64-bit and 32-bit. On Windows it uses the Measurement Computing "Universal Library" (UL), which is only available on Windows. On Linux it uses the [low-level drivers from Warren Jasper](https://github.com/wjasper/Linux_Drivers). On top of these drivers the module provides a layer that emulates the Windows UL library from Measurement Computing. The EPICS drivers thus always use the UL API and are identical on Linux and Windows. The Linux UL layer is independent of EPICS, and uses std::thread and std::mutex to provide the required threading and mutex capabilities. These methods require C++11, and so will not build with very old compilers. They do build with gcc 4.8.5 on RHEL 7/Centos 7, and gcc 4.4.7 on RHEL 6/Centos 6. Currently only the E-1608, E-TC and E-TC32 models are supported on Linux. Support for other modules is straightforward to add and can be done as the demand arises.


Suggestions and Comments to:
Mark Rivers : (rivers@cars.uchicago.edu)