Source code for msl.equipment.constants

"""
MSL-Equipment constants.
"""
from __future__ import annotations

import datetime
import enum
import re
import sys

import serial

CR = b'\r'
LF = b'\n'

IS_LINUX: bool = sys.platform == 'linux'
IS_WINDOWS: bool = sys.platform == 'win32'

REGEX_SDK = re.compile(
    r'SDK::(?P<path>.+)',
    flags=re.IGNORECASE
)

REGEX_SERIAL = re.compile(
    r'(COM|ASRL|ASRLCOM)((?P<dev>/dev/[^\s:]+)|(?P<number>\d+))',
    flags=re.IGNORECASE
)

REGEX_SOCKET = re.compile(
    r'(?P<prefix>SOCKET|TCP|UDP|TCPIP\d*)::(?P<host>[^\s:]+)::(?P<port>\d+)(?P<suffix>::SOCKET)?',
    flags=re.IGNORECASE
)

# TCPIP[board]::host address[::LAN device name][::INSTR]
REGEX_TCPIP = re.compile(
    r'TCPIP(?P<board>\d*)'
    r'::(?P<host>[^\s:]+)'
    r'(::(?P<name>([^\s:]+\d+(\[.+])?)))?'
    r'(::INSTR)?$',
    flags=re.IGNORECASE
)

REGEX_PROLOGIX = re.compile(
    r'Prologix::'
    r'(?P<name>[^\s:]+)'
    r'(?P<port>::1234)?'
    r'(::GPIB\d*)?'
    r'::(?P<pad>\d+)'
    r'(::(?P<sad>\d+))?',
    flags=re.IGNORECASE
)

REGEX_ZMQ = re.compile(
    r'ZMQ::(?P<host>[^\s:]+)::(?P<port>\d+)',
    flags=re.IGNORECASE
)

REGEX_GPIB = re.compile(
    r'GPIB(?P<board>\d{0,2})(::((?P<pad>\d+)|(?P<name>[^\s:]+)))?(::(?P<sad>\d+))?',
    flags=re.IGNORECASE
)

DEFAULT_DATE = datetime.date(datetime.MINYEAR, 1, 1)


[docs] class Backend(enum.IntEnum): """ The software backend to use for the communication system. """ UNKNOWN = 0 MSL = 1 PyVISA = 2 NIDAQ = 3
[docs] class Interface(enum.IntEnum): """ The interface to use for the communication system that transfers data between a computer and the equipment. Only used if :data:`Backend.MSL <msl.equipment.constants.Backend.MSL>` is chosen as the backend. """ NONE = 0 SDK = 1 SERIAL = 2 SOCKET = 3 PROLOGIX = 4 TCPIP_VXI11 = 5 TCPIP_HISLIP = 6 ZMQ = 7 GPIB = 8
[docs] class Parity(enum.Enum): """ The parity type to use for Serial communication. """ NONE = serial.PARITY_NONE ODD = serial.PARITY_ODD EVEN = serial.PARITY_EVEN MARK = serial.PARITY_MARK SPACE = serial.PARITY_SPACE
[docs] class StopBits(enum.Enum): """ The number of stop bits to use for Serial communication. """ ONE = serial.STOPBITS_ONE ONE_POINT_FIVE = serial.STOPBITS_ONE_POINT_FIVE TWO = serial.STOPBITS_TWO
[docs] class DataBits(enum.IntEnum): """ The number of data bits to use for Serial communication. """ FIVE = serial.FIVEBITS SIX = serial.SIXBITS SEVEN = serial.SEVENBITS EIGHT = serial.EIGHTBITS