您好!
我想为 我的项目使用多缓冲输出数据交换。
我的项目需要每5ms 处理一次来自传感器的数据。 我通过 SCS 的警报信号唤醒 CPU。
我想 使用 fwSwitchOutputBuffer()来使用多缓冲输出数据交换。 我已经将缓冲区计数设置为2、这样、如果之前的数据由 CPU 处理、传感器控制器就可以使用一个缓冲区来填充下一个数据。
我的任务代码(事件处理程序在中断中每5ms 执行一次)如下所示。
从传感器读取数据;
fwSwitchOutputBuffer();
应用代码如下
scifClearAlertIntSource();
OpBufCnt = scifGetTaskIoStructAvailCount (scif_data_logger_task_ID、scif_struct_output);
while (opBufCnt)
{
opStr =(scif_data_logger_output_T *) scifGetTaskStruct( scif_data_logger_task_ID、scif_struct_output);
从 opStr 输出缓冲区指针访问 data();//。
scifHandoffTaskStruct (scif_data_logger_task_ID、scif_struct_output);
opBufCnt--;
}
scifAckAlertEvents ();
我期望 在调用 fwSwitchOutputBuffer()时,当前填充的缓冲区将移交给应用程序,而另一个缓冲区将准备好接受传感器控制器任务中的新数据。
我的问题如下。
1.在第一个迭代中,例如,我在 SCtask 中填充了缓冲区-1,值 为1,DID fwSwitchOutputBuffer()
2.主应用程序接收值-1并将缓冲区移交回。
在第二次迭代中、SCTask 应使用值2填充 buffer-2 (在步骤1中切换)。 和 DID fwSwitchOutputBuffer()。
4、现在在主应用程序中、我仍在从缓冲区接收值1。
我希望在步骤4中、我应该得到值2。
我有什么问题吗?
是否有人可以解释错误的地方?
此致
Lakshmikanth。