Openmv通讯问题,两个模块不能通讯,但是stm32或openmv单独与电脑可以通讯。
-
@kidswong999 STM32的单片机与电脑通讯时是可以的,openmv与电脑通讯时也是可以的。发送接收的字符串也是经过电脑测试过的。但是不用电脑通讯直接将两个模块链接起来好像就不行了。openmv是不是要设置其他什么通讯协议?各位前辈有做过通讯的能指点一二么?
-
直接将两个模块两个起来的时候,可以用示波器接在rx tx看一下信息。
-
好的,老师需要看一些什么参数?等放假结束回学校看一下。我这边传几张图片是自己测试的图。
-
-
小智老师,目前就是不知道问题出在哪了。两块硬件驱动还需要别的协议么?
-
可以了,就是换行符的问题
-
您好,请教一下您32里面“strcmp((const char*)USART_RX_BUF,"001")”这个函数是您自己写的还是用的库里面的?我和你用的应该是个库,找了半天没找见这个字符比较函数,可否指点一二?
-
此回复已被删除!
-
此回复已被删除!
-
@15536895760
重新打了一遍,第一次贴程序。。。不会弄#include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "usart.h" #include "string.h" #include "stdlib.h" #include "stm32f10x.h" #include "beep.h" int main(void) { u16 len; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组及优先级 uart_init(115200); //串口初始化为115200 LED_Init(); //LED端口初始化 KEY_Init(); //初始化与按键连接的硬件接口 while(1) { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 printf("接收的字符:%s\n",USART_RX_BUF); //打印接收字符 printf(" 字符的长度:%d\n",len); //打印字符长度 for(;strcmp((const char*)USART_RX_BUF,"001")==0;) //通讯控制指令字符 001 判断 //strcmp 包含头文件#include "string.h" { printf("响0.5s");//打印灯灭 LED_OFF(); break; } for(;strcmp((const char*)USART_RX_BUF,"002")==0;) //通讯控制指令字符 002 判断 { printf("响1.0s"); //打印灯灭 闪烁 //这步图片没有放出来 LED_ON(); break; } memset(USART_RX_BUF,0,sizeof(USART_RX_BUF)); // 清空字符否则数据过长会造成混乱-> >#include "stdlib.h" USART_RX_STA=0; } }
}
-
@18852935127 谢谢了
-
您好,我也在做这个通讯,也是单片机和openmv通信不成功,请问下您说的换行符解决方法具体是怎么解决的
-
需要在openmv程序里加一个\r\n。你输入\n看着是换行了,其实不然。我把程序贴出来可以参考一下我的解决办法。
-
import sensor, image, time,json
from pyb import UART
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.VGA)
sensor.set_windowing((240, 240))
sensor.skip_frames(30)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
clock = time.clock()uart = UART(3, 115200)
while(True):
img = sensor.snapshot() # Take a picture and return the image.
for code in img.find_qrcodes():
output_str = code[4]
print(output_str,'\r')
uart.write(output_str+'\r')
uart.write('\n') #上面没办法加\n这边特地多加了(\n)不加不行的。
-
你好 你的问题解决了吗
-
@18852935127 在 Openmv通讯问题,两个模块不能通讯,但是stm32或openmv单独与电脑可以通讯。 中说:
sensor.skip_frames(30)
我这面试验了一下,还是没有反应啊