[英]Programmatically talking to a Serial Port in OS X or Linux
我有一个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
当我使用串口工具与它通话时,一切也都有效。
如果我在上面提到的串口工具上运行这段代码,那么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()
所以问题是,在没有串口工具的情况下,我需要执行什么样的功能来开始与串口通信? 这是权限问题吗? 另外,/ dev / cu.usbserial和/dev/tty.usbserial有什么区别?
不,没有序列号。 问题是,即使使用sudo运行python脚本,问题仍然存在,如果我在我提到的gui工具中打开连接,那么唯一能让它通过的东西。
/dev/cu.xxxxx
是“callout”设备,它是您在建立与串行设备的连接并开始与之通信时使用的设备。 /dev/tty.xxxxx
是“dialin”设备,用于监视端口以接收传入呼叫,例如传真侦听器。
您是否尝试过观察GUI和串口之间的流量,看看是否有某种特殊命令被发送? 同样好奇的是,Python正在发送ASCII而不是UTF-8或者其他什么呢? 我问的原因是因为我注意到你的引用更改了字符串,在某些语言中实际上是ASCII和UTF-8之间的区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.