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:
Example: 00001;00100;01000;10000;
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
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