1、实验环境
两个usb转485模块
2、接线方式
接线需要交叉接线
3、测试方式
windows端使用常规的串口软件,设置好串口参数。
安装了Python的树莓派中运行如下代码:
serial.py
import serial
import time
import sqlite3
# 加载串口端口信息
ser = serial.Serial("/dev/ttyUSB0", 9600, timeout=0.5) # 57600为了和仪器的波特率匹配
ser.flushInput() # 将serial上的接收数据全部清除
recv=0
localtime=''
# 由于串口接收到的数据为二进制数据,需要将数据进行转换才能读取
def returnvalue(count):
recv = list(ser.read(count))
recv = str(bytes(recv), encoding='UTF-8')
data = ser.read(20)
print(recv)
print(data)
return data
# 开始不停接收数据,直到keyboardInterrupt
while (True):
count = ser.inWaiting() # 将缓存内的数据读取到count上。使用print观察接收到的二进制数组的个数
localtime = time.asctime(time.localtime(time.time())) #打印当前时间
print(count)
print(localtime)
if count != 0: # 如果接收到信息,则解码输出
print(count)
print(returnvalue(recv),localtime)
print(returnvalue(recv))
print('ends')
time.sleep(5) # 程序暂停5秒,等待缓存内存入数据。
此代码,仅作为测试使用,后面我继续维护这个代码。