How do I format HSERIN?


Closed Thread
Results 1 to 20 of 20
  1. #1
    Join Date
    Mar 2008
    Posts
    43

    Default How do I format HSERIN?

    I am using a 16f688 and I use HSEROUT with no problems. I now need to send some data back to the 16f688. How do I format the HSERIN command if I don't know how much data is coming?

    Thanks,
    Bob Hiller
    Lifts for the Disabled LLC

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by PlantBob View Post
    I am using a 16f688 and I use HSEROUT with no problems. I now need to send some data back to the 16f688. How do I format the HSERIN command if I don't know how much data is coming?
    HSEROUT has provisions for an 'ending' character. You can fill an array of bytes up to said 'end' character. See HSEROUT in the PBP manual. Look at the STR modifier.

  3. #3
    Join Date
    Mar 2008
    Posts
    43


    Did you find this post helpful? Yes | No

    Default

    I see no reference to filling an array and waiting for termination characters in the PBP manual. Do you have a sample?

    Thanks,
    Bob Hiller
    Lifts for the Disabled LLC

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


    Did you find this post helpful? Yes | No

    Default

    I think he meant ...

    See HSERIN in the PBP manual. Look at the STR modifier.
    <br>
    DT

  5. #5
    Join Date
    Jul 2008
    Location
    Wyoming, US
    Posts
    3


    Did you find this post helpful? Yes | No

    Default HSERIN syntax frustration

    Being a beginner myself I have the same problem with getting simple commands and mondifiers to function. I'm looking in the PBP manual at the STR Modifier and they just don't give any examples on how to use it. I'm also interested in the use of this function as I would like to be able to send commands to the PIC and dinamicly update it.

  6. #6
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    I think he meant ...
    See HSERIN in the PBP manual. Look at the STR modifier.
    <br>
    Yep, that's what I meant...
    der.....

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


    Did you find this post helpful? Yes | No

    Default

    MyVars VAR BYTE(8)

    Main:
    HSERIN 500,NoData,[STR MyVars\8\"~"]

    NoData:
    do something else

    This will wait 500mS before jumping to NoData. It will receive a string of up to 8 characters
    in byte array MyVars, or exit on receipt of the "~" character.
    Regards,

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

  8. #8
    Join Date
    Mar 2008
    Posts
    43


    Did you find this post helpful? Yes | No

    Default Still can't get HSERIN to receive data correctly

    From a PC I send 123:CRLF as 495051581310

    When I try:
    MyVars VAR BYTE(8)

    Main:
    HSERIN 500,NoData,[STR MyVars\6\":"]

    goto main

    NoData:
    HSEROUT ["Timeout",$0d,$0a]
    Goto main

    It always goes to NoData. I never get anything into MyVars.

    If I use HSERIN 500,NoData,[STR MyVars\1\":"] I get random data. It is different each time I send the data.

    What am I missing?

    Thanks,
    Bob Hiller
    Lifts for the Disabled LLC

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


    Did you find this post helpful? Yes | No

    Default

    Have you tried increasing the timeout period?

    P.S. How do you know what you're receiving? Your example doesn't show how you're
    checking what's received!
    Regards,

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

  10. #10
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Don't send 123:CRLF as 495051581310....send it as 123:<CR> with line feeds turned on at the PC.
    HSERIN doesn't need to use raw hex codes for the data (i.e. sending 10 for a line feed, etc).

    Are you using the internal oscillator on the PIC?
    The internal oscillator isn't always accurate. Could cause your baud rate to be off by just enough to confuse everything.

    Are you using a MAX232 type device between the PIC and the PC?
    The hardware UART uses 'TTL-RS232', commonly called 'Normal' in PBP circles. Try using SERIN2/SEROUT2 and using an inverted mode if you don't have a MAX232.

    Are you sure the PIC is configured correctly for the desired baud rate?
    Can get a bit confusing with all of the options a PIC has. Double check them...

    Are you sure the config registers/any other registers are set up correctly?
    Internal vs. External crystals...and so on and so on...

  11. #11
    Join Date
    Mar 2008
    Posts
    43


    Did you find this post helpful? Yes | No

    Default

    I am using MAX32 between the PC and PIC.

    HSEROUT works every time no matter what I send. Thank makes me assume that the BAUD issue is OK.

    Here is how I check what I am receiving:

    HSEROUT ["B1 ", MyVars(0), $0d,$0a]
    HSEROUT ["B2 ", MyVars(1), $0d,$0a]
    HSEROUT ["B3 ", MyVars(2), $0d,$0a]
    HSEROUT ["B4 ", MyVars(3), $0d,$0a]
    HSEROUT ["B5 ", MyVars(4), $0d,$0a]

    etc..

  12. #12
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by PlantBob View Post
    I am using MAX32 between the PC and PIC.
    HSEROUT works every time no matter what I send. Thank makes me assume that the BAUD issue is OK.
    Ok, just checking, didn't have that info before.
    Like I said before, don't send the raw hex data back and forth, just send the characters themselves.
    Code:
    MyVars VAR BYTE[8] : temp var byte
    Main: HSERIN 5000,NoData,[STR MyVars\6\":"]
    HSEROUT ["Received:", STR myvars\8",13,10] : goto main
    NoData: HSEROUT ["Timeout",$0d,$0a]
    for temp = 0 to 8 : myvars[temp]=0 : next temp 'clean out myvars
    Goto main
    At the PC, type in a few characters (no hex codes, nothing crazy, just a few alpha or number characters), followed by the : character.
    The code above should wait for 5 seconds to 1)get no data, 2) get 6 bytes of data, or 3)will kick out and send back the data you just sent if you sent a : before you sent a total of 6 bytes.

  13. #13
    Join Date
    May 2007
    Location
    Suffolk, UK
    Posts
    59


    Did you find this post helpful? Yes | No

    Default

    Hi Skimask

    Counter 0 to 7, perhaps? And possibly no quote marks in third line after 8?

    Adrian

  14. #14
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Adrian View Post
    Hi Skimask
    Counter 0 to 7, perhaps? And possibly no quote marks in third line after 8?
    Adrian
    Quote marks - yes...
    Counter 0 to 7 - perfectly valid.
    MyVars var Byte[8] sets aside 9 bytes, index 0 (zero) is also valid.

  15. #15
    Join Date
    May 2007
    Location
    Suffolk, UK
    Posts
    59


    Did you find this post helpful? Yes | No

    Default

    Hi Skimask
    Thanks but there is something I'm not understanding. I've tried your programme and it works fine until the first timeout then it won't 'goto main' and loop through again. Should it? If I change the counter to FOR temp = 0 to 7 then the programme loops round endlessly. What am I not understanding or what am I doing wrong? Please help - going mad here!!

    Adrian

  16. #16
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Might get a couple of hints from this:
    http://www.picbasic.co.uk/forum/show...ht=hserin+idle

    If not there, then try a search on serial and idle and see what happens.

  17. #17
    Join Date
    Mar 2004
    Location
    UK-Midlands
    Posts
    84


    Did you find this post helpful? Yes | No

    Default

    Hi,

    I usually refer back to this sample program if I forget how to use a modifier;

    http://www.melabs.com/resources/samples.htm

    and load the sample program ser2mod.bas

    Bob

  18. #18
    Join Date
    May 2007
    Location
    Suffolk, UK
    Posts
    59


    Did you find this post helpful? Yes | No

    Default

    Thanks for that Bob. The bit I was confused about is Skimask's statement "MyVars var Byte[8] sets aside 9 bytes, index 0 (zero) is also valid"
    I thought I understood that MyVars VAR BYTE[8] had 8 elements numbered 0 to 7 (Page 26 PBP new manual). If that were the case then the 'clearance' counter ought surely to be 0 to 7 not 0 to 8, which would be invalid.

    Adrian

  19. #19
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Adrian View Post
    Thanks for that Bob. The bit I was confused about is Skimask's statement "MyVars var Byte[8] sets aside 9 bytes, index 0 (zero) is also valid"
    I thought I understood that MyVars VAR BYTE[8] had 8 elements numbered 0 to 7 (Page 26 PBP new manual). If that were the case then the 'clearance' counter ought surely to be 0 to 7 not 0 to 8, which would be invalid.
    Adrian
    Ya know...you're right. I've been reading that line in the manual 'bass-ackward' all this time. Never had a problem with it, but still.........

  20. #20
    Join Date
    May 2007
    Location
    Suffolk, UK
    Posts
    59


    Did you find this post helpful? Yes | No

    Default

    Thank you for that, Skimask. I really appreciate you coming back and putting this one to bed once and for all. I guess that Counter 0 to 7 clears the temp array and 0 to 8 hangs up due to the extra 'rogue' index.
    I really do appreciate your input and have learned some more about this interesting and all absorbing science

    Regards & thanks

    Adrian

Similar Threads

  1. TMR0 interrupt and HSERIN
    By boban in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 2nd September 2008, 11:48
  2. Serout format
    By aftab in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 22nd August 2007, 07:12
  3. 16F877a Interupt driven Hserin
    By RFsolution in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 3rd November 2006, 00:38
  4. Can a TMR interrupt stops HSERIN?
    By SergioRM in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 24th January 2006, 01:07
  5. Hserin
    By egberttheone in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 27th November 2004, 15:42

Members who have read this thread : 1

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