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++

#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(){
}