first commit
This commit is contained in:
89
main.py
Normal file
89
main.py
Normal file
@@ -0,0 +1,89 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import pyvisa
|
||||
import time
|
||||
import asyncio
|
||||
from src.api_finot_requests import ApiFinotCredentials
|
||||
|
||||
from core.config import Settings
|
||||
|
||||
config: Settings = Settings()
|
||||
api_finot_obj = ApiFinotCredentials()
|
||||
|
||||
|
||||
def connect_instrument(rm):
|
||||
try:
|
||||
my_instrument = rm.open_resource(
|
||||
f'TCPIP::{config.agilent_ip}::inst0::INSTR', open_timeout=5)
|
||||
my_instrument.timeout = 2
|
||||
time.sleep(1)
|
||||
return my_instrument
|
||||
|
||||
except Exception as err:
|
||||
print("Error de conexión, reconectar.", err)
|
||||
return False
|
||||
|
||||
async def agilent_visa():
|
||||
rm = pyvisa.ResourceManager()
|
||||
rm.list_resources()
|
||||
print(rm.list_resources())
|
||||
# connect to instrument
|
||||
my_instrument = connect_instrument(rm)
|
||||
while my_instrument is False:
|
||||
my_instrument = connect_instrument(rm)
|
||||
print("Reconectar...")
|
||||
await asyncio.sleep(.5)
|
||||
return False
|
||||
|
||||
# resetea el equipo
|
||||
my_instrument.write("*RST")
|
||||
|
||||
# inicia canales por defecto como vdc
|
||||
my_instrument.write('ROUT:SCAN (@101, 102, 103)')
|
||||
|
||||
try:
|
||||
my_instrument.write('*IDN?')
|
||||
print("IDN?", my_instrument.read())
|
||||
time.sleep(.5)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
await asyncio.sleep(.5)
|
||||
return False
|
||||
|
||||
# check channels estan iniciados
|
||||
channels = my_instrument.query('ROUT:SCAN?')
|
||||
channels = channels.strip()
|
||||
print("Channels:", channels[channels.find('@')+1:-1].split(','))
|
||||
|
||||
while True:
|
||||
finot_output = {}
|
||||
try:
|
||||
|
||||
for mag, channel in config.agilent_output.items():
|
||||
finot_output[mag] = float(
|
||||
my_instrument.query(f"{config.agilent_requests[channel]} (@{channel})"))
|
||||
await api_finot_obj.insert_values_api_finot(finot_output)
|
||||
|
||||
time.sleep(config.loop_time)
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print("Reset connection...")
|
||||
time.sleep(4)
|
||||
my_instrument = connect_instrument(rm)
|
||||
|
||||
async def create_entitie():
|
||||
api_finot_obj = ApiFinotCredentials()
|
||||
await api_finot_obj.create_file_api_finot(config.agilent_output)
|
||||
|
||||
# main
|
||||
if __name__ == "__main__":
|
||||
|
||||
# Create entitie if not exist
|
||||
# asyncio.run(create_entitie())
|
||||
|
||||
try:
|
||||
asyncio.run(agilent_visa())
|
||||
|
||||
except KeyboardInterrupt:
|
||||
exit(0)
|
||||
|
||||
Reference in New Issue
Block a user