Receive serial data


Closed Thread
Results 1 to 19 of 19

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default

    The only thing i could find in the manual was the Serin and Serin2 commands.

    The manual says that:
    SERIN2 DataPin {\FlowPin}, Mode, {ParityLabel,}, {Timeout,Label,} [Item...]

    with the example:
    Code:
    SERIN2 1,16780,[wait (“A”),B0]
    ( where A is the caracter to wait for. )

    and
    [code]SERIN2 PORTA.1,84,[skip 2,dec4 B0][code]
    ( where it will skip the first 2 digits and grab the next 4 digits)

    I didnt test it yet, but can i use something like this?
    Code:
    SERIN2 PORTA.1,84,[wait (13,10),dec3 B0]
    Its not making sense to me because i have values with one, two or three digits ( temps from 0 to 160). The idea is to grab each value - and this line knows when to start for the first value but doesnt know when to finish before grabbing a new one.

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by ruijc View Post
    The only thing i could find in the manual was the Serin and Serin2 commands.
    And you'll see the same 'type' of thing for HSERIN and DEBUGIN

    I didnt test it yet, but can i use something like this?
    Code:
    SERIN2 PORTA.1,84,[wait (13,10),dec3 B0]
    Its not making sense to me because i have values with one, two or three digits ( temps from 0 to 160). The idea is to grab each value - and this line knows when to start for the first value but doesnt know when to finish before grabbing a new one.
    Now you're thinkin'! Except that it does know when to finish, because you specified when to finish in that line of code above with dec3 B0. As soon as it grabs a 3 digit decimal, the statement is done...
    So in your case, you don't wait for a 13,10 then grab a decimal, flip it around.
    Grab a decimal, then wait for the 13,10.
    Code:
    SERIN2 PORTA.1,84,[dec B0, wait (13,10)]

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


    Did you find this post helpful? Yes | No

    Default

    Just use the string input option with the terminator set to 13.
    Code:
    MyVar VAR BYTE(3)
    
    Main:
        HSERIN [STR MyVar\3\13] ' receive up to 3 characters, terminate input on receipt of 13
        HSEROUT [STR MyVar\3,13,10] ' show it
        PAUSE 100
        goto Main
    This will receive up to 3 bytes, 0-160, and terminate reception on receipt of 13.
    Regards,

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

  4. #4


    Did you find this post helpful? Yes | No

    Default

    Bruce, skimask,

    Thank you very much for your help.

    Will try when i get home, but it makes perfect sense !

    .

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


    Did you find this post helpful? Yes | No

    Default

    Another thing to try is just a plain DEC.

    DEBUGIN [DEC MyVar]

    DEC waits for a numeric character and discards anything else until it gets one. Once it receives a character that is a number, it continues receiving more digits until it gets a non-numeric char which would be the 13.

    This way the value can be any length, and you don't have to convert it to a byte.
    <br>
    DT

  6. #6


    Did you find this post helpful? Yes | No

    Default

    Thanks Darrel Taylor,

    will try your code too.


    [edit]never mind
    Last edited by ruijc; - 6th August 2008 at 23:31.

  7. #7


    Did you find this post helpful? Yes | No

    Default

    Hi all,

    just to let you know that it worked. I came across some issues but i managed to fix them.

    One of the issues was that i had to use a 10K pull down resistor between my logger and the new receiver.

    I kept a simple code and it works and no loss of data was found.

    here's the tryout code:

    Code:
    '****************************************************************
    'PINS
    
    n5 	var GPIO.5 
    n4 	var GPIO.4 
    BUT 	var GPIO.3 
    led     var GPIO.2 
    n1	var GPIO.1 
    IN   	var GPIO.0 
    
    '*****************************************************************************
    
    DEFINE OSCCAL_1K 1 
    define OSC 4
    
    '*****************************************************************************
    
    @ DEVICE pic12F675, INTRC_OSC_NOCLKOUT
    @ DEVICE pic12F675, WDT_OFF
    @ DEVICE pic12F675, PWRT_OFF
    @ DEVICE pic12F675, MCLR_OFF
    @ DEVICE pic12F675, BOD_ON
    
    '*****************************************************************************
    Include "modedefs.bas" ' Include serial modes
    
    DEFINE debug_reg gpio
    DEFINE debug_bit 1
    DEFINE debug_baud 9600
    DEFINE debug_mode 1
    
    DEFINE DEBUGIN_REG GPIO
    DEFINE DEBUGIN_BIT 0
    DEFINE DEBUGIN_MODE 1
    
    '*****************************************************************************
    ADCON0=0
    ANSEL=0
    CMCON=7   
    trisio=%00111001    
    GPIO=0
    
    '*****************************************************************************
    START:
    led=0
    if but=1 then
    goto rc
    else 
    goto start
    endif
    
    
    rc:
    led=1
    DEBUGIN [DEC VALUE]
    DEBUG dec VALUE,13,10
    goto rc
    
    end
    Thanks for the help

Similar Threads

  1. Using Nokia LCD
    By BobP in forum mel PIC BASIC Pro
    Replies: 300
    Last Post: - 3rd May 2018, 04:47
  2. Read/Write Problem
    By Tobias in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 10th February 2010, 01:51
  3. Big characters on HD44780 4x20
    By erpalma in forum mel PIC BASIC Pro
    Replies: 23
    Last Post: - 7th January 2007, 02:21
  4. LCD + bar graph
    By DynamoBen in forum mel PIC BASIC Pro
    Replies: 13
    Last Post: - 5th October 2005, 14:50
  5. Sinus calculating !
    By Don Mario in forum mel PIC BASIC Pro
    Replies: 29
    Last Post: - 28th November 2004, 23:56

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