如何在Cygwin中使用COM和USB端口?

如何在Cygwin中使用COM和USB端口?,usb,cygwin,serial-port,arduino,pyserial,Usb,Cygwin,Serial Port,Arduino,Pyserial,我想用Python脚本从我的Arduino板发送/接收数据。我想使用Python及其pySerial模块来完成它,这似乎符合我的需要。所以我在cygwin(WindowsXP之后)中安装了Python和pySerial Python脚本相当简单: $ cat example.py #print "testing my COM26 port using python" import serial ser = serial.Serial() ser.baudrate = 9600 ser.por

我想用Python脚本从我的Arduino板发送/接收数据。我想使用Python及其pySerial模块来完成它,这似乎符合我的需要。所以我在cygwin(WindowsXP之后)中安装了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'
应该提到的是,我在一台戴尔笔记本电脑上运行这个程序,它没有经典的串行COM端口,只有USB端口。(所以我想这很正常,例如,
/dev/com1
不存在。)


我不知道我问的是否正确,但我的问题是:如何配置Cygwin,使其能够识别此COM27端口?

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


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

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

我的最爱是

socat.exe `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane
它是COM16(已由Windows设置为115200,无优先级,无流量,8b)

你需要:

ttysocat


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

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

我最喜欢的链接:

  • 你有更好的选择吗?那么请改进一下

    你可以使用:

    stty-F/dev/ttyS15 115200 cs8

    设置您的COM

    TJ

    我发现Brad非常有用,并在工作中广泛使用它。它非常容易构建和使用

    我在这里发帖只是想提一下,我修复了一个bug,如果你输入tilde,其他一些文本,然后输入一个点,它就会退出。例如键入:

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

    你可以在这里找到它:
    windows中的串行端口映射到cygwin,如下所示:

    COM->/dev/ttyS

    例如COM3->/dev/ttyS2

    example.py可以重写为打开COM3,如下所示:

    import serial
    ser = serial.Serial()
    ser.baudrate = 9600
    ser.port = "/dev/ttyS2"
    ser
    ser.open()
    ser.isOpen()
    

    为什么是Cygwin?PySerial本机支持Win32。因为安装软件包非常简单,我还需要安装其他软件包。我想我会试试python win32本机的。尝试了(windows+pyserial原生windows安装程序上的本机python),并且相同的代码可以正常工作。。。奇怪的但是我真的需要理解为什么在这里使用cygwin不起作用,我感觉这是一个cygwin问题,与python无关。我猜这是一个cygwin问题——它似乎没有将COM端口映射到“/dev”名称空间。我不确定它是否能做到这一点。你解决过它吗?我正要尝试使用cygwin的串行端口。最好使用某种终端软件…我从来没有解决过这个问题。我也尝试过一些相当奇特的东西。街上的话(Cygwin相关论坛)似乎是不可能的。好吧,我发现了一篇博客文章,它几乎满足了我的需求。我可以调整丢失的部分。通信设备工作得很好@考斯。谢谢你的链接。我一直试图让
    屏幕
    在cygwin中使用串行端口工作,但没有成功<代码>串行
    似乎工作得很好!
    socat.exe - /dev/ttyS15,raw,echo=0,setsid,sane
    
    import serial
    ser = serial.Serial()
    ser.baudrate = 9600
    ser.port = "/dev/ttyS2"
    ser
    ser.open()
    ser.isOpen()