# Untitled - By: dell - Sun Aug 4 2024
#using uart1 PA9 PA10
#https://blog.csdn.net/u011144417/article/details/93738101
import sensor, image, time
from pyb import UART
import struct
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
#PA9-TXD;PA10-RXD
uart = UART(1, 9600, timeout_char=200)
clock = time.clock()
# 计算两个单精度浮点数的和
def add_float(a, b):
binary_a = struct.pack('f', a)
binary_b = struct.pack('f', b)
print(binary_a)
print(binary_b)
sum_binary = struct.pack('f', struct.unpack('f', binary_a)[0] + struct.unpack('f', binary_b)[0])
return struct.unpack('f', sum_binary)[0]
def send_data_packet(x, y):
csum=(x+y)%256
csum &= 0xFF # 强制截断
# print("csum=")
# print(csum)
# print("x=")
# print(x)
# print("y=")
# print(y)
# print(0x0d)
# print(0x0a)
# print("---\r\n")
temp = struct.pack("<bbiiBbb", #格式为俩个字符俩个整型
0xAA, #帧头1
0xAE, #帧头2
int(x), # up sample by 4 #数据1
int(y), # up sample by 4 #数据2
csum,
0x0D, #帧尾1
0x0A) #帧尾2
uart.write(temp) #串口发送
print(temp)
#uart.deinit() #关闭串口
while(True):
clock.tick()
img = sensor.snapshot()
# uart.write('a')
# uart.write('b')
# uart.write('A')
# uart.write(bytes([0x0d,0x0a]))
# #uart.write(bytes(0x0a))
# uart.write("Hello World!\r\n")
# uart.write('C')
# uart.write('D')
# uart.write(bytes([0x0d]))
# uart.write(bytes([0x0a]))
# data = bytearray([0xAA,0x55,0x07,0x12,0x74,0x0e,0x04,0x00,0x0d,0x0a])#转成16进制
# uart.write(data)
# uart.write("integer 2bytes,intnum=8\r\n")
intnum=8
print("integer 2bytes,intnum=8\r\n")
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=57\r\n")
print("integer 2bytes,intnum=57\r\n")
intnum=57
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=123\r\n")
intnum=123
print("integer 2bytes,intnum=123\r\n")
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=1452\r\n")
intnum=1452
print("integer 2bytes,intnum=1452\r\n")
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=32457\r\n")
intnum=32457
print("integer 2bytes,intnum=32457\r\n")
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=-32457\r\n")
intnum=-32457
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=-4757\r\n")
intnum=-4757
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=-241\r\n")
intnum=-241
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=-78\r\n")
intnum=-78
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=-5\r\n")
intnum=-5
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
# uart.write("integer 2bytes,intnum=0\r\n")
intnum=0
b = intnum.to_bytes(2,'big')
b1 = intnum.to_bytes(2,'little')
print(b)
print(b1)
uart.write(b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(b1)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
#把二进制转为int类型
# b = b'\xff\x01'
b=bytes([0x05,0xac])
print("here\r\n")
x = int.from_bytes(b,'big') #高位在前
x2 = int.from_bytes(b,'little') #低为在前
print(x)
print(x2)
#把浮点数转为字节,发送出去
fnum=3.1415
bytenum=struct.pack('f',fnum)
uart.write(bytenum+'\r'+'\n')
a=3.1415
b=3.1415
#大端,小端格式
binary_a = struct.pack('<f', a)
binary_b = struct.pack('>f', b)
print(binary_a)
print(binary_b)
uart.write(binary_a)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
uart.write(binary_b)
uart.write(bytes([0x0d]))
uart.write(bytes([0x0a]))
send_data_packet(12, 320)
send_data_packet(-12, 320)
send_data_packet(120, 152)
time.sleep_ms(3000)
print(clock.fps())
#uart.any #串口读取到任何有效字符,该函数返回1,否则返回0
#uart.read() #读取所有有效字符(此时返回的是字节串,即数组)
#uart.read().decode() #将读取的数据存入data(此时返回的是字符串)
#uart.read().decode().strip() #将读取的数据存入data(返回去掉回车换行符的字符串)
##将读取的数据存入data(返回去掉回车换行符并以“,”分隔的字符串数组)
#uart.read().decode().strip().split(",")
##如果获取到的data是一串数字,还可以通过
#data = uart.read().decode().strip() #将读取的数据存入data(返回去掉回车换行符的字符串)
#data = int(data) + 2 #将接收到的字符串类型的data转换为数字类型,并+2再传给data
#————————————————
# 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
#原文链接:https://blog.csdn.net/Stark_/article/details/114541031
# uart.write(data) #串口发送data里面的内容
# uart.write("data") #串口发送字符串“data”
# uart.writechar(65) #串口发送ASCALL码为65(十进制,如果是十六进制则为41)的字符,即字母A
# uart.deinit() #关闭串口
#uart.write(data_out +'\n')
#import struct
#def bytes_to_float(bytes, byteorder='big'):
# return struct.unpack(f'{byteorder}f', bytes)[0]
## 示例字节
#bytes_data = b'\x3f\x80\x00\x00'
## 转换为浮点数(使用大端字节序)
#float_data_big_endian = bytes_to_float(bytes_data, 'big')
## 转换为浮点数(使用小端字节序)
#float_data_little_endian = bytes_to_float(bytes_data, 'little')
#print(float_data_big_endian)
#print(float_data_little_endian)