I create a buffer for the transmission.  For example, I'm using a Nextion where if I wanted to display RPM, I name the Nextion Number object "rpm".  To send it, ASCii characters "rpm.val=1234" then $FF, $FF, $FF.  I create a NexBuf[16] VAR BYTE to hold each character byte.
Here is my Send_RPM subroutine:
	Code:
	Send_RPM:                                       ;Send Current RPM Value to Nextion
    tRPM = RPM                                  ;Create a Temporary Variable We Can Modify
    ARRAYWRITE NexBuf,["rpm.val="]              ;Start Nextion Command Sequence, Occupies NexBuf[0] >> [7]
    IF tRPM > 1000 THEN                         ;If RPM is 4 Digits
        b0 = tRPM / 1000                        ;Get the Xxxx Value
        NexBuf[8] = b0 + $30                    ;Convert it to ASCii
        tRPM = tRPM - (b0 * 1000)               ;Subtract the Xxxx Value from tRPM
        IF tRPM < 100 THEN                      ;2nd Digit = 0
            NexBuf[9] = $30                     ;If New tRPM < 100, Add Zero Fill (ASCii)
            IF tRPM < 10 THEN                   ;3rd Digit = 0
                NexBuf[10] = $30                ;If tRPM < 10, Add Zero Fill (ASCii)
            ENDIF                           ;IF tRPM < 10
        ENDIF                               ;IF tRPM < 100
    ELSE                                        ;tRPM < 1000
        NexBuf[8] = $30                         ;If tRPM < 1000, Xxxx = Zero (ASCii)
    ENDIF                                   ;IF tRPM > 1000
    IF tRPM > 100 THEN                          ;If RPM is 3 Digits
        b0 = tRPM / 100                         ;Get the xXxx Value
        NexBuf[9] = b0 + $30                    ;Convert it to ASCii
        tRPM = tRPM - (b0 * 100)                ;Subtract the xXxx Value from tRPM
        IF tRPM < 10 THEN                       ;3rd Digit = 0
            NexBuf[10] = $30                    ;If tRPM < 10, Add Zero Fill  (ASCii)
        ENDIF                               ;IF tRPM < 10
    ELSE                                        ;tRPM < 100
        NexBuf[9] = $30                         ;If tRPM < 100, it's Zero (ASCii)
    ENDIF                                   ;IF tRPM > 100
    IF tRPM > 10 THEN                           ;If RPM is 2 Digits
        b0 = tRPM / 10                          ;Get the xxXx Value
        NexBuf[10] = b0 + $30                   ;Convert it to ASCii
        tRPM = tRPM - (b0 * 10)                 ;Subtract the xxXx Value from tRPM
    ELSE                                        ;tRPM < 10
        NexBuf[10] = $30                        ;If tRPM < 10, it's Zero (ASCii)
    ENDIF                                   ;IF tRPM > 10
    NexBuf[11] = tRPM + $30                     ;Convert xxxX Value to ASCii & Add to Buffer                
    FOR b0 = 12 TO 14                           ;Generate "End of Message" Sequence: $FF, $FF, $FF
        NexBuf[b0] = $FF                        ;Load it to Buffer
    NEXT b0                                 ;FOR b0 = 12 TO 14
    NexBuf[15] = 0                              ;Tells Us To Turn UART TX INT Off
    RotX = 0                                    ;NexFlags.RotX -- Clear RotX Flag
    GOTO Start_TX                           ;No RETURN Needed, Using GOTO Command
 I'm using the UART TX Interrupt to keep feeding NexBuf through the pipeline (not LCDOOUT).  But I hope this at least gives you some ideas.
				
			
Bookmarks