2014-10-22 74 views
1

我想通過USB(運行Arch Linux)與Arduino建立串行通信。我可以通過C++程序直接使用boost::asio,但最近我安裝了Matlab並且一直在解決一些問題。我設法與s0=serial('/dev/ttyACM0')創建串行對象,但是當我打電話fopen(s0)我得到以下錯誤:無法在Matlab UNIX上打開串口

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

回答

0

默認情況下,只有root可以使用串行端口。

你可以將你的id添加到串口組「撥出」,這樣你就可以使用串口了。

+0

但它適用於C++程序中的OP。據推測,joaocandre使用相同的訪問權限。 – lpapp 2014-10-22 09:28:22

+0

我試過用root調用matlab('sudo matlab'),但是我得到了同樣的錯誤。我也嘗試改變串行端口的讀寫權限,正如http://www.matlabarduino.org/serial-communication.html所建議的,但問題仍然存在 – joaocandre 2014-10-22 09:44:38

3

這裏是我做過什麼來得到的Arch Linux在Matlab R2014a串口通信工作64位:此處描述

1a)的步驟如下:http://www.matlabarduino.org/serial-communication.html

sudo chmod 777 /dev/ttyACM0 Alternatively, add your user to the group uucp: > sudo gpasswd --add username uucp

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

1B)檢查連接在gtkterm工作(選擇端口ttyACM0)

2)附加地(臨界僅用於Matlab的):

sudo chmod 777 /run/lock /run/lock was symlinked from /var/lock on my distro, so you might have to do this with the latter dir (was 755); alternatively, you can manage access rights to /run/lock/ by ACL.

我是如何走到這個解決方案:

sudo strace -p 4668 -f -s100 2>&1 | grep -C3 --color -i -e /dev -e serialports -e uucp -p: process ID == second column from > sudo ps -aux | grep -i matlab Then, in Matlab type >> sps=instrhwinfo('serial') (which in my case always returned a structure of empty cell-arrays) and monitor the output of strace.

希望幫助! 歡呼:)