first commit

This commit is contained in:
Alvaro Garcia Molino
2024-12-17 14:42:57 +01:00
commit c16f0b53e0
4 changed files with 359 additions and 0 deletions

89
main.py Normal file
View 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)