我已经在树莓派系统上工作了一段时间。我的几个传感器仍然有问题。我正在尝试使用 SDI-12 命令和设置来控制科学传感器。
首先,我使用 1200 波特率、7 个数据位、1 个奇偶校验位(偶校验)和一个停止位的标准。
#####
#pySerial python library
import serial
#####
import time
#####
#sonde is the name of the sensor
sonde=serial.Serial('/dev/ttyUSB0')
sonde.parity=serial.PARITY_EVEN
sonde.bytesize=serial.SEVENBITS
sonde.stopbits=serial.STOPBITS_ONE
sonde.baudrate=1200
#####
# Sometimes the devices take a while to respond, this is the standard mentioned
# in the devices manual.
sonde.timeout=30
sonde.break(12000)
#####
# The devices address is 0
sonde.write('0I!')
#####
# Wait 30 seconds before reading from the sensor
time.sleep(30)
for line in sonde:
print(line)
print('\n')
所有这些都符合标准,除了 SDI-12 使用 1 个起始位但 pySerial 没有该字段。我应该以其他方式考虑到这一点吗?
该设备具有制造商提供的线束,可将 SDI-12 接线转换为 RS-232。我一直使用标准串行到 USB 适配器将设备连接到 pi,该适配器已与其他传感器一起使用。
当我在 pi 上运行此代码时,终端显示我知道不正确的字符或符号。我的第一个想法是可能存在波特率关闭的问题,但我已经尝试了所有广泛使用的波特率。
除了尝试更多不属于 SDI-12 标准的设置之外,我不确定下一步该做什么。使用回车符 ('\r')、换行符 ('\n') 或两者的组合 ('\r\n') 对响应没有影响。
我应该怎么做才能看到这个命令的正确响应而不是乱码?