我正在尝试使用pymodbus Callback Sever将 RS252 Ascii 字符串数据从传感器转换为 Modbus TCP 输入/保持寄存器,当请求客户端记录器时,服务器是主报告数据,我不确定我需要做什么才能得到这工作。我目前能够读取数据并将其记录到 csv 文件中
#!/usr/bin/env python
# Log data from serial port
import argparse
import serial
import datetime
import time
import os
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-d", "--device", help="device to read from", default="/dev/ttyUSB0")
parser.add_argument("-s", "--speed", help="speed in bps", default=9600, type=int)
args = parser.parse_args()
outputFilePath = os.path.join(os.path.dirname(__file__),
datetime.datetime.now().strftime("%Y-%m-%d") + ".csv")
with serial.Serial(args.device, args.speed) as ser, open(outputFilePath,'w') as outputFile:
print("Logging started. Ctrl-C to stop.")
try:
while True:
time.sleep(0.2)
x = (ser.read(ser.inWaiting()))
data = x.decode('UTF-8')
if data !="":
outputFile.write(time.strftime("%Y/%m/%d %H:%M ") + " " + data )
outputFile.flush()
except KeyboardInterrupt:
print("Logging stopped")
来自传感器的字符串从设备中出来:
0.00 0.0 0.0 346.70 25.14
我需要将每个部分都作为自己的 Modbus 寄存器,并且我正在尝试在 Raspberry Pi Zero 上使用 pymodbus。传感器每秒更新 4 次,我能够将数据分成几部分,但我还没有做到这一点,因为我不确定我需要在回调脚本中做什么,我还不太精通 Python我还在学习中。我确实了解 Modbus TCP,并且之前在 Arduino 系统上使用过它。任何帮助,将不胜感激。