Hi,
I am using a PCI-6533 with VB6 to capture a fixed amount of data
asynchronously using DI channel "0" and Ack/Trigger
(DIG_Block_PG_config). The data rate is <9600 baud.
To eliminate polling, I tried invoking the General Event
handling. I've had teasing success in this mode, but sometimes
crash my PC.
I have tried learning from the VB examples, and have scoured the
"Traditional" manual. I do not think I am interpreting/using the
event example correctly, since I want/expect the event to fire every
fixed amount of time, yet I've gotten this far success-wise. I am
not sure how much resetting I need to do in order to simply wait for
the next event to fire.
I initially config DIG_Grp, Block_PG, and _Trigger, align the buffer,
setup the General DAQ Event Control, start DIG_Block_In within a Sub I
call once to kick the process off, then wait for the Event to
fire. My intention is to restart the process in the event
handler. (OK? or loop in the calling sub instead?)
When the event fires, I capture my data, but sometime the app hangs. If
I kill the process, it takes windows with it, but leaves a blue screen
with an NI error msg (at work) pointing to clues to some addresses, a
reference to some obscure IRQ error, and the nidaq32.dll
I originally was resetting/setting all of the _Config statements and
event properties in the event handler, but later thought this
unnecessary. I do a Block_Clear, Set Event enabled to False,
process my data, then re-enable the event and follow with
DIG_Block_In. Or can I simply re-do the DIG_Block_In statement
after data handling in the code for handling the event? I need
this to run continuously. Can I restart DIG_Block_In in the event
handling code, or is this "circular"? I am using error
handling, but receive no errors before the app hangs.
In the meantime, I will revert to polling. This seems ironic, as I am causing issues that I was trying to prevent.
Apologies from a noob. Am writing after work, so I may not respond for 24 hrs.
Thanks.
steely