无法在Matlab UNIX上打开串口

时间:2014-10-22 09:17:59

标签: c++ matlab serial-port

我试图通过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.

3 个答案:

答案 0 :(得分:3)

以下是我在Arch Linux 64位上使用Matlab R2014a进行串口通信所做的工作:

1a)按照此处描述的步骤进行操作:http://www.matlabarduino.org/serial-communication.html

  

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

     

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

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

另外

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

  

sudo chmod 777 / run / lock   / run / lock在我的发行版上从/ var / lock符号链接,所以你可能不得不用后一个dir(755);或者,您可以通过ACL管理/ run / lock /的访问权限。

我如何达到这个解决方案:

  

sudo strace -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的输出。

希望有所帮助! 干杯:)

答案 1 :(得分:0)

默认情况下,只有root才能使用串口。

您可以将您的ID添加到串行组"拨出",以便您可以使用串口。

答案 2 :(得分:0)

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

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

Matlab R2017a下面可能会遇到这个问题。

详细说明可在此处找到:

Why is my serial port not recognized with MATLAB on Linux or Solaris?

希望这可以得到帮助。