- From: Tim Holt <holtt_at_nacse.org>
- Date: Wed, 07 Jan 2004 23:49:42 -0800
Boy you'll all be irritated checking mail :^) SOrta answered my own
question. This code snippet does work...
> 568 for (i=0; i<ret/sizeof(sampl_t); i++) {
> 569 int sample = buf[i];
> 570 if (sample > 0xf000) sample -= 0xf000;
> 571 maxdata =
> comedi_get_maxdata(cdevice,subdevice,daqcol);
> 572 volts =
> comedi_to_phys(sample,comedi_get_range(cdevice,subdevice,
> daqcol,range),maxdata);
The question remains, why is the 0xf000 thing required and why does the
select/read method only give me data in "chunks"? The "data in chunks"
is problem since I want to do some live display (graphical) of the data
coming in. Seems to be buffering up scans 128 at a time. 16 channels
per scan by the way.
Tim Holt wrote:
> Ah - and this is a NI 6071E, comedi 0.7.66, and clib 0.7.20 on redhat 9
>
> Tim Holt wrote:
>
>> Oh - Question 2. WHen I run the cmd.c example, my data comes out in
>> "bunches" - like it's buffering up. It seems to buffer up about 3
>> seconds of data at a time. If i try to set cmd->flags =
>> TRIG_WAKE_EOS it just seems to lock up and nothing happens. In fact
>> I totally lose my ssh terminal connection to my host I'm programming on.
>> Tim Holt wrote:
>>
>>> I've been reworking some code, and started with the demo "cmd.c"
>>> code as a base. First, I extended it to grab 16 channels of data,
>>> as I happed to have a signal generator feeding a sine wave pattern
>>> to my 15th channel. Now here's the odd behaviour: the count
>>> numbers, when they drop to around 2000 or so, seem to wrap and
>>> suddenly jump up to 63,000 or so. Here's a paste of the results...
>>>
>>>> 63430 2291 2900 2657 2070 2070 2070 2071 2070 2070 2069 2070 2071
>>>> 2069 62789 2071
>>>> 63429 2373 2564 2632 2070 2069 2070 2071 2070 2070 2070 2070 2071
>>>> 2070 62883 2072
>>>> 63429 2421 2391 2621 2070 2070 2070 2071 2070 2069 2070 2070 2070
>>>> 2070 62981 2072
>>>> 63429 2461 2357 2611 2070 2069 2070 2071 2070 2070 2070 2070 2071
>>>> 2070 63085 2071
>>>> 63430 2581 2362 2586 2070 2070 2070 2070 2070 2069 2070 2070 2071
>>>> 2070 63193 2072
>>>> 63430 2660 2368 2574 2070 2069 2070 2071 2070 2069 2069 2070 2071
>>>> 2070 63303 2072
>>>> 63430 2678 2373 2575 2070 2069 2070 2070 2070 2070 2070 2071 2071
>>>> 2070 63415 2072
>>>> 63429 2668 2395 2590 2070 2069 2070 2071 2070 2069 2070 2070 2071
>>>> 2070 2087 2072
>>>> 63429 2659 2409 2600 2070 2069 2070 2071 2070 2070 2070 2070 2070
>>>> 2070 2198 2072
>>>> 63430 2655 2424 2600 2070 2070 2070 2070 2070 2070 2069 2070 2070
>>>> 2069 2309 2072
>>>> 63429 2653 2496 2589 2070 2069 2070 2071 2071 2070 2070 2070 2070
>>>> 2069 2416 2072
>>>> 63430 2651 2554 2581 2070 2070 2070 2071 2070 2069 2070 2070 2070
>>>> 2069 2521 2072
>>>> 63430 2648 2570 2578 2070 2070 2070 2071 2070 2069 2070 2070 2070
>>>> 2070 2620 2072
>>>> 63429 2575 2580 2573 2070 2070 2070 2070 2071 2070 2069 2070 2071
>>>> 2069 2713 2072
>>>> 63429 2474 2590 2567 2070 2070 2070 2071 2070 2069 2070 2070 2070
>>>> 2069 2800 2072
>>>> 63429 2431 2595 2565 2070 2070 2070 2071 2070 2070 2070 2070 2071
>>>> 2070 2879 2071
>>>> 63429 2331 2660 2561 2070 2070 2070 2071 2070 2070 2070 2071 2070
>>>> 2070 2950 2072
>>>> 63429 2163 2755 2556 2070 2070 2070 2070 2070 2070 2070 2071 2070
>>>> 2069 3011 2072
>>>> 63429 2088 2792 2554 2070 2070 2070 2070 2071 2070 2070 2070 2071
>>>> 2070 3061 2072
>>>> 63429 2210 2718 2564 2070 2070 2070 2071 2071 2070 2070 2070 2071
>>>> 2070 3098 2072
>>>> 63429 2519 2567 2583 2070 2069 2070 2071 2071 2070 2070 2070 2071
>>>> 2070 3120 2071
>>>> 63429 2675 2498 2590 2070 2069 2070 2071 2071 2069 2070 2070 2071
>>>> 2070 3132 2072
>>>> 63430 2718 2472 2577 2070 2069 2070 2071 2071 2070 2070 2071 2071
>>>> 2069 3136 2071
>>>> 63429 2753 2439 2546 2070 2069 2070 2070 2071 2070 2069 2070 2070
>>>> 2070 3134 2072
>>>> 63429 2772 2422 2532 2070 2069 2070 2071 2070 2069 2070 2070 2071
>>>> 2070 3125 2072
>>>> 63430 2773 2443 2547 2069 2070 2070 2070 2070 2070 2070 2070 2071
>>>> 2070 3106 2072
>>>> 63429 2757 2521 2594 2070 2069 2070 2071 2070 2069 2070 2070 2071
>>>> 2070 3074 2071
>>>> 63429 2746 2568 2620 2070 2069 2070 2070 2071 2069 2070 2071 2071
>>>> 2070 3027 2072
>>>> 63429 2741 2537 2613 2070 2069 2070 2071 2070 2069 2070 2071 2071
>>>> 2070 2969 2072
>>>> 63429 2735 2347 2567 2070 2070 2071 2070 2070 2070 2070 2070 2070
>>>> 2069 2900 2072
>>>> 63430 2730 2217 2539 2070 2069 2070 2070 2071 2069 2070 2070 2071
>>>> 2069 2822 2072
>>>> 63430 2725 2214 2537 2070 2070 2070 2071 2070 2069 2070 2070 2070
>>>> 2070 2737 2072
>>>> 63430 2687 2422 2562 2070 2070 2070 2071 2070 2070 2070 2070 2070
>>>> 2069 2645 2072
>>>> 63429 2651 2591 2581 2070 2070 2070 2071 2070 2070 2070 2070 2071
>>>> 2070 2545 2072
>>>> 63429 2644 2632 2583 2070 2070 2070 2070 2070 2070 2070 2070 2071
>>>> 2069 2441 2071
>>>> 63430 2697 2568 2574 2070 2070 2070 2071 2071 2069 2070 2070 2071
>>>> 2070 2333 2071
>>>> 63429 2757 2501 2567 2070 2069 2070 2071 2071 2070 2070 2070 2070
>>>> 2070 2223 2071
>>>> 63429 2775 2479 2564 2070 2070 2070 2071 2070 2069 2070 2070 2071
>>>> 2070 2111 2072
>>>> 63429 2690 2472 2568 2070 2070 2069 2070 2071 2069 2070 2070 2070
>>>> 2070 63437 2072
>>>> 63430 2569 2467 2571 2070 2070 2070 2071 2070 2070 2070 2070 2071
>>>> 2070 63324 2072
>>>> 63429 2524 2467 2572 2070 2070 2070 2071 2070 2069 2070 2070 2071
>>>> 2070 63213 2072
>>>> 63429 2608 2495 2568 2070 2069 2070 2071 2070 2069 2070 2070 2071
>>>> 2069 63104 2071
>>>> 63429 2765 2536 2562 2070 2070 2070 2071 2070 2069 2069 2071 2070
>>>> 2070 62999 2071
>>>
>>>
>>>
>>>
>>>
>>> You can see how the 2nd from last column suddenly wraps to a high
>>> number when it drops below 2000 or so.
>>>
>>> OK - now clue #2. I can also run the "tut2.c" example and get nice
>>> clean voltages out, which do not do this. Here's some sample
>>> output (of just channel 15)...
>>>
>>>> 000967 -5.27717V
>>>> 001032 -4.95971V
>>>> 001111 -4.57387V
>>>> 001205 -4.11477V
>>>> 001309 -3.60684V
>>>> 001423 -3.05006V
>>>> 001553 -2.41514V
>>>> 001690 -1.74603V
>>>> 001812 -1.15018V
>>>> 001953 -0.461538V
>>>> 002091 0.212454V
>>>> 002231 0.896215V
>>>> 002367 1.56044V
>>>> 002500 2.21001V
>>>> 002625 2.82051V
>>>> 002740 3.38217V
>>>> 002843 3.88523V
>>>> 002936 4.33944V
>>>> 003014 4.72039V
>>>> 003073 5.00855V
>>>> 003111 5.19414V
>>>> 003131 5.29182V
>>>> 003136 5.31624V
>>>> 003132 5.2967V
>>>> 003116 5.21856V
>>>> 003081 5.04762V
>>>> 003025 4.77411V
>>>> 002949 4.40293V
>>>> 002858 3.95849V
>>>
>>>
>>>
>>>
>>>
>>> Note how when the sample drops below 2000 (or so) that's where we go
>>> to negative voltage.
>>>
>>> What is going on here!?! It's like a sign bit's not right!
>>>
>>> OK now here's the REAL question. I need to be using the
>>> comedi_command() style of DAQ to set up my card to do the timing,
>>> etc. But with comdei_command, it looks like I lose access to all
>>> these nice functions like comedi_get_maxdata(), comedi_get_range()
>>> and most importantly comedi_to_phys(). How can I use the
>>> comedi_command() type of DAQ, use read() to get my data, and still
>>> use comedi_to_phys()?
>>> Tim Holt
>>> NACSE
>>>
>>>
>>> _______________________________________________
>>> comedi mailing list
>>> comedi_at_comedi.org
>>> https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> comedi mailing list
>> comedi_at_comedi.org
>> https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi
>
>
>
>
>
> _______________________________________________
> comedi mailing list
> comedi_at_comedi.org
> https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi
Received on 2004-01-08Z07:49:42