这个问题已经有了答案:
Python to automatically select serial ports (for Arduino)
5个答案
我在使用mac/linux的python中自动检测arduino的串行端口时遇到问题。
我知道一个工作shell命令来查找端口;因为Arduino串行端口几乎总是以tty.usbmodem
开头,所以可以找到ls /dev | grep tty.usbmodem
的串行端口,它应该返回类似于tty.usbmodem262141
的内容。
但是,我对如何从我的python代码调用这个shell命令感到困惑。我试过这个:
p = "/dev/" + str(subprocess.Popen('ls /dev | grep tty.usbmodem', shell=True).stdout)
这会使
p
变成/dev/tty.usbmodem262141
。但是,现在我得到了
/dev/None
。如何修改shell脚本调用以返回正确的字符串?我试过使用several commands to call shell scripts,但都没有成功。
最佳答案
首先,如果您使用的是shell,那么您可以使用glob(*
),这样您的命令将变为ls /dev/tty.usbmodem*
。
接下来,您甚至不必调用shell命令就可以在python中使用glob!
请考虑以下代码:
import glob
print(glob.glob("/dev/tty.usbmodem*"))