Код: Выделить всё
import datetime
import time
import serial
import asyncio
async def tcp_serial_ip_client():
host = '192.168.10.1' # Server's IP address
port = 6889 # Server port
reader, writer = await asyncio.open_connection(host, port)
#list of command stings for meter
id_message= '*IDN?\n'
reset_message = '*RST\n'
autosave_message='SYST:KEY NEXT NEXT NEXT ENTER PREV ENTER ESC\n'
measurement_start_message= 'INIT START\n'
measurement_trigger_message= 'MEAS:INIT\n'
measurement_query_message= 'MEAS:SLM:123? LAEQ\n'
measurement_end_message= 'INIT STOP\n'
# resets the meter to be in a known state for remote command
writer.write(reset_message.encode())
await writer.drain()
time.sleep(1)
# queries and returns the id info for the meter
writer.write(id_message.encode())
await writer.drain()
time.sleep(3)
data = await reader.read(1024)
print(f'Received: {data.decode()!r}')
# executes keypresses on the noise meter to enable autosave function
writer.write(autosave_message.encode())
await writer.drain()
time.sleep(3)
data = await reader.read(1024)
print(f'Received: {data.decode()!r}')# ok is returned if successful
# begin measurement
writer.write(measurement_start_message.encode())
await writer.drain()
time.sleep(6)
start_datetime = datetime.datetime.now()
print(start_datetime)
count = 0
while True:
# trigger a new reading
writer.write(measurement_trigger_message.encode())
await writer.drain()
# query previously triggered reading
writer.write(measurement_query_message.encode())
await writer.drain()
data = await reader.read(1024)
print("measurement time: ", datetime.datetime.now())
print(f"Server response: {data.decode()}")
time.sleep(1)
count += 1
#after 15 readings stop the measurement on the meter
if count > 15:
writer.write(measurement_end_message.encode())
await writer.drain()
break
#end connection once reading is complete
print('Close the connection')
writer.close()
await writer.wait_closed()
asyncio.run(tcp_serial_ip_client())
Любые советы о том, как лучше всего добиться этого, будут приветствоваться, поскольку мои попытки решить эту проблему пока не увенчались успехом.