(此处为废话)最近一直在学python,还有吴老师的课程,一直都没有弄,怕nano落灰,于是乎今天下午搞了一下与stm32串口通信,因为博主还是对32比较熟悉,而且我觉得如果做一个东西的话(比如一个小车)还是用32控制比较方便,视觉处理交给nano(不管是cv也好或者神经网络,肯定吊打32)。
正题来了,首先是nano,博主是用py写的,
先在nano上查看启用的串口 ls -l /dev/ttyTHS* 这样的话正常应该会看到
然后我选择THS1,对应nano上面的物理引脚8 10。引脚图这里就不放了,网上很多。
然后以下是博主自己的调试程序
import serial as ser
import struct,time
a ='z'
c=a.encode('utf-8')
b=678
se = ser.Serial('/dev/ttyTHS1',115200,timeout=0.5)
def recv(serial):
while True:
data=serial.read(64)
if data=='':
continue
else:
break
return data
while True:
# data=recv(se)
# if data!='':
# print(data) 这里是调试的串口接收,接受函数看自己需要定,这里只是方便博主调试
se.write(str(b).encode('utf-8'))
se.write(a.encode('utf-8'))
time.sleep(1)
值得注意的是,如果想要发送字符串,也需要将字符串encode(‘utf-8’),如果是整形或者float可以像我上面那样,先变成字符串然后再encode
接收端就是正常的u8类型的了~~可以看到上面我发的是678 然后在线调试看到的也是保存起来的678哦~如果想要处理成别的类型,对照一下ascii,应该是直接-48就行了。记录完毕!
今天刚发现一个问题,如果串口打开失败的话,用这个命令给权限sudo chmod 777 /dev/ttyTHS0