4 系统配置

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

4.1 编译Camera演示

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

  1. 进入到测试文件所在的文件夹。
cd /usr/share/ed-aic-lib/examples
  1. 运行测试代码
  • Python
sudo python test_camera.py
  • c++
mkdir test
cd test
cmake .. -DENABLE_HQ=ON
make
sudo ./test_io

4.2 Camera IO Control

  • eda-io.h文件提供操作AI Camera IO的控制接口(C++)的程序,该文件的存放路径为/usr/include/eda/eda-io.h

  • libedaio.so文件提供操作AI Camera IO的控制接口(Python)的程序,该文件的存放路径为/usr/lib/python3/dist-packages/libedaio.so

4.3 Camera Sensor Control

ED-AIC3000-120使用开源的picamera2库来控制摄像头,picamera2提供一系列api。

4.4 Camera API 示例

AI Camera Sensor的控制函数由picamera2库提供,支持打开和关闭传感器、捕获图片等,以下是一些示例说明。

函数功能
picam2 = Picamera2()获取Camera控制实例
preview_config = picam2.create_preview_configuration()创建一个预览配置
picam2.configure(preview_config)将预览配置应用到摄像头
picam2.start_preview(Preview.NULL)启动摄像头预览功能,NULL表示不在屏幕上显示画面
picam2.start()启动摄像头硬件和软件流管道
picam2.capture_file("test.jpg")捕获一张图片并将其保存为test.jpg
picam2.close()关闭摄像头硬件和软件流管道

更多详细内容和查询picamera2官方资料Picamera2 Manual

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.open_light()打开光源
eda.close_light()关闭光源
eda.eda.enableLightSection()使能光源模块(可取值:1,2,3,4)
eda.eda.disableLightSection()关闭光源模块(可取值:1,2,3,4)
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 操作说明

4.5.3.1 C++

  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: 蓝色
    • 4: 黄色
    • 5: 白光
  • 控制灯源

    • 使能灯源(默认已使能)em->enableLightSection(1) 取值范围1~4,对应不同分区
    • 禁用灯源 em->disableLightSection(1)取值范围1~4,对应不同分区

4.5.3.2 Python

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