在使用Ubuntu和arduino采用modbus通讯,过程中遇到一些在Linux下操作串口与windows下不同的地方,整理如下:
1.Linux下串口的位置
目前版本的Ubuntu等Linux系统已经可以自动识别串口,不需要像早期的教程中提到到要先挂载。串口位置一般在
/dev/tty**,由于串口数量较多,采用Arduino串口连接电脑时可以使用下列命令查看
ls -l /dev/ttyA*
我的电脑默认的串口是/dev/ttyACM0
有次程序运行中挂掉,拔掉串口再插上之后变成ttyACM1,应该是串口被程序占用造成的。
2.串口操作权限的问题
在Ubuntu下普通用户是没有操作串口的权限的,用普通用户打开ArduinoIDE或者Eric6操作串口都不行,但是加sudo用管理员账户就可以。
为了方便使用,需要把普通用户添加到可以操作串口的组中。
采用ls -l命令可以查看到串口权限组为dialout,因此可以采用下列命令把当前用户添加到dialout组中。user_name为当前用户名称。
sudo usermod -a -G dialout user_name
如果不知道当前用户名称,可以使用whoami命令。
网上另有通过修改文件权限来修改串口权限的办法,没有试过。
操作后需要logout再登录进来才可以
3. 查看串口状态
需要安装statserial
sudo apt get install statserial
该工具语法如下
statserial(status ofserial port)
功能说明:显示串口状态。
语 法:statserial [-dnx][串口设备名称]
补充说明:statserial可显示各个接脚的状态,常用来判断串口是否正常。
参 数:
-d 以10进制数字来表示串口的状态。
-n 仅显示一次串口的状态后即结束程序。
-x 与-n参数类似,但是以16进制来表示。