python -在OSX或Linux中以编程方式与串行端口对话

Translate

我想要设置一个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

当我使用串口工具与之交谈。

如果我在上述串行端口工具上运行这段代码,那么一切都可以。但是,一旦我断开工具的连接,连接就会丢失。

#!/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()

因此,问题是,在不使用串行端口工具的情况下开始与串行端口通信时,我需要执行哪些操作?这是权限问题吗?另外,/ dev / cu.usbserial和/dev/tty.usbserial有什么区别?


不,没有序列号。问题是,即使使用sudo运行python脚本,问题仍然存在,而如果我在提到的gui工具中打开连接,唯一的问题就解决了。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

/dev/cu.xxxxx是“标注”设备,它是您与串行设备建立连接并开始与之交谈时使用的设备。/dev/tty.xxxxx是“ dialin”设备,用于监视端口的传入呼叫,例如传真侦听器。

来源
Translate

您是否尝试过查看GUI和串行端口之间的流量,以查看是否发送了某种特殊命令?同样奇怪的是,Python正在发送ASCII而不是UTF-8或其他内容,对吗?我问的原因是因为我注意到您的字符串和某些语言的引号更改实际上是ASCII和UTF-8之间的区别。

来源
下一个问题:
php -多范式语言