Source code for neclib.devices.thermometer.model_218

import time

import astropy.units as u
import ogameasure

from ... import get_logger
from ...core.security import busy
from .thermometer_base import Thermometer


[docs]class Model218(Thermometer): """Thermometer, which can check tempareture of cryostat. Notes ----- Configuration items for this device: communicator : str Communicator of thermometer. GPIB or USB can be chosen. host : str IP address for GPIB communicator. If you use GPIB communicator, you must set this parameter. port : int GPIB port of using devices. Please check device setting. If you use GPIB communicator, you must set this parameter. usb_port : str USB port of using devices. If you use USB communicator, you must set this parameter. channel : Dict[str, int] Human-readable channel name. The value should be mapping from human readableversion (str) to device level identifier (int). You can assign any name to the channels. """ Manufacturer = "LakeShore" Model = "Model218" Identifier = "communicator" def __init__(self) -> None: self.logger = get_logger(self.__class__.__name__) if self.Config.communicator == "GPIB": com = ogameasure.gpib_prologix( host=self.Config.host, gpibport=self.Config.port ) self.thermometer = ogameasure.Lakeshore.model218(com) elif self.Config.communicator == "USB": self.thermometer = ogameasure.Lakeshore.model218_usb(self.Config.usb_port) else: self.logger.warning( f"There is not exsited communicator: {self.Config.communicator}." "Please choose USB or GPIB." ) com.send("KRDG? 0") time.sleep(0.1) _ = com.readline()
[docs] def get_temp(self, id: str) -> u.Quantity: ch = self.Config.channel[id] with busy(self, "busy"): data = self.thermometer.kelvin_reading_query(ch) time.sleep(0.1) return data * u.K
[docs] def finalize(self) -> None: self.thermometer.com.close()
[docs] def close(self) -> None: self.thermometer.com.close()