4 系统配置

本章介绍系统配置的具体操作。

4.1 编译Camera演示

如何编译启动测试Camera示例。

  1. 进入到测试文件所在的文件夹。

cd /usr/share/ed-aic-lib/examples

  1. 编译测试代码

sudo make test_camera.cpppython test_camera.py

sudo ./test_camera

4.2 Camera接口

  • “camera.h“文件提供了如何操作AI Camera Sensor的控制接口,该文件的存放路径为”/usr/include/eda/camera.h“。

  • "eda-io.h"文件提供了如何操作AI Camera IO的控制接口,该文件的存放路径为”/usr/include/eda/eda-io.h“。

4.3 库文件

  • “libeda_camera.so”库文件的存放路径为”/usr/lib/libeda_camera.so“。

  • ”libeda_io.so“库文件的存放路径为”/usr/lib/libeda_io.so“。

4.4 Camera API

Camera API提供了AI Camera Sensor的控制函数,支持打开和关闭传感器、设置传感器工作模式、设置曝光时间和设置增益,下文分别按照不同的Camera场景进行说明。

控制函数

Camera API提供的AI Camera Sensor的控制函数如下表,包含获取图像数据、打开摄像头、关闭摄像头、设置工作模式、设置曝光时间和设置增益等。

  • AR0234表示230万像素的Camera
  • OV2311表示200万像素的Camera
函数功能参数取值
virtual int callback_image_ready(img_Callback callback)=0获取图像数据-
virtual int open(int mode, int width, int height) = 0打开并配置摄像头工作模式取值包含0、1、5
  • 0表示连续模式(一直打开摄像头),AR0234和OV2311均支持。
  • 1表示硬件触发模式,AR0234和OV2311均支持,通过Trigger引脚接5V触发。
  • 5表示软件触发模式,仅OV2311支持,通过手动调节来触发。
virtual int close() = 0关闭摄像头-
virtual int set_exposure(int exp_value) = 0设置曝光时间
  • OV2311:t_exposure取值范围为0~65523,单位为us
  • AR0234:t_exposure取值范围为1~1500, exposure的值乘以6.8后的值的单位是us
virtual int get_exposure(int *exp_value) = 0获取曝光时间-
virtual int set_gain(int gain_value) = 0设置增益
  • OV2311:t_gain取值范围为0~30
  • AR0234:t_gain取值范围为0~64
virtual int get_gain(int *gain_value) = 0获取增益-

获取AR0234实例

#include "CameraManger.h"
#include "camera_0234.h"

void test()
  eda::Camera *t_camera = eda::create_ar0234();
  if(t_camera){
  eda::Camera_0234 *t_camera_1 = static_cast<eda::Camera_0234*>(t_camera);
  }
  ...
}

4.5 IO API

IO API提供了AI Camera IO的控制函数,支持控制指示灯、控制激光、控制侧灯和控制输出等。

4.5.1 C语言环境

AI Camera IO在C语言环境下的控制函数如下所示:

函数功能
eda::EdaIo *em = eda::EdaIo::getInstance()获取IO控制实例
void setup()初始化IO设置
void openLaser()打开激光
void closeLaser()关闭激光
void setScanStat(bool good)设置状态指示灯
void openAlarm()打开警告指示灯
void closeAlarm()关闭警告指示灯
void setDo1High(bool high)设置output1输出
void setDo2High(bool high)设置output2输出
void registerInput(IoTrigger callback)注册input触发回调函数
void registerTrigger(IoTrigger callback)注册trigger按键回调函数
void registerTune(IoTrigger callback)注册Tune按键回调函数
void setRgbLight(uint8_t light)设置RGB灯光

4.5.2 Python3语言环境

AI Camera IO在Python3语言环境下的控制函数如下所示:

函数功能
eda = EdaIo.singleton()获取IO控制实例
eda.setup()初始化
eda.openLaser()打开激光
eda.closeLaser()关闭激光
eda.setScanStat(True)设置状态指示灯
eda.openAlarm()打开警告指示灯
eda.closeAlarm()关闭警告指示灯
eda.setDo1High(True)设置output1输出
eda.setDo2High(False)设置output2输出
registerInput(func_trigger)注册input触发回调函数
registerTrigger(func_trigger)注册trigger按键回调函数
registerTune(func_trigger)注册Tune按键回调函数
eda.setRgbLight(1)设置RGB灯光

4.5.3 操作说明

  1. 初始化
  • 操作IO前需要获取IO实例 eda::EdaIo *em = eda::EdaIo::getInstance();
  • 对实例初始化 em->setup();
  1. IO控制支持对事件注册回调函数
  • input 输入事件em->registerInput(trigger_input);
  • Trigger 按键em->registerTrigger(trigger_trigger);
  • Tune 按键em->registerTune(trigger_tune);
  1. 控制IO(必须先完成初始化)
  • 控制激光 em->openLaser()em->closeLaser();
  • 控制状态指示灯 em->setScanStat(true)em->setScanStat(false);
  • 控制警报指示灯 em->openAlarm()em->openAlarm();
  • 控制两路输出em->setDo1High(false)em->setDo2High(false);
  1. 控制灯光(必须先完成初始化)
  • 控制侧灯颜色 em->setRgbLight(1);
    • 0: 关闭
    • 1: 红色
    • 2: 绿色
    • 3: 蓝色
  • 控制灯源
    • 使能灯源(默认已使能)em->enableLightSection(1) 取值范围1~4,对应不同分区
    • 禁用灯源 em->disableLightSection(1)取值范围1~4,对应不同分区