Array and IF - THEN


Closed Thread
Results 1 to 10 of 10

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    If you have several different prefixes, then you're stuck checking the 1st 3 bytes
    pretty much like in your original example.
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  2. #2
    Join Date
    Dec 2007
    Location
    Finland
    Posts
    191


    Did you find this post helpful? Yes | No

    Post

    Thanks Bruce!

    I'll continue to use IF - THENs. This is probably something that could be placed to "PBP Wish List" if it would be benefit also someone else.

    BR,
    -Gusse-

  3. #3
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    If you have PBP 2.60, you might do something like this ...
    Code:
    LED         VAR PortB.0
    CmdIdx      VAR BYTE
    Data_Array  VAR BYTE[4]
    CmdString   VAR BYTE[3]
    
    ;--- Subroutine to parse commands -----------------------------
    Parse:
        FOR CmdIdx = 0 to 3
            SELECT CASE CmdIdx
              CASE 0 : ARRAYWRITE CmdString,["ABC"]  
              CASE 1 : ARRAYWRITE CmdString,["DEF"]  
              CASE 2 : ARRAYWRITE CmdString,["GHI"]  
              CASE 3 : ARRAYWRITE CmdString,["JKL"]  
            END SELECT
            ARRAYREAD  Data_Array,3,NoCmd,[WAITSTR CmdString\3]
            ON CmdIdx GOTO cmd_ABC, cmd_DEF, cmd_GHI, cmd_JKL ; found cmd
          NoCmd:  
        NEXT CmdIdx
        ; if it gets here no commands were found
    RETURN
    
    cmd_ABC:
         SELECT CASE Data_Array[3]
           CASE "1"
                HIGH LED                    'If received ABC1
                PAUSE 1000                  'then turn LED on
                LOW LED                     'for 1s and return
           CASE "2"
                HIGH LED                    'If received ABC2
                PAUSE 2000                  'then turn LED on
                LOW LED                     'for 2s and return
         END SELECT
    RETURN
    
    cmd_DEF: 
    
    RETURN
    
    cmd_GHI:
    
    RETURN
    
    cmd_JKL:
    
    RETURN
    DT

  4. #4
    Join Date
    Dec 2007
    Location
    Finland
    Posts
    191


    Did you find this post helpful? Yes | No

    Post Great!

    Hi Darrel,

    At the moment I don't have PBP2.60, still working with 2.50c.
    I was wondering what is benefit to upgrade to 2.60, but now I see it clearly
    This parse script is something new and ARRAYREAD -function is great.

    So in Mainloop, after DEBUGIN, I should call parse? Sounds so easy!
    Code:
    <code><font color="#000000">Mainloop:
        <b>DEBUGIN </b>1000, Mainloop, [<b>STR </b>Data_Array\4]
        <b>GOSUB </b>Parse
        <b>GOTO </b>Mainloop
    <b>END </b></code>
    PBP 2.60 will definitely be on my "Wish List".

    BR,
    -Gusse-
    Last edited by Gusse; - 22nd January 2010 at 23:56.

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


    Did you find this post helpful? Yes | No

    Default

    Darrel,

    Perfect!

    I was just in the process of writing my own routines to do the same thing.
    I was comparing element 1 in an array with every element in the second array, then element 2 in the first array against every element in the second. If I found a match, I would increment the pointers to both arrays and compare again.
    What a mess that was!

    Of course, your routine is better/faster/smaller.

    Thanks!
    Charles Linquist

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Gusse
    So in Mainloop, after DEBUGIN, I should call parse? Sounds so easy!
    You got it! And hopefully it is...

    Quote Originally Posted by Charles Linquist
    I was just in the process of writing my own routines to do the same thing.
    I was working on a NMEA sentence parser, and Gusse's problem seemed to fit right in.

    I may have killed 3 birds with one stone

    Hope it works,
    Last edited by Darrel Taylor; - 23rd January 2010 at 05:20. Reason: Added original intent.
    DT

  7. #7
    Join Date
    Dec 2007
    Location
    Finland
    Posts
    191


    Did you find this post helpful? Yes | No

    Smile It is working!

    Quote Originally Posted by Darrel Taylor View Post
    You got it! And hopefully it is...


    I was working on a NMEA sentence parser, and Gusse's problem seemed to fit right in.

    I may have killed 3 birds with one stone

    Hope it works,
    Now I can confirm that Darrel's code is working well.
    Thank You very much!

    BR,
    -Gusse-
    Last edited by Gusse; - 25th February 2010 at 12:57.

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