2008-08-06 72 views
14

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

当我做这一切似乎是没说的:当我使用serial port tool去跟它

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("<ID01><PA> \r\n") 
read_chars = ser.read(20) 
print read_chars 

ser.close() 

所以问题是,什么magicks我需要执行开始对串口没有串口工具说话?这是一个权限问题?另外,/dev/cu.usbserial和/dev/tty.usbserial有什么区别?


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

+0

就在上周,我写了一个小型的Python实用程序,通过读取USB串口加密狗的调试信息来帮助我调试嵌入式C应用程序,所以我想我认为我很了解PySerial。一些附加信息可能有助于诊断问题:*您使用的是什么USB串行驱动程序? *您是否确定在尝试从Python打开串行连接之前已经正确配置了所有串行选项(波特率,流量控制,奇偶校验,停止位等)? *您使用的是什么版本的PySerial? – Matt 2008-08-07 22:08:26

+0

你不会在他们后面看到任何序列号吗?如:/dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB我的其他通过也许是有一个权限问题的Python与说话串行端口。你知道你的python实例在哪个用户下运行吗?也许它有什么作用? – 2008-08-06 21:46:17

回答

0

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

4

/dev/cu.xxxxx是“标注”设备,它是您建立到串行设备的连接并开始与之通话时所使用的设备。 /dev/tty.xxxxx是“拨号”设备,用于监视例如来话呼叫的端口。传真收听者。

相关问题