以编程方式与OS X或者Linux中的串行端口通信
时间:2020-03-05 18:38:09 来源:igfitidea点击:
我想要设置一个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工具中打开连接,唯一的问题就解决了。
解决方案
回答
我们是否尝试过观察GUI和串行端口之间的流量,以查看是否发送了某种特殊命令?同样奇怪的是,Python正在发送ASCII而不是UTF-8或者其他内容,对吗?我问的原因是因为我注意到字符串和某些语言的引号更改实际上是ASCII和UTF-8之间的区别。
回答
" /dev/cu.xxxxx"是"标注"设备,它是我们在与串行设备建立连接并开始与之交谈时所使用的设备。 " /dev/tty.xxxxx"是" dialin"设备,用于监视端口的传入呼叫,例如传真侦听器。