"WAIT" modifier with multiple choices - how to?


Closed Thread
Results 1 to 12 of 12

Hybrid View

  1. #1
    Join Date
    Apr 2014
    Location
    OK
    Posts
    557


    Did you find this post helpful? Yes | No

    Default Re: "WAIT" modifier with multiple choices - how to?

    My approach would be to just receive whatever comes in, then parse it later.

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: "WAIT" modifier with multiple choices - how to?

    My approach would be to just receive whatever comes in, then parse it later.
    + 1

    though life would be easier if
    "READ" became "*READ/n" ditto for the others {/n=chr 13


    Code:
    buff var byte[5]
    DEBUGIN 1000,START,[WAIT("*" str buff\5\13]
    then see what you got
    Warning I'm not a teacher

  3. #3
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    938


    Did you find this post helpful? Yes | No

    Default "WAIT" modifier with multiple choices - how to?

    Great! I'll give it a try.

    Thanks a lot
    Roger

  4. #4
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    938


    Did you find this post helpful? Yes | No

    Default "WAIT" modifier with multiple choices - how to?

    Thanks again Richard

    Code:
    '======= VARIABLES ================================================================================
    InString VAR BYTE[3]
    LED      VAR RC2
    Counter  VAR BYTE
    Blinks   VAR BYTE
    
    '======= INITIALIZE VARIABLES =====================================================================
    InString[0] = 0
    InString[1] = 0
    InString[2] = 0
    LED         = 0
    Counter     = 0
    Blinks      = 0
    
    '======= PROGRAM ==================================================================================
    ' Wait for strings:
    ' *AAA# = 1 blink
    ' *BBB# = 2 blinks
    ' *CCC# = 3 blinks
    
    START:
    
    Blinks      = 0
    
        DEBUGIN 1000,START,[WAIT("*"), STR InString\3\35] ' InString starts with "*" and ends with "#"
       
        if InString[0] = 65 then
            if InString[1] = 65 then
                if InString[2] = 65 then
                    Blinks = 1
                ENDIF    
            ENDIF    
        ENDIF    
    
        if InString[0] = 66 then
            if InString[1] = 66 then
                if InString[2] = 66 then
                    Blinks = 2
                ENDIF    
            ENDIF    
        ENDIF    
    
        if InString[0] = 67 then
            if InString[1] = 67 then
                if InString[2] = 67 then
                    Blinks = 3
                ENDIF    
            ENDIF    
        ENDIF    
    
    
    BLINK:
        FOR Counter = 1 to Blinks
            LED = 1
            PAUSE 500
            LED = 0
            PAUSE 500
        NEXT Counter
        GOTO START
            
    END
    Roger

  5. #5
    Join Date
    May 2013
    Location
    australia
    Posts
    2,645


    Did you find this post helpful? Yes | No

    Default Re: "WAIT" modifier with multiple choices - how to?

    that will do it roger


    this might be a little bit faster as only one value of instring[0] can ever be true at any one time


    Code:
    select case InString[0]
        case = 65 ;    ps you can use case = "A" to make it more readable 
            if InString[1] = 65 then
                if InString[2] = 65 then
                    Blinks = 1
                ENDIF    
            ENDIF    
       case 66  
            if InString[1] = 66 then
                if InString[2] = 66 then
                    Blinks = 2
                ENDIF    
            ENDIF    
       case 67 
            if InString[1] = 67 then
                if InString[2] = 67 then
                    Blinks = 3
                ENDIF    
            ENDIF    
    END select
    Last edited by richard; - 2nd January 2022 at 21:58.
    Warning I'm not a teacher

  6. #6
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    938


    Did you find this post helpful? Yes | No

    Default "WAIT" modifier with multiple choices - how to?

    ps you can use case = "A" to make it more readable
    Thanks for the tip, Richard

    Using a 16F630 for this project, I'm quite limited in program size.

    I tried something like this too:
    Code:
    IF InString[0] = 65 AND InString[1] = 65 AND InString[2] = 65 THEN Blinks = 1
    IF InString[0] = 66 AND InString[1] = 66 AND InString[2] = 66 THEN Blinks = 2
    IF InString[0] = 67 AND InString[1] = 67 AND InString[2] = 67 THEN Blinks = 3
    But, if I recall well, this code is around 80 words larger than the nested IF..THEN conditions.

    And as far as I can remember, SELECT CASE is also quite word consuming. I'll still give it a try later...
    Roger

  7. #7
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,133


    Did you find this post helpful? Yes | No

    Default Re: "WAIT" modifier with multiple choices - how to?

    The AND in the If statement is really memory hungry.

    Ioannis

Similar Threads

  1. How to do the "SerIN" and "SerOut " for the usb ?
    By vicce67 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 13th March 2015, 02:01
  2. Replies: 0
    Last Post: - 14th November 2013, 03:32
  3. Replies: 3
    Last Post: - 15th October 2012, 08:06
  4. Multiple "AND"'s in select case?
    By polymer52 in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 1st January 2010, 19:10
  5. Replies: 1
    Last Post: - 16th February 2005, 20:05

Members who have read this thread : 2

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