【驱动教程系列】如何在Ruff开发板上使用USB摄像头


(jerry) #1

准备工作

  • 确认开发板上的RuffOS大于等于1.4版本, 可以通过rap system info命令来查看
  • 确认PC端的SDK版本大于等于1.4版本
  • 一个USB免驱摄像头

使用步骤

准备项目

在一个新的文件夹下执行如下命令,创建一个新的工程

rap init

此命令会下载开发板板载设备的驱动。如果看到如下信息

Downloading package "ruff-v1-sys-usb"...

恭喜你,你已经成功一半了。有了这个驱动,你就可以直接在应用代码中使用$('#usb') 操作 USB 的相关功能。

注意 如果你希望在旧应用上使用 USB,请在 package.json 中,将 ruff-mbd-v1 的版本升级到4.1.1,再执行 rap install

安装摄像头模块

安装摄像头驱动,执行如下命令

rap install ruff-v1-usb-camera-manager --save

因为 USB 设备的差异性,这里采用模块安装的方式,而不是通常的 rap device add

编写应用

下面是一段示例代码:

'use strict';

var CameraManager = require('ruff-v1-usb-camera-manager');
var cameraManager = new CameraManager();

$.ready(function (error) {
    if (error) {
        console.log(error);
        return;
    }

    $('#usb').install(cameraManager);

    cameraManager.on('mount', function (camera) {
        var resolution = {
            width: 800,
            height: 600
        };
        var picture = camera.capture(resolution);

        picture.on('data', function (data) {
            // ...
        });

        picture.on('end', function () {
            // ...
        });
    });

    cameraManager.on('unmount', function (camera) {
        // camera is unplugged

    });
});

$.end(function () {
});

在这段代码里

  • $('#usb') 表示的是系统的 USB 管理器
  • $('#usb').install(cameraManager),可以将摄像头驱动与 USB 关联在一起。如果你的应用中用到多种 USB 设备,可以在这里安装多个不同的 USB Manager。
  • cameraManager 可以处理设备的插拔事件,USB 摄像头插入时,会产生 mount 事件,拔下时,会产生 unmount 事件。
cameraManager.on('mount', function(camera) {
});
	
cameraManager.on('unmount', function(camera) {
});
  • 下面的代码会让摄像头开始拍照,摄像头拍摄的数据会在 picturedata 事件发给应用,它是 JPEG 格式,可以直接存在文件中。
var picture = camera.capture(resolution);
	
picture.on('data', function (data) {
    // ...
});
	
picture.on('end', function () {
    // ...
});

部署测试

执行如下命令,将应用部署在开发板上

rap deploy -s

好,插上摄像头,开始你的测试吧!


Ruff 支持摄像头吗?
(ccpwufan) #2

ruff有没有本地存储空间,我把照片拍下来之后能否放在本地,然后电脑连接ruff获得照片?


(ccpwufan) #3

能不能使用fs存到同一个WIFI范围内的其他电脑的共享盘?


(jerry) #4

这个应该要把网络中的硬盘 mount 到 RuffOS 下才行,貌似还不支持,可以将照片存到 U 盘上。
可以参考【驱动教程系列】如何在Ruff开发板上使用USB存储设备


(shuxiang) #5

随便的USB摄像头都可以吗?支持哪些有要求吗?


(jerry) #6

需要是 USB 免驱摄像头,准确的说是支持 UVC 协议的摄像头。


(jackie) #7

请问照片拍下来之后怎么上传到服务器端?


(dreamhead) #8

nethttp 模块传输就好了