I work with Vic and I have followed this thread.
I have tried many of the suggestions you have made.
The primary result I see is that the getDuration call hangs.

For background, Earlier version of the IOIO software had worked quite well.
I ran it many times and was able to use the getDuration result with a 
calibrated constant to get readings in mm using the PING transducer.

The I have seen the signals on my scope and the frustration is that my code 
used to work well.

Hope you can help.

Duane


On Friday, April 25, 2014 4:40:07 PM UTC-7, Ytai wrote:
>
> https://groups.google.com/d/msg/ioio-users/B6dTfB2scpI/b0o8Q15SEwgJ
>
>
> On Fri, Apr 25, 2014 at 3:09 PM, Vic Wintriss 
> <[email protected]<javascript:>
> > wrote:
>
>> Could you give me a simple example of how to interrupt getDuration(). I 
>> checked the TimerTask forum, but am not sure that I understand. I assume 
>> that getDuration() is blocking.
>>
>>
>> On Wednesday, April 23, 2014 9:21:54 PM UTC-7, Ytai wrote:
>>
>>> Nope. The PulseInput module was really not designed for such a use-case. 
>>> If you had only the output pulses on the input things would "just work". 
>>> Try the AND gate trick.
>>>  
>>>
>>> On Wed, Apr 23, 2014 at 9:15 PM, Vic Wintriss <[email protected]>wrote:
>>>
>>>> I have tried all combinations of opening pulse input after sending the 
>>>> trigger pulse...no luck.  I am reading both the output (trigger pulse) and 
>>>> the echo (return) pulse...alternately.  About 5 trigger pulse readings to 
>>>> each echo pulse reading.  Any work around ideas?
>>>>
>>>>
>>>> On Wednesday, April 23, 2014 8:44:02 PM UTC-7, Ytai wrote:
>>>>
>>>>> Opening the pulse input after sending the pulse should have done that. 
>>>>> You shouldn't be able to get a pulse from the past the way you're doing 
>>>>> this. Are you saying that what you're reading back is the output pulse?
>>>>> It is possible that there's a bug in the firmware side on the 
>>>>> PulseInput implementation in that case.
>>>>>
>>>>>
>>>>> On Wed, Apr 23, 2014 at 2:33 PM, Vic Wintriss <[email protected]>wrote:
>>>>>
>>>>>> I'm using 0503.
>>>>>>
>>>>>> The problem is that the ping and the return are getting out of sync. 
>>>>>>  The getDuration() readings match exactly the times that I see on the 
>>>>>> scope.
>>>>>> How can I synchronize so that I only start listening after the ping 
>>>>>> pulse is complete?
>>>>>>
>>>>>>
>>>>>> On Wednesday, April 23, 2014 8:51:26 AM UTC-7, Ytai wrote:
>>>>>>
>>>>>>> Are you using the latest firmware?
>>>>>>> Also, cancellation is supported. Search the forum for TimerTask.
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Apr 22, 2014 at 10:10 PM, Vic Wintriss 
>>>>>>> <[email protected]>wrote:
>>>>>>>
>>>>>>>> I tried the following:
>>>>>>>>
>>>>>>>> public void read() throws ConnectionLostException, 
>>>>>>>> InterruptedException {
>>>>>>>>
>>>>>>>>  ioio.beginBatch();
>>>>>>>>
>>>>>>>>  leftStrobe.write(false);
>>>>>>>>
>>>>>>>>  leftStrobe.write(true);
>>>>>>>>
>>>>>>>>  leftStrobe.write(false);
>>>>>>>>
>>>>>>>>    leftInput = ioio.openPulseInput(LEFT_ULTRASONIC_INPUT_PIN,
>>>>>>>>
>>>>>>>>   PulseMode.POSITIVE);
>>>>>>>>
>>>>>>>>    ioio.endBatch();
>>>>>>>>
>>>>>>>>  leftDistance = (int) (leftInput.getDurationBuffered() * 1000000);
>>>>>>>>
>>>>>>>>  leftInput.close();
>>>>>>>>
>>>>>>>>  SystemClock.sleep(100);
>>>>>>>>
>>>>>>>>  dashboard.log(leftDistance + "");
>>>>>>>>
>>>>>>>> }
>>>>>>>> It makes one reading and then hangs up.  How do I time out if I 
>>>>>>>> want stop waiting?
>>>>>>>> I put the scope on the sensor and discovered that I am reading 
>>>>>>>> alternately both the trigger pulse and the echo pulse...most often the 
>>>>>>>> trigger pulse.
>>>>>>>>
>>>>>>>> On Tuesday, April 22, 2014 5:05:23 PM UTC-7, Ytai wrote:
>>>>>>>>
>>>>>>>>> No, there isn't, and even if there were, I'm not sure this will 
>>>>>>>>> actually do what you want.
>>>>>>>>> Have you tried the hack I recommended on the previous post?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Apr 21, 2014 at 8:36 PM, Vic Wintriss <[email protected]
>>>>>>>>> > wrote:
>>>>>>>>>
>>>>>>>>>> Good idea about the logic fix.  I’m redoing the interface boards, 
>>>>>>>>>> so I might add that logic.
>>>>>>>>>> If I am, in fact, reading part of the trigger pulse, is there any 
>>>>>>>>>> way of imposing a short, predictable delay…say 50 microsecs…after 
>>>>>>>>>> the 
>>>>>>>>>> trigger pulse but before the getDuration() read?
>>>>>>>>>>
>>>>>>>>>> On Apr 21, 2014, at 5:12 PM, Ytai Ben-Tsvi <[email protected]> 
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Good catch, I forgot about this constraint.
>>>>>>>>>> In that case, this (similar to what you've proposed) approach 
>>>>>>>>>> might work:
>>>>>>>>>>
>>>>>>>>>> beginBatch();
>>>>>>>>>> generatePulse();
>>>>>>>>>> openPulseIn();
>>>>>>>>>> endBatch();
>>>>>>>>>> getDuration();
>>>>>>>>>> closePulseIn();
>>>>>>>>>>
>>>>>>>>>> I'd like to emphasize that the fact we have to jump through weird 
>>>>>>>>>> hoops to get is working is mostly due to the fact that this sensor 
>>>>>>>>>> has a 
>>>>>>>>>> weird interface. BTW, another thing you can do is use a discrete 
>>>>>>>>>> logic gate 
>>>>>>>>>> to filter out the ping input pulse from the output. Something like:
>>>>>>>>>> clean_out = ping_pin & !ioio_pulse_out_pin
>>>>>>>>>>
>>>>>>>>>> This will convert the Ping's interface to be similar to the one 
>>>>>>>>>> of the other sensor I referred you to.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Apr 21, 2014 at 3:23 PM, Vic Wintriss <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>  I don't think that I can use getDurationBuffered() in this 
>>>>>>>>>>> case. The getDuration() Interface notes say: "...Note that once a 
>>>>>>>>>>> pulse is 
>>>>>>>>>>> detected, the next one must have its leading edge at least 5ms 
>>>>>>>>>>> after the 
>>>>>>>>>>> leading edge of the current one, or else it will be skipped."  The 
>>>>>>>>>>> ping 
>>>>>>>>>>> pulse is about 50 microsecs long, and the echo pulse comes about 
>>>>>>>>>>> 750 
>>>>>>>>>>> microsecs after the ping pulse,  If I am getting the last part of 
>>>>>>>>>>> the ping 
>>>>>>>>>>> pulse, the echo pulse will come too soon for getDurationBuffered() 
>>>>>>>>>>> to 
>>>>>>>>>>> acquire the echo pulse.  Am I understanding this right?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Sunday, April 13, 2014 7:22:39 PM UTC-7, Vic Wintriss wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I am trying to use the Parallax Ping))) ultrasonic sensor with 
>>>>>>>>>>>> a ioio V1 board, using the IOIO00503 library.  I get a good 
>>>>>>>>>>>> looking 
>>>>>>>>>>>> signal...see the attached scope view, but the input.getDuration() 
>>>>>>>>>>>> call 
>>>>>>>>>>>> returns 16.8 micro seconds most of the time, called 2 times per 
>>>>>>>>>>>> second. 
>>>>>>>>>>>>  Every once in a while I get the proper number. 
>>>>>>>>>>>>
>>>>>>>>>>>>  Any ideas? Here is the code:
>>>>>>>>>>>>
>>>>>>>>>>>> import ioio.lib.api.DigitalOutput;
>>>>>>>>>>>>
>>>>>>>>>>>> import ioio.lib.api.IOIO;
>>>>>>>>>>>>
>>>>>>>>>>>> import ioio.lib.api.PulseInput;
>>>>>>>>>>>>
>>>>>>>>>>>> import ioio.lib.api.PulseInput.PulseMode;
>>>>>>>>>>>>
>>>>>>>>>>>> import ioio.lib.api.exception.ConnectionLostException;
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> public class UltraSonicSensors 
>>>>>>>>>>>>
>>>>>>>>>>>> {
>>>>>>>>>>>>
>>>>>>>>>>>> private static final int LEFT_ULTRASONIC_INPUT_PIN = 35;
>>>>>>>>>>>>
>>>>>>>>>>>> private static final int LEFT_STROBE_ULTRASONIC_OUTPUT_PIN = 
>>>>>>>>>>>> 15;
>>>>>>>>>>>>
>>>>>>>>>>>> private final PulseInput leftInput;
>>>>>>>>>>>>
>>>>>>>>>>>> private DigitalOutput leftStrobe;
>>>>>>>>>>>>
>>>>>>>>>>>> private float leftDistance;
>>>>>>>>>>>>
>>>>>>>>>>>> private IOIO ioio;
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> public UltraSonicSensors(IOIO ioio) throwsConnectionLostException 
>>>>>>>>>>>>
>>>>>>>>>>>> {
>>>>>>>>>>>>
>>>>>>>>>>>>  this.leftInput = ioio.openPulseInput(LEFT_ULTRASONIC_INPUT_PIN, 
>>>>>>>>>>>> PulseMode.POSITIVE);
>>>>>>>>>>>>
>>>>>>>>>>>>  this.leftStrobe = ioio.openDigitalOutput(LEFT_ST
>>>>>>>>>>>> ROBE_ULTRASONIC_OUTPUT_PIN);
>>>>>>>>>>>>
>>>>>>>>>>>>  this.ioio = ioio;
>>>>>>>>>>>>
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> public void read() throws ConnectionLostException, 
>>>>>>>>>>>> InterruptedException 
>>>>>>>>>>>>
>>>>>>>>>>>> {
>>>>>>>>>>>>
>>>>>>>>>>>>  read(leftStrobe, leftInput);
>>>>>>>>>>>>
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> private void read(DigitalOutput strobe, PulseInput input) 
>>>>>>>>>>>> throws ConnectionLostException, InterruptedException 
>>>>>>>>>>>>
>>>>>>>>>>>> {
>>>>>>>>>>>>
>>>>>>>>>>>>  ioio.beginBatch();
>>>>>>>>>>>>
>>>>>>>>>>>>  strobe.write(true);
>>>>>>>>>>>>
>>>>>>>>>>>>  strobe.write(false);
>>>>>>>>>>>>
>>>>>>>>>>>>  ioio.endBatch();
>>>>>>>>>>>>
>>>>>>>>>>>>  this.leftDistance =  input.getDuration();
>>>>>>>>>>>>
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> public float getLeftDistance() 
>>>>>>>>>>>>
>>>>>>>>>>>> {
>>>>>>>>>>>>
>>>>>>>>>>>>  return leftDistance;
>>>>>>>>>>>>
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> -- 
>>>>>>>>>>> You received this message because you are subscribed to the 
>>>>>>>>>>> Google Groups "ioio-users" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from 
>>>>>>>>>>> it, send an email to [email protected].
>>>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>>>>
>>>>>>>>>>> Visit this group at http://groups.google.com/group/ioio-users.
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> -- 
>>>>>>>>>> You received this message because you are subscribed to a topic 
>>>>>>>>>> in the Google Groups "ioio-users" group.
>>>>>>>>>> To unsubscribe from this topic, visit 
>>>>>>>>>> https://groups.google.com/d/topic/ioio-users/3MDLEEKtejY/uns
>>>>>>>>>> ubscribe.
>>>>>>>>>>  To unsubscribe from this group and all its topics, send an email 
>>>>>>>>>> to [email protected].
>>>>>>>>>>
>>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>>>
>>>>>>>>>> Visit this group at http://groups.google.com/group/ioio-users.
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  -- 
>>>>>>>>>> You received this message because you are subscribed to the 
>>>>>>>>>> Google Groups "ioio-users" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>>> send an email to [email protected].
>>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>>>
>>>>>>>>>> Visit this group at http://groups.google.com/group/ioio-users.
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  -- 
>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>> Groups "ioio-users" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>> send an email to [email protected].
>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>> Visit this group at http://groups.google.com/group/ioio-users.
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>>
>>>>>>>  -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "ioio-users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> Visit this group at http://groups.google.com/group/ioio-users.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "ioio-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/ioio-users.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "ioio-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/ioio-users.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to