CBXS3D SDK 示例代码
基于真实接口的最小可用示例:主动采集光条点、保存原图为 BMP。
以下示例使用头文件中的真实接口名(XS3D SDK 无回调,统一用主动采集)。
示例一:主动采集一帧光条点(数据格式 DF_POINT)
#include "CBXSApi.h"
#include <cstdio>
int main()
{
// 1) 初始化(可选先开日志)
CBXS_SetLog(true, nullptr, 2);
if (CBXS_Initial() != CBXS_RET_SUCCESS) {
return -1;
}
// 2) 枚举设备
CBXS_DEVICE_INFO_LIST list{};
if (CBXS_EnumDevices(&list) != CBXS_RET_SUCCESS || list.nDeviceNum == 0) {
printf("未找到设备\n");
CBXS_UnInitial();
return -1;
}
// 3) 创建句柄并打开设备
void* handle = nullptr;
CBXS_CreateDeviceHandle(&handle, list.pDeviceInfo[0]);
CBXS_OpenDevice(handle);
// 4) 设置数据格式为「仅光条点」
CBXS_SetDataFormat(handle, CBXS_DF_POINT);
// 5) 关键参数(按需)
CBXS_SetExposureTime(handle, 1.0f); // 单位 ms
// 6) 启动采集
CBXS_StartAcquisition(handle);
// 7) 主动取一帧
CaptureData* data = nullptr;
if (CBXS_CaptureData(handle, &data) == CBXS_RET_SUCCESS && data != nullptr) {
unsigned short* pt = data->pPoint; // 长度 = usWidth
for (int c = 0; c < data->param.usWidth; ++c) {
if (pt[c] == 0) continue; // 空点
float imgY = pt[c] / 16.0f; // 该列光条点的图像坐标
// ... 使用 imgY 做测量 ...
}
CBXS_ReleaseData(handle, data); // 必须释放
}
CBXS_StopAcquisition(handle);
// 8) 收尾
CBXS_CloseDevice(handle);
CBXS_DestroyDeviceHandle(handle);
CBXS_UnInitial();
return 0;
}
示例二:保存原图为 BMP
// 数据格式设为原图后,取一帧并保存
CBXS_SetDataFormat(handle, CBXS_DF_IMAGE);
CBXS_StartAcquisition(handle);
CaptureData* data = nullptr;
if (CBXS_CaptureData(handle, &data) == CBXS_RET_SUCCESS && data != nullptr
&& data->pImage != nullptr) {
CBXS_HelperSaveToBmp(data->pImage, data->param.usWidth, data->param.usHeight,
8, "capture.bmp");
CBXS_ReleaseData(handle, data);
}
CBXS_StopAcquisition(handle);
更多示例见 SDK 安装包 samples/ 目录。
这份文档对您有帮助吗?
发现错误、表述不清或缺少内容?请告诉我们,我们会尽快补充。
您可以通过以下方式反馈: 发送邮件至 service@catchbest.com