OPENV接收和发送串口的数据
import sensor, image, time
from pyb import UART
from pyb import Pin, Timer, LEDimport resensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)uart=UART(1,115200) #PA9 txd PA10--rxd 微翻版OPENMV接口PA9和PA10就好。
#uart = UART(3, 9600) #正式openmv的接口P4和P5
uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters timeout_char=1000
clock = time.clock()#def tick(timer):#Uart_recv()
##5ms读取一次检测一次串口,t=5ms f=1/t=200hz
#tim = Timer(3, freq=200) # create a timer object using timer 2 - trigger at 1Hz
#tim.callback(tick) # set the callback to our tick functiong_uart_cmdA_flag=0 # 将变量声明为全局变量,如此才可改变其数值
g_uart_cmdB_flag=0
#*********************************************************************************************
#串口接收函数的定义
def Uart_recv(): # 串口接收数据global g_uart_cmdA_flagglobal g_uart_cmdB_flagif (uart.any()): # 更新串口接收数据recv_data = eval(str(uart.read())) #接收读取的字符串print(recv_data)#uart.write(recv_data)if ("&" in recv_data) : #如果接收的字符串中有&号。注意,这个不是第一个字符串,只要有&就行,可以修改下,检查帧头print("Openmv has recved CMD data.")if ("lightA" in recv_data): #如果接收字符串有light1,比如&light1print(len(recv_data))g_uart_cmdA_flag = 1print("Ready for light 1!")
## &lightA0 或者&lightA99 提取A后面的数据,必须是正数,后面不能加换行符号,否则长度改变
## 字符串的下标计数从0开始,它是一个标记特殊的list(数据结构会讲到)if len(recv_data)>8:ddd=(int(recv_data[7])-48)*10ddd=ddd+(int(recv_data[8])-48)print(ddd)elif len(recv_data)==8:ddd=(int(recv_data[7])-48)print(ddd)if ("lightB1" in recv_data):#如果接收字符串有B,比如&Bg_uart_cmdB_flag = 1print("Ready for B!")
#*********************************************************************************************
#定义两个数据,测试发送
adata =10.2
bdata =123
#定义两个数据,测试发送
cdata=88.65
ddata=896
while(True):clock.tick()img = sensor.snapshot()Uart_recv() #主函数中不断检测,可以在串口中断中进行接收,或者是开辟一个定时器,定时5ms-10ms检查一次这个函数(这方法好像有问题,定时器的),if g_uart_cmdA_flag ==1 : #命令A的回应# uart.write("loc"+(str)adata+"num"+(str)bdata+"#") # 串口发送uart.write("adata:%0.2f,bdata:%d\r\n"%(adata,bdata)) #发送字符串,字符串中包括了数据,数据可以根据检测得到,浮点数或者是整数g_uart_cmdA_flag = 0if g_uart_cmdB_flag ==1 : #命令B的回应uart.write("cdata:%0.2f,ddata:%d\r\n"%(cdata,ddata))#发送字符串,字符串中包括了数据,数据可以根据检测得到,浮点数或者是整数g_uart_cmdB_flag = 0time.sleep(100)
OPENV接收和发送串口的数据相关推荐
- openmv串口数据 串口助手_第三课使用pyserial来接收和发送串口数据
1.python的库非常多,功能同样十分强大,在现有的库的情况下,我们没有必要去重复造轮子,拿来用就可以了,在这里我选了pyserial库. 安装pyserial,使用pip工具,在cmd界面输入:p ...
- 如何在Node.js的httpServer中接收前端发送的arraybuffer数据
最近使用了protobuf进行数据交互,发送在node.js接收前端的二进制数据出现了数据错误等问题.后来发现思路上面的问题,在req.on('data',()=>{})事件中的处理不适当才引发 ...
- Android客户端通过TCP接收服务器端发送的数据
引言 因为我确实不懂TCP通信这一块儿,最近项目中要实现客户端接收服务器端发送过来的数据(这个数据是int型的,范围是0~360,而且服务器端用C语言写的,每一秒发送一次,客户端只需要不断接收就好了) ...
- msp430g2553串口接受数据_MSP430G2553串口通讯 发送接收
数据发送代码: void UartPutchar(unsigned char c) { while(!(IFG2 & UCA0TXIFG)); //待发送为空 UCA0TXBUF=c; IF ...
- 【嵌入式】——串口实验——实现芯片串口收发数据,按键中断串口发送数据,串口接收数据中断来控制LED亮/灭
实验目的: 实现芯片串口收发数据,按键中断串口发送数据:按下按键,向串口发送数据,并通过虚拟终端显示出来: 串口接收数据中断来控制LED亮/灭:通过串口助手向MCU发送数据,"A" ...
- GD32F303RET6 串口空闲中断+DMA数据发送接收+环形缓冲区方式保存数据
GD32F303RET6 DMA 通道映射关系 串口 源文件 #include "uart.h" #include "stdio.h" #include &qu ...
- 串口调试助手C++源代码 可接收发送串口数据 带接收Echo回环到发送的功能
串口调试助手C++源代码 可接收发送串口数据 带接收Echo回环到发送的功能 使用说明介绍 1.功能介绍: 简单地实现了串口通信的功能,主要有发送窗口和接收窗口组成.该代码注释详细,并带有说明文档,适 ...
- 上位机开发C#语言:模拟STC串口助手接收单片机发送数据
题目概述: 设计一个模拟STC串口助手,通过串口进行接收或发送数据. STC串口助手: 编程: using System; using System.Collections.Generic; usin ...
- python3.6串口编程实例_Python3 串口接收与发送16进制数据包的实例
Python3 串口接收与发送16进制数据包的实例 如下所示: import serial import string import binascii s=serial.Serial('com4',9 ...
最新文章
- 【 Verilog HDL 】函数(function)与任务(task)简单介绍
- php获取citypicker的值,城市选择city-picker
- hihocoder 1343 : Stable Members【拓扑排序】
- deepin 使用cuda硬件解码
- mysql 缓存优缺点_MySQL查询缓存的优缺点
- 表达式求值(from leetcode 241)
- 如何改变Delphi的快捷键 - DELPHI
- MATLAB绘图函数ezplot入门详解
- 天刀 服务器状态,12月11日服务器例行维护公告(已完成)
- 华山行-西安生活的小记录
- CDN基础知识-CNAME、加速域名、源站地址与回源host之间的关系
- 如何使用KALI攻击“恶意网站“实验
- 知识付费小程序源码可开流量主
- 解决 Chrome 浏览器地址栏字体发虚模糊
- 离散数学实验报告四——图的应用
- html5网页制作实训日志,网页制作实训日志X.doc
- 基于RFM模型对借贷App用户分层分析案例
- 《MySQL 8从零开始学(视频教学版)》简介
- Telnet是什么意思?与SSH有啥区别?
- 有关指令集架构与微架构的一些知识