You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
3.6 KiB
C++
186 lines
3.6 KiB
C++
#include "MCU_ARM.h"
|
|
#include "uart.h"
|
|
#include "uart1.h"
|
|
extern QSerialPort SerialPort;
|
|
UART *uart_mcu =new UART();
|
|
extern uint16_t CRC;
|
|
bool tag = true;
|
|
|
|
MCU_ARM::MCU_ARM():m_serialPort()
|
|
{
|
|
}
|
|
|
|
void MCU_ARM::StationData(QByteArray sharedata)
|
|
{
|
|
QByteArray data;
|
|
uint8_t CRC_lowData;
|
|
uint8_t len = sharedata.size();
|
|
uint8_t cout = 0;
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
data[2] = 0x13;
|
|
data[3] = 0x01;
|
|
data[4] = len/256;
|
|
data[5] = len%256;
|
|
QByteArray finish =QByteArray::fromHex(sharedata.toHex());
|
|
while(cout!=len)
|
|
{
|
|
data[6+cout] = finish[cout];
|
|
cout++;
|
|
}
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[6+len] = CRC_lowData;
|
|
data[7+len] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
void MCU_ARM::setFanTiming(uint16_t starthour,uint16_t startminute,uint16_t timing){
|
|
QByteArray data;
|
|
uint8_t lowData;
|
|
uint8_t CRC_lowData;
|
|
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
data[2] = 0x24;
|
|
data[3] = 0x01;
|
|
data[4] = 0x00;
|
|
data[5] = 0x04;
|
|
data[6] = 0x00;
|
|
data[7] = starthour;
|
|
data[8] = startminute;
|
|
lowData = timing;
|
|
timing = timing >> 8;
|
|
data[9] = lowData;
|
|
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[10] = CRC_lowData;
|
|
data[11] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
void MCU_ARM::setFanState(uint8_t state){
|
|
QByteArray data;
|
|
uint8_t CRC_lowData;
|
|
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
data[2] = 0x23;
|
|
data[3] = 0x01;
|
|
data[4] = 0x00;
|
|
data[5] = 0x01;
|
|
data[6] = state;
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[7] = CRC_lowData;
|
|
data[8] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
void MCU_ARM::setEnable(uint8_t enable){
|
|
QByteArray data;
|
|
uint8_t CRC_lowData;
|
|
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
data[2] = 0x12;
|
|
data[3] = 0x01;
|
|
data[4] = 0x00;
|
|
data[5] = 0x01;
|
|
data[6] = enable;
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[7] = CRC_lowData;
|
|
data[8] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
void MCU_ARM::setFanStartT(uint16_t temperature){
|
|
QByteArray data;
|
|
uint8_t lowData;
|
|
uint8_t CRC_lowData;
|
|
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
data[2] = 0x22;
|
|
data[3] = 0x01;
|
|
data[4] = 0x00;
|
|
data[5] = 0x02;
|
|
lowData = temperature;
|
|
temperature = temperature >> 8;
|
|
data[6] = temperature;
|
|
data[7] = lowData;
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[8] = CRC_lowData;
|
|
data[9] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
void MCU_ARM::setWirelessT(int16_t temperature){
|
|
temperature = 0;
|
|
printf("this function unable to use, now...%d\n");
|
|
}
|
|
|
|
void MCU_ARM::setBuzzerState(uint8_t state){
|
|
QByteArray data;
|
|
uint8_t CRC_lowData;
|
|
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
data[2] = 0x25;
|
|
data[3] = 0x01;
|
|
data[4] = 0x00;
|
|
data[5] = 0x01;
|
|
data[6] = state;
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[7] = CRC_lowData;
|
|
data[8] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
void MCU_ARM::testSerialPort(uint8_t uart){
|
|
QByteArray data;
|
|
uint8_t CRC_lowData;
|
|
|
|
data[0] = 0xAA;
|
|
data[1] = 0x55;
|
|
if(uart == 1)
|
|
{
|
|
data[2] = 0x10;
|
|
}
|
|
else if(uart == 2)
|
|
{
|
|
data[2] = 0x11;
|
|
}
|
|
if(tag){
|
|
data[3] = 0x01;
|
|
} else {
|
|
data[3] = 0x03;
|
|
}
|
|
tag = !tag;
|
|
data[4] = 0x00;
|
|
data[5] = 0x01;
|
|
data[6] = 0x0;
|
|
uart_mcu->ModBusCRC16(data);
|
|
CRC_lowData = CRC;
|
|
CRC = CRC>>8;
|
|
data[7] = CRC_lowData;
|
|
data[8] = CRC;
|
|
uart_mcu->ShuJu_Write(data);
|
|
}
|
|
|
|
MCU_ARM::~MCU_ARM(){
|
|
}
|
|
|
|
|
|
|