上位机端,发送的是字符串的每个字节,在下位机中接收到每个字节之后,再综合处理得到数据。
比如
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())