以编程方式与OS X或Linux中的串行端口通信

dea*_*mer 17 python linux macos serial-port

我有一个Prolite LED标志,我喜欢将其设置为显示来自apache日志和其他有趣统计数据的滚动搜索查询.问题是,我的G5没有串口,所以我必须使用USB连接加密狗.它显示为/dev/cu.usbserial和/dev/tty.usbserial.

当我这样做时,一切似乎都很笨拙:

stty -f /dev/cu.usbserial
speed 9600 baud;
lflags: -icanon -isig -iexten -echo
iflags: -icrnl -ixon -ixany -imaxbel -brkint
oflags: -opost -onlcr -oxtabs
cflags: cs8 -parenb
Run Code Online (Sandbox Code Playgroud)

当我使用串口工具与它通话时,一切也都有效.

如果我在上面提到的串口工具上运行这段代码,那么everthing也可以工作.但是一旦断开工具,连接就会丢失.

#!/usr/bin/python

import serial

ser = serial.Serial('/dev/cu.usbserial', 9600, timeout=10) 
ser.write("<ID01><PA> \r\n") 
read_chars = ser.read(20)
print read_chars

ser.close()
Run Code Online (Sandbox Code Playgroud)

所以问题是,在没有串口工具的情况下,我需要执行什么样的功能来开始与串口通信?这是权限问题吗?另外,/ dev/cu.usbserial和/dev/tty.usbserial有什么区别?


不,没有序列号.问题是,即使使用sudo运行python脚本,问题仍然存在,如果我在我提到的gui工具中打开连接,那么唯一能让它通过的东西.

Lil*_*ard 5

/dev/cu.xxxxx是"标注"设备,它是您在建立与串行设备的连接并开始与之通信时使用的设备./dev/tty.xxxxx是"拨号"设备,用于监视端口以接收例如传真监听器的呼入.

  • 这只是惯例,还是它们之间有一些切实的区别? (2认同)

Nic*_*rdi 0

您是否尝试过观察 GUI 和串行端口之间的流量,看看是否有某种特殊命令正在发送?也只是好奇,Python 发送的是 ASCII 而不是 UTF-8 或其他什么,对吧?我之所以问这个问题,是因为我注意到您对字符串的引用发生了变化,在某些语言中,这实际上是 ASCII 和 UTF-8 之间的区别。