datalogd.plugins.thorlabspm100_datasource module¶
- class datalogd.plugins.thorlabspm100_datasource.ThorlabsPM100DataSource(sinks=[], serial_number=None, interval=1.0)[source]¶
Bases:
ThorlabsPMDataSourceProvide data from a Thorlabs PM100 laser power meter.
This is a wrapper around
ThorlabsPMDataSourcewith the appropriate USB PID used as default. See its documentation regarding configuring permissions for accessing the USB device.- Parameters:
serial_number – Serial number of power meter to use. If
None, will use the first device found.interval – How often to poll the sensors, in seconds.
- class datalogd.plugins.thorlabspm100_datasource.ThorlabsPM16DataSource(sinks=[], serial_number=None, interval=1.0)[source]¶
Bases:
ThorlabsPMDataSourceProvide data from a Thorlabs PM16 laser power meter.
This is a wrapper around
ThorlabsPMDataSourcewith the appropriate USB PID (0x807c) used as default. See its documentation regarding configuring permissions for accessing the USB device.- Parameters:
serial_number – Serial number of power meter to use. If
None, will use the first device found.interval – How often to poll the sensors, in seconds.
- class datalogd.plugins.thorlabspm100_datasource.ThorlabsPM400DataSource(sinks=[], serial_number=None, interval=1.0)[source]¶
Bases:
ThorlabsPMDataSourceProvide data from a Thorlabs PM400 laser power meter.
This is a wrapper around
ThorlabsPMDataSourcewith the appropriate USB PID used as default. See its documentation regarding configuring permissions for accessing the USB device.- Parameters:
serial_number – Serial number of power meter to use. If
None, will use the first device found.interval – How often to poll the sensors, in seconds.
- class datalogd.plugins.thorlabspm100_datasource.ThorlabsPMDataSource(sinks=[], serial_number=None, usb_vid='0x1313', usb_pid='0x8078', interval=1.0)[source]¶
Bases:
DataSourceProvide data from a Thorlabs laser power meter.
This uses the VISA protocol over USB. On Linux, read/write permissions to the power meter device must be granted. This can be done with a udev rule such as:
/etc/udev/rules.d/52-thorlabs-pm.rules¶# Thorlabs PM100D SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="1313", ATTRS{idProduct}=="8078", OWNER="root", GROUP="plugdev", MODE="0664" # Thorlabs PM400 SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="1313", ATTRS{idProduct}=="8075", OWNER="root", GROUP="plugdev", MODE="0664" # Thorlabs PM16 Series SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="1313", ATTRS{idProduct}=="807c", OWNER="root", GROUP="plugdev", MODE="0664"where the
idVendorandidProductfields should match that listed from runninglsusb. Theplugdevgroup must be created and the user added to it:groupadd plugdev usermod -aG plugdev yourusername
A reboot will then ensure permissions are set and the user is a part of the group (or use
udevadm control --reloadand re-login). To check the permissions have been set correctly, get the USB bus and device numbers from the output oflsusb. For examplelsusb¶Bus 001 Device 010: ID 1313:8075 ThorLabs PM400 Handheld Optical Power/Energy Meter
the bus ID is 001 and device ID is 010. Then list the device using
ls -l /dev/bus/usb/[bus ID]/[device ID]ls /dev/bus/usb/001/010 -l¶crw-rw-r-- 1 root plugdev 189, 9 Mar 29 13:19 /dev/bus/usb/001/010
The middle “rw” and the “plugdev” indicates read-write permissions enabled to any user in the plugdev group. You can check which groups your current user is in using the
groupscommand.Note that you may also allow read-write access to any user (without having to use/create a plugdev group) by changing the lines in the udev rule to
MODE="0666"and removing theGROUP="plugdev"part.- Parameters:
serial_number – Serial number of power meter to use. If
None, will use the first device found.usb_vid – USB vendor ID (0x1313 or 4883 for Thorlabs).
usb_pid – USB product ID (0x8078 for PM100D, 0x8075 for PM400).
interval – How often to poll the sensors, in seconds.