106 lines
3.1 KiB
C++
106 lines
3.1 KiB
C++
|
#include "Nextion.h"
|
||
|
|
||
|
//Control must have prefix 'v' or 's'
|
||
|
char softSTRHeader[11] = {'p', 'm', '.', 's', '0', '.', 't', 'x', 't', '=', '\"'};
|
||
|
char softINTHeader[10] = {'p', 'm', '.', 'v', '0', '.', 'v', 'a', 'l', '='};
|
||
|
|
||
|
char softTemp[20];
|
||
|
|
||
|
/*!
|
||
|
@brief Send a string or numeric variable to the Nextion LCD.
|
||
|
@param varType
|
||
|
The type of the variable being sent to the Nextion LCD.
|
||
|
@param varIndex
|
||
|
The index (ID) of the variable being sent to the Nextion LCD.
|
||
|
*/
|
||
|
void sendHeader(char varType, char varIndex)
|
||
|
{
|
||
|
if (varType == SWS_HEADER_STR_TYPE)
|
||
|
{
|
||
|
softSTRHeader[4] = varIndex;
|
||
|
for (unsigned i = 0; i < sizeof(softSTRHeader)/sizeof(softSTRHeader[0]); i++)
|
||
|
Serial1.write(softSTRHeader[i]);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
softINTHeader[4] = varIndex;
|
||
|
for (unsigned i = 0; i < sizeof(softINTHeader)/sizeof(softINTHeader[0]); i++)
|
||
|
Serial1.write(softINTHeader[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*!
|
||
|
@brief Send an unsigned long variable to the Nextion LCD.
|
||
|
@param varIndex
|
||
|
The index (ID) of the variable being sent to the Nextion LCD.
|
||
|
@param sendValue
|
||
|
The value of the variable being sent to the Nextion LCD.
|
||
|
*/
|
||
|
void sendCommandUL(char varIndex, unsigned long sendValue)
|
||
|
{
|
||
|
sendHeader(SWS_HEADER_INT_TYPE, varIndex);
|
||
|
|
||
|
memset(softTemp, 0, 20);
|
||
|
ultoa(sendValue, softTemp, DEC);
|
||
|
Serial1.print(softTemp);
|
||
|
Serial1.write(0xff);
|
||
|
Serial1.write(0xff);
|
||
|
Serial1.write(0xff);
|
||
|
}
|
||
|
|
||
|
/*!
|
||
|
@brief Send a (signed) long variable to the Nextion LCD.
|
||
|
@param varIndex
|
||
|
The index (ID) of the variable being sent to the Nextion LCD.
|
||
|
@param sendValue
|
||
|
The value of the variable being sent to the Nextion LCD.
|
||
|
*/
|
||
|
void sendCommandL(char varIndex, long sendValue)
|
||
|
{
|
||
|
sendHeader(SWS_HEADER_INT_TYPE, varIndex);
|
||
|
|
||
|
memset(softTemp, 0, 20);
|
||
|
ltoa(sendValue, softTemp, DEC);
|
||
|
Serial1.print(softTemp);
|
||
|
Serial1.write(0xff);
|
||
|
Serial1.write(0xff);
|
||
|
Serial1.write(0xff);
|
||
|
}
|
||
|
|
||
|
/*!
|
||
|
@brief Send a string variable to the Nextion LCD.
|
||
|
@param varIndex
|
||
|
The index (ID) of the variable being sent to the Nextion LCD.
|
||
|
@param sendValue
|
||
|
The value of the variable being sent to the Nextion LCD.
|
||
|
*/
|
||
|
void sendCommandStr(char varIndex, const char* sendValue)
|
||
|
{
|
||
|
sendHeader(SWS_HEADER_STR_TYPE, varIndex);
|
||
|
|
||
|
Serial1.print(sendValue);
|
||
|
Serial1.write('\"');
|
||
|
Serial1.write(0xFF);
|
||
|
Serial1.write(0xFF);
|
||
|
Serial1.write(0xFF);
|
||
|
}
|
||
|
|
||
|
unsigned char softBuff1Num[14] = {'p', 'm', '.', 'c', '0', '.', 'v', 'a', 'l', '=', 0, 0xFF, 0xFF, 0xFF};
|
||
|
|
||
|
/*!
|
||
|
@brief Send a single digit variable to the Nextion LCD.
|
||
|
@param varIndex
|
||
|
The index (ID) of the variable being sent to the Nextion LCD.
|
||
|
Values 0~9 are: Mode, nowDisp, ActiveVFO, IsDialLock, IsTxtType, IsSplitType.
|
||
|
@param sendValue
|
||
|
The value of the variable being sent to the Nextion LCD.
|
||
|
*/
|
||
|
void sendCommand1Num(char varIndex, char sendValue)
|
||
|
{
|
||
|
softBuff1Num[4] = varIndex;
|
||
|
softBuff1Num[10] = sendValue + 0x30; // convert to character digit
|
||
|
|
||
|
for (unsigned i = 0; i < sizeof(softBuff1Num)/sizeof(softBuff1Num[0]); i++)
|
||
|
Serial1.write(softBuff1Num[i]);
|
||
|
}
|