1.查看串口
ll /dev/
串口权限
chmod 666 /dev/ttyUSB0
KERNEL=="ttyUSB[0-9]*", MODE="0666"
串口别名区分的方法,一种通过外设芯片识别设置别名,另一种通过识别工控机的串口的设置别名
2.通过ID绑定USB设备
lsusb 插拔USB口
sudo gedit /etc/udev/rules.d/10-local.rules
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="base"
ll /dev | grep ttyUSB
添加成功
也可以通过串口软件查询/dev/stm32f767,/dev/设置的别名,看是否能open
2.若ID相同需通过固定串口添加USB设备
udevadm info -a -n /dev/ttyUSB0 | grep KERNELS 查看值
sudo gedit /etc/udev/rules.d/10-local.rules
ACTION=="add",KERNELS=="3-1:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="base"
从此USB口插入的设备都叫base
3.摄像头别名
sudo gedit /etc/udev/rules.d/10-local.rules
KERNEL=="video*",ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="6230", MODE="0666",SYMLINK+="video11"
KERNEL=="video*",ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="636b", MODE="0666",SYMLINK+="video12"
重新插拔设备
//********************
//打开摄像头
//********************
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
cv::VideoCapture capture(atoi(argv[1]));
if (!capture.isOpened()){
return 1;}
cv::Mat Frame;
bool stop = false;
while (!stop)
{
capture >> Frame;
cv::imshow("视频", Frame);
waitKey(10);
}
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project( DisplayCamera )
find_package( OpenCV 4 REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayCamera camera.cpp )
target_link_libraries(DisplayCamera ${OpenCV_LIBS})
编译运行
mkdir build
cd build
cmake ..&&make
./DisplayCamera 11
4.删除别名
cd /etc/udev/rules.d
sudo rm -rf 10-local.rules