无法在 Matlab UNIX 上打开串行端口
Can't open serial port on Matlab UNIX
我正试图通过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无法识别我的串行端口?
希望这能有所帮助。
- Qt Q串行端口未编程设备未关闭
- 在 linux c++ 中没有通过串行端口发送的数据
- 检查串行端口Linux中是否有传入数据(cbInQue for linux)
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 增强 ASIO 和串行端口异步读取
- 串行端口写入究竟如何从缓冲区实际写入数据?
- 如何将参数这些串行端口传递到函数中
- 从 C/C++ 访问 Android 中的串行端口
- Qt两个串行端口发送和接收
- 通过串行端口从GPS传感器读取
- 提升 asio 串行端口"end of file"
- 通过串行端口发送多个值
- 与QSerialPort配合使用的串行端口仿真
- 如何通过boost::asio和shared_ptr创建串行端口
- 串行端口编码
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 写入和读取十六进制 TRAM QT 串行端口
- Unix 串行端口程序与 qt 崩溃
- C++中的串行端口,Unix
- 无法在 Matlab UNIX 上打开串行端口