12

我想用 Python 脚本从我的 Arduino 板发送/接收数据。我想使用 Python 和它的 pySerial 模块来做这件事,这似乎符合我的需要。所以我在 cygwin (windows XP 后面) 中安装了 Python 和 pySerial。

Python 脚本相当简单:

$ cat example.py

#print "testing my COM26 port using python"

import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 26
ser
ser.open()
ser.isOpen()

但是在运行时我收到以下错误。

$ python example.py
Traceback (most recent call last):
  File "example.py", line 9, in <module>
    ser.open()
  File "/usr/lib/python2.5/site-packages/serial/serialposix.py", line 276, in open
    raise SerialException("could not open port %s: %s" % (self._port, msg))
serial.serialutil.SerialException: could not open port 26: [Errno 2] No such file or directory: '/dev/com27'

无法打开端口 26:[Errno 2] 没有这样的文件或目录:'/dev/com27'

我怎么知道我的 Arduino 连接到端口 COM27?

嗯,很简单。Arduino IDE 是这么说的,我可以使用该端口从 IDE 的串行端口监视器工具发送和接收数据。此外,我也设法让超级终端使用该端口工作。

但是,Cygwin 似乎不知道这样的 USB 和 COM 端口:

$ ls -lah /dev
total 4,0K
.
..
fd -> /proc/self/fd
mqueue
shm
stderr -> /proc/self/fd/2
stdin -> /proc/self/fd/0
stdout -> /proc/self/fd/1

应该提到的是,我在没有经典串行 COM 端口,只有 USB 端口的戴尔笔记本电脑上运行它。(所以我想这很正常,例如/dev/com1不存在。)

我不知道我问的是否正确,但我的问题是:如何配置 Cygwin 以便它知道这个 COM27 端口?

4

5 回答 5

12

如果超级终端可以访问它,那么它被安装为“虚拟 COM 端口”。Cygwin 将允许您以/dev/ttyS26(Windows 称为 COM27)的形式访问它。在收到 CR 之前,您可能仍然会遇到输入阻塞问题——我愿意。(试图解决这个问题,这就是我发现这个问题的方式。)

于 2011-08-23T01:25:58.633 回答
5

windows中的串口映射到cygwin为:

COM -> /dev/ttyS

例如 COM3 -> /dev/ttyS2

为了打开 COM3,example.py 可以重写为:

import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = "/dev/ttyS2"
ser
ser.open()
ser.isOpen()
于 2018-06-11T06:20:06.753 回答
3

我最喜欢的是

socat.exe `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane

它是 COM16(Windows 已经设置为 115200,noparity,no-flow,8b)

你需要:

ttysocat


socat.exe - /dev/ttyS15,raw,echo=0,setsid,sane

可能也可以工作(然后没有 tty 包),或者只是简单地指定当前终端的 dev 节点(如果没有tty包可能会很棘手)

tty - 打印连接到标准输入的终端的文件名

我最喜欢的链接:

  1. 使用 socat 进行原始串行连接
  2. https://superuser.com/questions/123790/socat-and-rich-terminals-with-ctrlc-ctrlz-ctrld-propagation

你有更好的选择吗?那么请细化。

你可以使用:

stty -F /dev/ttyS15 115200 cs8

设置你的 COM

TJ

于 2016-04-11T15:10:53.357 回答
1

如果您使用的是没有 COM 端口的笔记本电脑,则无法打开此端口并开始 make 操作。

在 Windows 中,有一个功能可以打开该端口并更改某些线路的状态(RST),读取状态并进行传输。对于 LPT 端口,您无法在 Windows 中执行此操作,您必须使用一些库。对于 USB 也有问题,您必须知道连接到 USB 的设备。

于 2010-05-24T18:24:53.807 回答
0

我发现 Brad Grantham 的工具非常有用,并且一直在工作中广泛使用。它非常易于构建和使用。

我只是在这里发帖提到我修复了一个错误,如果你输入波浪号,它会退出,一些其他文本,然后是一个点。因此,例如键入:

vim ~/.tmux.conf会将您从串行会话中弹出。

你可以在这里找到它: https ://github.com/lime45/serial

于 2017-05-11T21:32:26.970 回答