当前位置:   article > 正文

发送整数,字符串等总结_uart.write()函数

uart.write()函数

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

得到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())

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/759322
推荐阅读
相关标签
  

闽ICP备14008679号