为什么openmv串口接收大量数据时会报错?
-
uart = UART(1, 38400, timeout_char=1000) uart.init(38400, bits=8, parity=None, stop=1, timeout_char=1000) clock = time.clock() def getImagefrom32(Imagelen,times): count = 0 print("This is getImagefrom32") Imagedata='' sendimage=[0x73,0x65,0x6E,0x64,0x69,0x6D,0x61,0x67,0x65,0x0d,0x0a] uart.write(bytearray(sendimage)) time.sleep_ms(20) while(True): if uart.any(): for i in range(times): if (i+1) !=times: re_data=uart.read(40) for i in range(0, len(re_data)): Imagedata = Imagedata + (hex(int(re_data[i]))).upper()[2:] count = count+1 print("count= ",count,"len of Imagedata= ",len(Imagedata)/2) else : number = Imagelen-40*i re_data=uart.read(number) for i in range(0, len(re_data)): Imagedata = Imagedata + (hex(int(re_data[i]))).upper()[2:] count = count+1 print("count= ",count) break print("len of Imagedata: ",len(Imagedata)) ![0_1679385633651_联想截图_20230321160026.png](https://fcdn.singtown.com/dddaefcf-90d9-4f94-b529-3e539446c636.png) 代码比较多,这里放最关键的一个函数。这个函数是让32发送一个JPEG图片的数据包到OPENMV,这个函数得到的参数Imagelen是JPEG图片数据流的字节数,times是我根据每次读40个字节,计算出来总共要读的次数。当32发送320*240图片,字节数大概在5000左右,如果波特率是9600或者19200,OPENMV可以收到,如果波特率增大,或者发送的图片变成640*480,图中while函数里面的for i in range(0, len(re_data)): 就会报错,说我的re_data没有长度,请问这是什么原因?
-
代码比较多,这里放最关键的一个函数。这个函数是让32发送一个JPEG图片的数据包到OPENMV,这个函数得到的参数Imagelen是JPEG图片数据流的字节数,times是我根据每次读40个字节,计算出来总共要读的次数。当32发送320240图片,字节数大概在5000左右,如果波特率是9600或者19200,OPENMV可以收到,如果波特率增大,或者发送的图片变成640480,图中while函数里面的for i in range(0, len(re_data)): 就会报错,说我的re_data没有长度,请问这是什么原因?
-