因此,较大项目的一部分需要使用树莓派从串行端口接收一个长的十六进制字符串。我以为我已经完成了所有工作,但后来发现它在字符串中间丢失了一大块数据。
def BUTTON_Clicked(self, widget, data= None):
ser = serial.Serial("/dev/ex_device", 115200, timeout=3)
RECEIVEDfile = open("RECIEVED.txt", "r+", 0) #unbuffered
#Commands sent out
ser.write("*n\r")
time.sleep(1)
ser.flush()
ser.write("*E")
ser.write("\r")
#Read back string rx'd
RECEIVED= ser.read()
RECEIVED= re.sub(r'[\W_]+', '', RECEIVED) #remove non-alphanumeric characters (caused by noise maybe?)
RECEIVEDfile.write(re.sub("(.{4})", "\\1\n", RECEIVED, 0, re.DOTALL)) #new line every 4 characters
RECEIVEDfile.close
ser.write("*i\r")
ser.close
这是用于检索数据的脚本,波特率和串行命令设置正确,脚本作为“无缓冲”(-u)运行,但未保存完整字符串。该字符串大约有 16384 个字符长,但只保存了大约 9520 个字符(它会有所不同)(无法提供用于分析的字符串)。有人知道我错过了什么吗?为你能给我的任何帮助干杯。