Capture and compare serial data


Closed Thread
Results 1 to 17 of 17

Hybrid View

  1. #1
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Not sure exactly what you are trying to do?

    Send the same thing four times and if any of them fail the whole thing fails? Even if one is good?

    Even doing a compare will not tell you which one is good. Only the checksum (CRC) thing will do that.
    Last edited by mackrackit; - 6th April 2010 at 00:43.
    Dave
    Always wear safety glasses while programming.

  2. #2


    Did you find this post helpful? Yes | No

    Default something like that :-0

    Hi Dave

    Send same thing 4 times
    so
    1
    2
    3
    4
    and compare instance 3 and 4 'cos usually correction occurs on 1 and 2
    If 3 and 4 match then TX was good.

    Hope that helps

    Kind regards
    Dennis

  3. #3
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    OK, how about this.

    Receive the first two and do nothing with that data because it is most likely bad.

    Do the checksum on data #3.
    if good then ... STOP??
    OR go on and run the check on data #4

    If #4 check then GO ON.

    No compare any where...

    MAYBE...
    Dave
    Always wear safety glasses while programming.

  4. #4


    Did you find this post helpful? Yes | No

    Default That could work!

    @ Dave

    OK cool

    So I Will
    1. Capture all 4 lines into and array each one is 4 bytes and a checksum byte so array needs to receive 20 bytes total.
    2. Check 4 for checksum match
    Continue on ...

    It certainly seems doable and will give it a bash right away!

    Still just wondering if there is a way to capture and compare all 4 lines

    Kind regards
    Dennis
    Last edited by Dennis; - 6th April 2010 at 01:52.

  5. #5
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    If you really want to do each line then I guess the way would be ...

    IF array1 bit1 = array2 bit1 then
    IF array1 bit2 = array2 bit2 then
    IF array1 bit3 = array2 bit3 then
    ......on and on and on....

    But something like Charles said
    IF check1 = check2 then
    IF check2 = check3 then
    IF check3 = check4 then
    Hey. it is done...
    Dave
    Always wear safety glasses while programming.

  6. #6
    Join Date
    Sep 2005
    Location
    Campbell, CA
    Posts
    1,107


    Did you find this post helpful? Yes | No

    Default

    Depending on what your data looks like, you can also do some neat things with:

    ARRAYREAD (name_of_first_string),(nocompare_location),(numbe r_of_chars_to_compare),[WAITSTR name_of_second_string]
    Charles Linquist

  7. #7


    Did you find this post helpful? Yes | No

    Default rewind....

    AHA...

    That's where I'm stuck ....at step 1 I mentioned earlier ...

    1. Capture all 4 lines into and array each one is 4 bytes and a checksum byte so array needs to receive 20 bytes total.
    I this is the line I am using to receive the data

    Code:
    DEBUGIN [WAIT(SYNK),WNUM,XNUM,YNUM,ZNUM,CHECKSUM]
               ' wait for SYNK, when received store next 4 bytes in variables WNUM,XNUM,YNUM,ZNUM
               'then send these to hyperterminal or serial program or wherever
    What must be changed in order for me receive it 4 times and build the array?

    I was playing around with this as a start..but it's here where I am stuck!
    Code:
    For counter=0 To 19 
    DEBUGIN [WAIT(SYNK),WNUM,XNUM,YNUM,ZNUM,CHECKSUM]
               ' wait for SYNK, when received store next 4 bytes in variables WNUM,XNUM,YNUM,ZNUM
               'then send these to hyperterminal or serial program or wherever 
             counter=counter+1
            Next
    As always any help would be appreciated

    Kind regards

    Dennis

  8. #8
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    Hi Denis, I think you could take some advantage from this thread :http://www.picbasic.co.uk/forum/showthread.php?t=12870
    In post # 4 DT is giving an interesting snippet for having 2d array in PBP.

    I don't know if you have already used bi-dimensional arrays, if not let me say that they could easy your compare problem.


    You cannot corrupt the variable within a FOR/NEXT cycle:

    For Counter =0 to 19
    .
    .
    .
    counter=counter+1
    Next Counter

    You should expect some problem from this code!

    Al.
    Last edited by aratti; - 6th April 2010 at 02:14.
    All progress began with an idea

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts