SOLVED - Breaking HSERIN into separate parts


+ Reply to Thread
Results 1 to 12 of 12

Hybrid View

  1. #1
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,154


    Did you find this post helpful? Yes | No

    Default Re: Breaking HSERIN into separate parts

    I think I figured out what's written in plain English right in my face:

    STR ArrayVar\n{\c}
    Receive string of n characters optionally ended in character c

    It looks like I can:

    - define the array at the longest possible length,
    - stop reception on character c,


    This way I can embed a Data Layout Number at the start of the message, and use that to branch to code to treat the array properly.

    I understand quickly, you just have to be patient and explain it to me a whole bunch of times.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  2. #2
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,154


    Did you find this post helpful? Yes | No

    Default Re: Breaking HSERIN into separate parts

    EDIT: Length parameter has been removed, I only use StartOfData and EndOfData characters now.

    -------------------------------------------

    Yeah, i was waaaay overthinking this.

    Transmitting (16F18877):

    Code:
    XmitStr                 CON "["
    XmitCode1               var BYTE
    XmitCode2               var BYTE
    XmitNumber              var BYTE
    XmitLen                 var byte
    XmitChecksum            var WORD
    XmitEOF                 CON "]"
    
    
        TX1STA.5 = 1
    
        XmitCode1  = "A"
        XmitCode2  = "A"
        XmitNumber = 8
        XmitLen    = 8
    
        XmitChecksum =  XmitStr + _
                        XmitCode1 + XmitCode2 + XmitNumber + XmitLen + _
                        NAV2_MHz_Standby + _
                        NAV2_KHz_Standby
                    
        BlinkLED1 = 1
        hserout [   XmitStr, _
                    XmitLen, _
                    XmitCode1, _
                    XmitCode2, _
                    XmitNumber, _
                    NAV2_MHz_Standby, _
                    NAV2_KHz_Standby, _
                    XmitChecksum.BYTE1, _
                    XmitChecksum.BYTE0, _
                    XmitEOF]                            
        BlinkLED1 = 0
    
        while TX1STA.1 = 0              ' Check TRMT bit
        wend
     
        TX1STA.5 = 0

    Receiving (18F26K22):

    Code:
    RecvStr                 con "["
    RecvLen                 var BYTE
    RecvCode1               var BYTE
    RecvCode2               var BYTE
    RecvNumber              var BYTE
    RecvChecksum            var WORD
    RecvEOF                 var BYTE
    
        hserin [ wait(RecvStr), STR RecvData\11\"]" ] 
    
        RecvLen             = RecvData[0]
        RecvCode1           = RecvData[1]
        RecvCode2           = RecvData[2]
        RecvNumber          = RecvData[3]
     
    '           check Code1/Code2/Number, execute proper code for that record layout.
    
        NAV2_MHz_Standby    = RecvData[4]
        NAV2_KHz_Standby    = RecvData[5]
        RecvChecksum.byte1  = RecvData[6]
        RecvChecksum.byte0  = RecvData[7]
    It helps to send data 1 byte at a time, or else you get garbage.
    Last edited by Demon; - 19th September 2024 at 22:27.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  3. #3
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,154


    Did you find this post helpful? Yes | No

    Default Re: Breaking HSERIN into separate parts

    16F18877

    Transmitter Enabled/Disabled to have more than 1 PIC transmitting (using a Busy Line to determine which PIC can talk).

    Code:
    '          Enable Transmitter
        TX1STA.5 = 1 
    
    ... transmit ...
    
    '          Make sure all data is sent
        while TX1STA.1 = 0              ' Check TRMT bit
        wend
    
    '          Disable Transmitter
        TX1STA.5 = 0
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  4. #4
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,115


    Did you find this post helpful? Yes | No

    Default Re: SOLVED - Breaking HSERIN into separate parts

    The stop character in the Hserin command is needed if you do not know the length of the string.

    Since you define the length at the beginning of the transmission, and then use it in the STR modifier, what is the point of "]" in that modifier? It will never engage!

    Ioannis

  5. #5
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,154


    Did you find this post helpful? Yes | No

    Default Re: SOLVED - Breaking HSERIN into separate parts

    Quote Originally Posted by Ioannis View Post
    ... what is the point of "]" in that modifier? It will never engage!

    Ioannis
    That was one area that had me overthinking USART. STR ArrayVar\n{\c}, receives a maximum of n bytes, unless it receives character c.

    If I misinterpreted the manual, I'd definitely appreciate being corrected before I code my entire project.


    Initially I was copying what Pedja was doing, but I've since dropped the Length parameter and use only the StartOfData and EndOfData delimiters. I have a LOT of different Data Layouts, and calculating Length was becoming tiresome, and a possible source of human error. It's also cumbersome when you modify the Data Layout.

    I am using variables in HSEROUT, an array (equal to the longest data layout) in HSERIN, which is then moved into variables depending on Header values; it's much more simple (for me).
    Last edited by Demon; - 19th September 2024 at 18:25.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,115


    Did you find this post helpful? Yes | No

    Default Re: SOLVED - Breaking HSERIN into separate parts

    OK, if you drop length then makes sense.

    Using length variable in the STR modifier on the other hand, is very clever.

    Ioannis

  7. #7
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,154


    Did you find this post helpful? Yes | No

    Default Re: SOLVED - Breaking HSERIN into separate parts

    Quote Originally Posted by Ioannis View Post
    OK, if you drop length then makes sense. ...

    Yeah, I updated my post with a comment to clear that.


    Quote Originally Posted by Ioannis View Post
    Using length variable in the STR modifier on the other hand, is very clever. ...
    I didn't field particularly clever after racking my brains trying to find the most efficient way to move data around.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

Similar Threads

  1. Replies: 3
    Last Post: - 14th October 2016, 22:07
  2. Replies: 3
    Last Post: - 22nd June 2015, 16:15
  3. Breaking out of for loops
    By Kamikaze47 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 17th March 2008, 00:49
  4. Replies: 5
    Last Post: - 28th June 2006, 21:32
  5. Breaking through pages in PIC16 Series
    By crematory in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 1st August 2005, 13:49

Members who have read this thread : 9

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