以编程方式与OS X或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

当我使用串行端口工具与之通信时,一切也正常。


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


#!/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工具中打开连接,唯一的问题就解决了。


慕莱坞森
浏览 197回答 2
2回答

慕盖茨4494581

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

FFIVE

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

相关分类

Python