11-18-2012 08:27 AM
I'm trying to implement in C# the same configuration I did previously in SignalExpress.
I measure the Counter Angular Position of an encoder in OnDemand Aquisition mode. I use the counter 0 of the card PCI-6232 to accomplish this task.
In SignalExpress it works just fine, but there is no example in C# for that task. The example of C# code that do exists uses external clock and buffering that I don't need nor can't to do because of my card is not supports such behaviour.
Does anybody have that piece of code I need so much?
Thanks in advance
Ivan
11-19-2012 05:14 PM
The commnents in the code specify why an external sample clock is necessary and potential ways around this. The comment is as follows:
Note: An external sample clock must be used. Counters do not
* have an internal sample clock available. You can use the
* Dig Pulse Train-Continuous example to generate a pulse
* train on another counter and connect it to the Sample
* Clock Source you are using in this example.
11-20-2012 01:58 AM
Thank you for your answer lanidas300.
The problem is my current card does not support such kind of routing. I can't set counter 1 to be external clock for counter 0. When I try to set it I receive error. Besides what I need to do is to read counter OnDemand, I don't need buffering.
Eventually the solution was found.
You have to use Count Digital Events example and replace original channel setting
myTask.CIChannels.CreateCountEdgesChannel(counterComboBox.Text, "Count Edges",
edgeType, Convert.ToInt64(initialCountTextBox.Text), countDirection);
to settings from Meause Angular Position with Buffered External clock example
myTask.CIChannels.CreateAngularEncoderChannel(counterComboBox.Text,
"",encoderType,zIndexEnable,zIndexValue,encoderPhase,pulsePerRev,
0.0,CIAngularEncoderUnits.Degrees)
Also don't forget to copy required variables definitions like encoderType, zIndexEnable, zIndexValue, encoderPhase, pulsePerRev.
That's all!