PC Communications :: Backward Compatibility :: One-way UART Profilab GUI v1.0

The new version of the one-way UART GUI uses a different ASCII protocol to support the larger feature set of the mTouch Framework. The old packet structure was:

  1. How to adjust mComm_config.h file configuration.

       #define MCOMM_ENABLED                                             // Must be defined
       #define MCOMM_TYPE                    MCOMM_UART_ONE_WAY          // Must be defined to this value
       #define MCOMM_UART_BAUDRATE           38400                       // (or) other valid baud rate option
    
       #define MCOMM_UART_1WAY_MODULE        MCOMM_UART_HARDWARE_MODULE  // (or) MCOMM_UART_SOFTWARE_IMPLEMENTATION
     
         // If MCOMM_UART_SOFTWARE_IMPLEMENTATION is chosen:
         #define MCOMM_UART_SOFT_TXPORT        PORTA
         #define MCOMM_UART_SOFT_TXTRIS        TRISA   
         #define MCOMM_UART_SOFT_TXPIN         5       // <-- The bit of the PORT/TRIS register
                                                       //     NOT the hardware pin on the device
    
       #define MCOMM_UART_1WAY_OUTPUT        MCOMM_UART_1WAY_DECIMAL     // (or) MCOMM_UART_1WAY_HEX        
       #define MCOMM_UART_1WAY_DELIMITER     ';'                         // <-- IMPORTANT                  
    

  2. Modify the bottom half of the mComm.c function: mComm_Service()

    Replace this code:

             #if defined(MCOMM_ONE_WAY_ENABLED)
                 // OUTPUT LOGIC FOR ONE-WAY COMMUNICATIONS.
     
                 #if defined(MCOMM_UART_1WAY_OUT_STATE)
                 mComm_UART_Int2ASCII((uint16_t)mTouch_stateMask);
                 #else
                 mComm_UART_Int2ASCII(0);
                 #endif
                 
                 #if defined(MCOMM_UART_1WAY_OUT_TOGGLE) && defined(MTOUCH_TOGGLE_ENABLED)
                 mComm_UART_Int2ASCII((uint16_t)mTouch_toggle);
                 #else
                 mComm_UART_Int2ASCII(0);
                 #endif
                 
                 #if defined(MCOMM_UART_1WAY_OUT_SLIDER) && defined(MTOUCH_NUMBER_OF_SLIDERS) && (MTOUCH_NUMBER_OF_SLIDERS > 0)
                 mComm_UART_Char2ASCII(mTouch_slider[0]);            
                 #else
                 mComm_UART_Char2ASCII(0);
                 #endif
     
                 #if defined(MCOMM_UART_1WAY_OUT_MATRIX) && defined(MTOUCH_MATRIX_ENABLED)
                 mComm_UART_PutChar('(');
                 if (mTouch_Matrix_isPressed())
                 {
                     mComm_UART_PutChar((uint8_t)(mTouch_Matrix_getColumn()) + 0x30);
                     mComm_UART_PutChar(':');
                     mComm_UART_PutChar((uint8_t)(mTouch_Matrix_getRow())    + 0x30);
                 }
                 else
                 {
                     mComm_UART_PutChar('x');
                     mComm_UART_PutChar(':');
                     mComm_UART_PutChar('x');
                 }
                 mComm_UART_PutChar(')');
                 mComm_UART_PutChar(MCOMM_UART_1WAY_DELIMITER);
                 #endif
                 
                 #if defined(MCOMM_UART_1WAY_OUT_READING) || defined(MCOMM_UART_1WAY_OUT_BASELINE)
                 for (uint8_t i = 0; i < MTOUCH_NUMBER_SENSORS; i++)
                 {
                     #if defined(MCOMM_UART_1WAY_OUT_READING)
                     mComm_UART_Int2ASCII(mTouch_GetSensor(i));      
                     #endif                                          
                     #if defined(MCOMM_UART_1WAY_OUT_BASELINE)
                     mComm_UART_Int2ASCII(mTouch_GetAverage(i));     
                     #endif
                 }
                 #endif
                 
                 mComm_UART_PutChar(0x0D);   // CR                   
                 mComm_UART_PutChar(0x0A);   // LF
             
             #endif
    

    With this code:

             #if defined(MCOMM_ONE_WAY_ENABLED)
                 // OUTPUT LOGIC FOR ONE-WAY COMMUNICATIONS.
     
                 mComm_UART_Int2ASCII((uint16_t)mTouch_stateMask);
                 
                 #if defined(MCOMM_UART_1WAY_OUT_READING) || defined(MCOMM_UART_1WAY_OUT_BASELINE)
                 for (uint8_t i = 0; i < MTOUCH_NUMBER_SENSORS; i++)
                 {
                     #if defined(MCOMM_UART_1WAY_OUT_READING)
                     mComm_UART_Int2ASCII(mTouch_GetSensor(i));      
                     #endif                                          
                     #if defined(MCOMM_UART_1WAY_OUT_BASELINE)
                     mComm_UART_Int2ASCII(mTouch_GetAverage(i));     
                     #endif
                 }
                 #endif
                 
                 mComm_UART_PutChar(0x0D);   // CR                   
                 mComm_UART_PutChar(0x0A);   // LF
             
             #endif