C语言 如何同步发送数据到两个iio通道?

ijxebb2r  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(127)

我在FMCOMMS-3板上使用AD 9361来控制一些光学设置。为此,我需要向第一个器件(x轴声光偏转器)发送一个信号,向第二个器件(y轴AOD)发送另一个信号。xy的信号必须同步(同时发送),这一点至关重要。
我通过libiio操作芯片。我已经用所需的数据填充了对应于两个轴的缓冲区(有2个缓冲区对应于2个设备)。
从理论上讲,现在我必须在两个缓冲区上调用iio_buffer_push(),但是AFAIK这个函数是同步的--它只会在设备发送完所有数据后返回。我如何将缓冲区推送到两个设备,以便传输的信号同时发送?

cvxl0en2

cvxl0en21#

您可以使用iio_buffer_set_blocking_mode()将iio_buffer设置为非阻塞模式。这样,iio_buffer_push()就不会阻塞,并且会立即返回。例如,请参见this documentation
例如:

iio_buffer_set_blocking_mode(somebuff, false); // Set non-blocking mode
    iio_buffer_push(somebuff); // Returns immediately
    iio_buffer_push(otherbuff);

相关问题