4 系统配置
本章介绍系统配置的具体操作。
4.1 编译Camera演示
如何编译启动测试Camera示例。
- 进入到测试文件所在的文件夹。
cd /usr/share/ed-aic-lib/examples
- 运行测试代码
- Python
sudo python test_camera.py
- c++
mkdir test
cd test
cmake ../
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-AIC2000-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.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++
- 初始化
- 操作IO前需要获取IO实例
eda::EdaIo *em = eda::EdaIo::getInstance();
- 对实例初始化
em->setup();
- IO控制支持对事件注册回调函数
- input 输入事件
em->registerInput(trigger_input);
- Trigger 按键
em->registerTrigger(trigger_trigger);
- Tune 按键
em->registerTune(trigger_tune);
- 控制IO(必须先完成初始化)
- 控制激光
em->openLaser()
和em->closeLaser();
- 控制状态指示灯
em->setScanStat(true)
和em->setScanStat(false);
- 控制警报指示灯
em->openAlarm()
和em->openAlarm();
- 控制两路输出
em->setDo1High(false)
和em->setDo2High(false);
- 控制灯光(必须先完成初始化)
- 控制侧灯颜色
em->setRgbLight(1);
- 0: 关闭
- 1: 红色
- 2: 绿色
- 3: 蓝色
- 控制灯源
- 使能灯源(默认已使能)
em->enableLightSection(1)
取值范围1~4,对应不同分区 - 禁用灯源
em->disableLightSection(1)
取值范围1~4,对应不同分区
- 使能灯源(默认已使能)
4.5.3.2 Python
- 初始化
- 操作IO前需要获取IO实例
eda = EdaIo.singleton()
- 对实例初始化
eda.setup()
- IO控制支持对事件注册回调函数
- input 输入事件
registerInput(func_input)
- Trigger 按键
registerTrigger(func_trigger)
- Tune 按键
registerTune(func_tune)
- 控制IO(必须先完成初始化)
- 控制激光
eda.openLaser()
和eda.closeLaser()
- 控制状态指示灯
eda.setScanStat(true)
和eda.setScanStat(false)
- 控制警报指示灯
eda.openAlarm()
和eda.openAlarm();
- 控制两路输出
eda.setDo1High(false)
和eda.etDo2High(false);
- 控制灯光(必须先完成初始化)
- 控制侧灯颜色
eda.setRgbLight(1);
- 0: 关闭
- 1: 红色
- 2: 绿色
- 3: 蓝色
- 控制灯源
- 使能灯源(默认已使能)
eda.enableLightSection(1)
取值范围1~4,对应不同分区 - 禁用灯源
eda.disableLightSection(1)
取值范围1~4,对应不同分区
- 使能灯源(默认已使能)