简介
GXCI是基于Rust的大恒相机API上层封装
模块
主要分为四大模块:
- HAL API:基于RAW Wrapper的为具体功能而作高级封装
- RAW Wrapper:GxIAPI.dll的直接Rust封装,提供原生API调用
- Utils:一些工具函数
- Error Handling:统一错误处理
特性
目前有四个Features:
- solo:单相机模式
- use-opencv:使用opencv库
- (开发中)multi模式:多相机模式
- (开发中)use-imageproc:使用imageproc库
默认开启的是solo和use-opencv
说白了
raw就是用大恒相机给的C语言开发用的GXIAPI.dll,结合开发文档,用libloading这个库把dll的所有函数加载进来封装了一层。然后此外每个对应的类型、结构体、枚举、常量等等都重新用rust写了一遍。特别是枚举描述部分还遇到过结构体内存没对齐的问题。
hal最主要做的其实就是给GX_INSTANCE、DEVICE_HANDLE这些在库内部用全局变量封装了一层,在调库的时候就不用每次let一个gx出来然后调gx的方法。
但其实全局变量封装目前用的还是std的Mutex(典中典LazyLock<Arc<Mutex<T>>>
),暂时还没引入tokio(毕竟手头也只有一个相机,前端那边也还没有多相机的业务)
utils写的一坨狗屎,乱成一堆,开始写的时候项目水平还很差是怎样的,但也暂时懒得改了
error部分挺好的,还是喜欢原生Error Handling