香橙派IO控制
在实际应用中,对于需要使用到开发板的PWM功能,但现成的IO控制库又不支持PWM控制,因此想能不能用python直接执行命令行指令,找到如下方法:
import subprocess
command = "ping -c 1 baidu.com "
back = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()
# back输出为bytes类型,以下为检测输出是否为0;若不为0,则解码输出
if len(back[0]):
print("back0----", back[0].decode()) # 注意需要进行解码操作,默认输出的是字节
if len(back[1]):
print("back1----", back[1].decode()) # back是一个元祖,可以通过元祖取值的方式获取结果
# back[0]----stdout(输出结果),back[1]–stderr(错误捕获)
# 设置 GPIO 口为输出模式
gpio mode 2 out
# 设置 GPIO 口输出低电平
gpio write 2 0
# ps:也可以用wiringpi的python库来控制
香橙派调试串口
在linux系统,串口通信不同于windows,指定端口号“COMx”就行。linux系统是以设备进行驱动的,因此我们首先需找出串口的设备号:
# 查看可用串口
[IN1]:ls /dev/ttyS*
[OUT1]:/dev/ttyS4 /dev/ttyS9
# ttyS4为我们要使用的串口
def RPowerDuty(command):
protx = "/dev/ttyS4"
# 设置波特率-9600、奇偶检验位-无、停止位-1
ser = serial.Serial(port=protx, baudrate=9600, timeout=1, parity=serial.PARITY_NONE, stopbits=1)
write_len = ser.write(command.encode('utf-8'))
if ser.isOpen(): # 判断串口是否成功打开
print("打开串口成功")
print(ser.name) # 输出串口号
else:
print("打开串口失败")
print(command)
# 读取串口输入信息并输出。
# 接收返回数据
while True:
com_input = ser.read(10)
if com_input: # 如果读取结果非空,则输出
print(com_input.decode("utf-8"))
ser.close()
break