无法在 Matlab UNIX 上打开串行端口

Can't open serial port on Matlab UNIX

本文关键字:串行端口 UNIX Matlab      更新时间:2023-10-16

我正试图通过USB(运行Arch Linux)与Arduino建立串行通信。我可以通过C++程序和boost::asio以一种简单的方式来完成它,但最近我安装了Matlab,并遇到了一些问题。我设法用s0=serial('/dev/ttyACM0')创建了串行对象,但当我调用fopen(s0)时,我得到了以下错误:

Error using serial/fopen (line 72)
Open failed: Port: /dev/ttyACM0 is not available. No ports are available.

以下是我在Arch Linux 64位上的Matlab R2014a中获得串行端口通信工作的方法:

1a)遵循此处描述的步骤:http://www.matlabarduino.org/serial-communication.html:

sudo chmod 777/dev/ttyACM0或者,将您的用户添加到组uucp:>sudogpasswd--添加用户名uucp

sudo nano$MATLABROOT/bin/$ARCH/java.pts-->添加:-Dgnu.io.rxtx.SerialPorts=/dev/ttyS0:/dev/ttyUSB0:/dev/ttyACM0

1b)检查连接是否在gtkterm(选择端口ttyACM0)中工作

2) 另外(仅对Matlab至关重要):

sudo chmod 777/运行/锁定/run/lock是从我的发行版上的/var/lock符号链接而来的,所以你可能必须使用后一个目录(原来是755);或者,您可以通过ACL管理对/run/lock/的访问权限。

我是如何得到这个解决方案的:

苏多大街-p 4668-f-s100 2>&1|grep-C3--color-i-e/dev-e serialports-e uucp-p: 进程ID=>sudo ps-aux|grep-i matlab中的第二列然后,在Matlab中键入>>sps=instrhwinfo("serial")(在我的情况下,它总是返回一个空单元格数组的结构),并监视strace的输出。

希望能有所帮助!欢呼:)

默认情况下,只有root用户可以使用串行端口。

您可以将您的id添加到串行组"dialout"中,这样您就可以使用串行端口。

只需从/dev/ttyACM0到/dev/ttyS[0-255]进行软链接。

   ln -sf /dev/ttyACM0 /dev/ttyS100 # for example

下面的Matlab R2017a可能会面临这个问题。

详细描述可以在这里找到:

为什么Linux或Solaris上的MATLAB无法识别我的串行端口?

希望这能有所帮助。