在Cygwin中第二次尝试访问串行端口时拒绝访问

在Cygwin中第二次尝试访问串行端口时拒绝访问,cygwin,arduino,Cygwin,Arduino,我试图从连接到Arduino的USB串行端口获取数据。我在用Cygwin,我在写 cat /dev/ttyS4 在shell中输出数据 当我停止这个过程时,我就被给予 拒绝访问 当我再次尝试访问它时。我必须关闭Cygwin,再次打开它并输入相同的内容 命令将输出获取到shell 我注意到我只能从一个程序中读取串行端口。例如,如果我从Arduino软件的串行端口读取数据,我就无法在Cygwin中访问它 是否有一种方法可以在Cygwin中访问串行端口数据任意多次,而无需关闭程序、再次打开程序并用同

我试图从连接到Arduino的USB串行端口获取数据。我在用Cygwin,我在写

cat /dev/ttyS4
在shell中输出数据

当我停止这个过程时,我就被给予

拒绝访问

当我再次尝试访问它时。我必须关闭Cygwin,再次打开它并输入相同的内容 命令将输出获取到shell

我注意到我只能从一个程序中读取串行端口。例如,如果我从Arduino软件的串行端口读取数据,我就无法在Cygwin中访问它


是否有一种方法可以在Cygwin中访问串行端口数据任意多次,而无需关闭程序、再次打开程序并用同一命令写入?

语句
cat/dev/ttyS4
似乎会从串行端口回显字符,直到到达文件末尾。只是,从本质上讲,串行端口永远不会到达终点。因此,您需要将输入安排为“结束”。一种方法是让Arduino将文件结尾字符(control-D)放入输出流。另一种方法是使用所谓的“herdoc”,通过它,您可以告诉它查找要结束的字符串,如中所述


不过,这方面仍然存在一些问题。一个是,control-C不关闭对串行端口的访问似乎是错误的。另一个是,我在我的机器上试过这个,但我不能让它产生你所问的问题。因此,这就是我所能提供的。

在Windows下,从进程访问的串行端口在另一个进程关闭之前(即使第二个进程是第一个进程的子进程)无法从另一个进程访问。在基于Unix的系统上并非如此。这表明停止(Ctrl+C?)cat/dev/ttyS4命令并不是关闭串行端口…是否有其他方法可以在不关闭程序的情况下多次访问串行端口,例如,使用普通的windows shell?也许可以在运行Linux发行版的虚拟机中尝试,例如在VirtualBox中运行的Ubuntu不确定,但这可能有帮助吗?