Qt Creator中具有不同回调的DAQmxRegisterSignalEvent
大家好,新年快乐! 我正在将PCI 6259+BNC2110与Qt Creator IDE(基于C++)进行接口。 我正在尝试使用外部触发对信号进行采样。我有一个正在运行的微处理器,可以产生触发信号 DAQmxCfgChangeDetectionTiming似乎是一个很好的方法。我将其配置为在挂接到端口0/line0的信号的下降沿进行采样。因此,DAQmxRegisterSignalEvent启动回调,我在其中执行采样 问题是我希望有两个或多个回调可以在DAQmxRegisterSignalEvent上做出反应。目前,我需要两个virt。通道-端口0/line0和端口0/line1。其中一个的更改应该调用它自己的回调。理论方法如下所示:Qt Creator中具有不同回调的DAQmxRegisterSignalEvent,qt,qt-creator,nidaqmx,Qt,Qt Creator,Nidaqmx,大家好,新年快乐! 我正在将PCI 6259+BNC2110与Qt Creator IDE(基于C++)进行接口。 我正在尝试使用外部触发对信号进行采样。我有一个正在运行的微处理器,可以产生触发信号 DAQmxCfgChangeDetectionTiming似乎是一个很好的方法。我将其配置为在挂接到端口0/line0的信号的下降沿进行采样。因此,DAQmxRegisterSignalEvent启动回调,我在其中执行采样 问题是我希望有两个或多个回调可以在DAQmxRegisterSignalEv
void main()
{
...
DAQmxCreateDIChan(task1,"Dev1/port0/line0","",DAQmx_Val_ChanPerLine);
DAQmxCfgChangeDetectionTiming(task1,NULL,"Dev1/port0/line0",DAQmx_Val_HWTimedSinglePoint,1);
DAQmxRegisterSignalEvent(task1,DAQmx_Val_ChangeDetectionEvent,0,signal_from_line0_callback,null);
...
DAQmxCreateDIChan(task2,"Dev1/port0/line1","",DAQmx_Val_ChanPerLine);
DAQmxCfgChangeDetectionTiming(task2,NULL,"Dev1/port0/line1",DAQmx_Val_HWTimedSinglePoint,1);
DAQmxRegisterSignalEvent(task2,DAQmx_Val_ChangeDetectionEvent,0,signal_from_line1_callback,null);
...
}
void signal_from_line0_callback()
{
...take a sample;
return;
}
void signal_from_line1_callback()
{
...do other things;
return;
}
但是,此模式不起作用。似乎当更改发生在第0行或第1行时,DAQmxRegisterSignalEvent不关心更改发生在哪一行,因此尝试调用其中一个回调。
有没有办法让这种方法发挥作用?如何找出发生更改的行?我需要更改第0行或第1行以触发不同的回调函数。
事先非常感谢
纳兹写道
似乎当更改发生在第0行或第1行时,DAQmxRegisterSignalEvent不关心更改发生在哪一行,因此尝试调用其中一个回调。有没有办法让这种方法发挥作用
不,很遗憾。M系列设备或
所有行更改[1]用于更改检测,因此您只能注册一个回调
您的回调将需要充当调度程序。当它收到变更检测事件时,它需要读取设备线路的状态,决定要做什么,并将操作转发给变更线路的响应者
工具书类
[1] M系列用户手册::DI变更检测(第104页)