引自免费微信小程序:皆我百晓生
在Silicon Software的视觉处理卡中,Medium模式通常是指单个硬件接口同时处理两个独立的数据流(例如从两台相机接收数据)。在这种情况下,你需要对每个端口设置事件回调,以便分别处理来自PORT_A和PORT_B的数据帧。
对于你的问题,在Medium模式下,如果你想要为每个端口注册START_OF_FRAME事件的回调函数,你应该分别为每个端口创建不同的事件名称和回调函数。以下是示例代码:
// 假设fg是已经初始化成功的抓取器句柄
const char* PORT_A_EVENT_NAME = "FG_START_OF_FRAME_CAM_PORT_A";
const char* PORT_B_EVENT_NAME = "FG_START_OF_FRAME_CAM_PORT_B";
// 获取PORT_A的事件掩码
eventMaskA = Fg_getEventMask(fg, PORT_A_EVENT_NAME);
// 注册PORT_A的事件回调
Fg_registerEventCallback(fg, eventMaskA, callbackfun_PORT_A, &fgdata_PORT_A, FG_EVENT_DEFAULT_FLAGS, NULL);
// 获取PORT_B的事件掩码
eventMaskB = Fg_getEventMask(fg, PORT_B_EVENT_NAME);
// 注册PORT_B的事件回调
Fg_registerEventCallback(fg, eventMaskB, callbackfun_PORT_B, &fgdata_PORT_B, FG_EVENT_DEFAULT_FLAGS, NULL);
// 定义两个不同的回调函数,一个用于PORT_A,一个用于PORT_B
void callbackfun_PORT_A(Fg_EventInfo *eventInfo, void *userData) {
// 在这里处理PORT_A的帧开始事件
}
void callbackfun_PORT_B(Fg_EventInfo *eventInfo, void *userData) {
// 在这里处理PORT_B的帧开始事件
}
请注意,上述代码基于您提供的API调用进行模拟,并非直接来自于Silicon Software官方文档,因此请务必查阅Silicon Software SDK的官方文档以获取准确的API使用方法及参数含义。根据实际SDK版本的不同,事件名称和API调用可能会有所差异。