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

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

当我这样做的时候,一切似乎都是h-的:

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

当我使用串口工具与其交谈时,所有东西都可以使用。

如果我在上面提到的串口工具中运行这段代码,everthing也起作用。但是,一旦我断开连接工具,连接就会丢失。

#!/usr/bin/python

import serial

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

ser.close()

所以问题是,在没有串口工具的情况下,我需要执行哪些磁盘以开始与串口通话?这是一个权限问题?另外,/dev/cu.usbserial和/dev/tty.usbserial有什么区别?


不,没有序列号。问题是,即使使用sudo运行python脚本,问题仍然存在,并且只有当我在我提到的gui工具中打开连接时,问题才会通过。

0
你是否看到过他们之后的任何序列号?如:/dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB我的其他通过也许是有一个权限问题的Python谈话的串行端口。你知道你的python实例在哪个用户下运行吗?也许它有什么作用?
额外 作者 Nick Berardi,
就在上周,我编写了一个小型Python实用程序,通过读取USB串口加密狗的调试信息来帮助我调试嵌入式C应用程序,所以我想认为我很了解PySerial。一些附加信息可能有助于诊断问题:*您使用的是什么USB串行驱动程序? *您是否确定在尝试从Python打开串行连接之前已经正确配置了所有串行选项(波特率,流量控制,奇偶校验,停止位等)? *您使用的是什么版本的PySerial?
额外 作者 Matt,

2 答案

你有没有尝试过观看GUI和串口之间的流量,看看是否有某种特殊命令被发送?也只是好奇,Python发送ASCII而不是UTF-8或别的东西正确吗?我问的原因是因为我注意到你对字符串和某些语言的引用更改,这实际上是ASCII和UTF-8之间的区别。

0
额外

/dev/cu.xxxxx is the "callout" device, it's what you use when you establish a connection to the serial device and start talking to it. /dev/tty.xxxxx is the "dialin" device, used for monitoring a port for incoming calls for e.g. a fax listener.

0
额外
这仅仅是一种惯例,还是两者之间有明显的区别?
额外 作者 Peter Gibson,