话不多说,进入主题。
在stm与openmv进行串口通讯的过程中遇到的问题是,openmv发送信息给stm,而stm只能接收一个字节、也就是只能进入中断一次,stm接受不到结束字符,进入不了一段字符串的结尾判断。而stm、openmv和电脑进行单独通讯的时候都能正常通讯。
#OpenMv的代码:
我使用的初始代码:
while(True):
uart.write("green")
time.sleep_ms(1000)
uart.write("blue")
time.sleep_ms(1000)
openmv串口发送字符,没有结束符。开始的时候就有想到这个问题,但stm方面的代码也有问题,就没有得到认证,后面慢慢改正才确定是这个问题。
所以openmv程序代码不改的话,就算stm方面能正常接受。openmv发送出去不同的字符串就会被认为是同一条字符串,这样就不能达到我们识别信息的目的了。
在ascii吗中\r \n这两个字符串的编码分别是0x0d和0x0a。这是我在查看openmv串口通讯例程和电脑通讯时发现的。
while(True):
uart.write("Hello World!\r")
time.sleep_ms(1000)
那么,如果我在green后面加上\r \n这两个字符。不就是相当于stm串口通讯要求的以0x0d 0x0a结尾了吗?
下面展示一些 内联代码片
。
while(True):
uart.write("green\r\n")
time.sleep_ms(1000)
uart.write("blue\r\n")
time.sleep_ms(1000)
可以看出,openmv发送出去的字符串能被分割开了,stm方面也能正常接受到。
因为篇幅的原因,stm方面的代码在下一章写。
小白一枚,第一次写博客,多多指教!有什么问题及错误的地方,欢迎提出。