赞
踩
上位机端,发送的是字符串的每个字节,在下位机中接收到每个字节之后,再综合处理得到数据。
比如
aa=123
outstr=str(aa)
uart.write(outstr[0])
uart.write(outstr[1])
uart.write(outstr[2])
下位机接收到每个字节之后,用str_long函数整合成long型,这样就不用联合体了。
/****************************************************************** 功能:将一个字符串转为32位长整型变量,比如"1234"转为1234 参数:str:指向待转换的字符串 返回:转换后的数值 ******************************************** **********************/ unsigned long Str_Long(char *str,unsigned char len) { unsigned long temp=0; unsigned long fact=1; // unsigned char len=strlen(str); // <string.h>头文件包含strlen()函数 unsigned char i; // strlen()函数计算的字符串长度不包含最后一个空字符(值0) for(i=len;i>0;i--) { temp+=((str[i-1]-0x30)*fact); // 数组下标从0开始 fact*=10; } return temp; }
得到long型之后,再计算,这里传入的形参长度应是len=3…
上位机发送肯定知道长度,也可以把长度一起发送过。
如果是浮点数,也一样,先将浮点数乘以100或者10,1000,放大,成整数,然后转换成str类型,在发送
比如。
aa=1234.45
bb=aa*100
outstr=str(bb)
在发送6个字节数据。
uart.write(outstr[0])
uart.write(outstr[1])
uart.write(outstr[2])
uart.write(outstr[3])
uart.write(outstr[4])
uart.write(outstr[5])
下位机就进行处理。
得到整数,再除以100.
得到浮点数
# Untitled - By: Administrator - 周二 九月 22 2020 import sensor, image, time from pyb import UART uart=UART(1,9600) uart.init(9600, bits=8, parity=None, stop=1) # init with given parameters sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) clock = time.clock() while(True): #查十次,看下是不是都测试对 clock.tick() img = sensor.snapshot() img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens. for code in img.find_qrcodes(): img.draw_rectangle(code.rect(), color = (255, 0, 0)) # print(code) output_str=str(code.payload()) aa=code.x() bb=code.y() cc=aa+bb data = bytearray([aa,bb])#转成16进制 output_str="%.2f" % (code.x()) #10进制字符包 cc=63.4; output_str=str(cc) #10进制字符包 uart.writechar(0xab) uart.writechar(0x01) uart.write(cc[0]) #uart.write(output_str[0])#1---a,包括了+0x30的数据,不是原始的 #uart.write(output_str[1]) #uart.write(output_str[2]) #uart.write(output_str[3]) #uart.write(output_str[4]) print(code.x()) #uart.write(bb) #uart.write(cc) #uart.writechar(0xab) #uart.writechar(0x01) #uart.write(code.payload())#'\r\n' #abc[abc{123+123}....cab[cba #a---1 b--2 c--3#### output_str=str(code.payload())#10进制字符包 #uart.write(output_str[0])#1---a,包括了+0x30的数据,不是原始的 #uart.write(output_str[1])#取一个个字节出来发送 #uart.write(output_str[2]) #uart.write(output_str[3]) #uart.write(output_str[4]) #uart.write(output_str[5]) #uart.write(output_str[6]) #uart.writechar(0xba) #print(code.payload()) print(clock.fps())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。