Files
OpenBK7231T_App/src/sim/Controller_BL0942.cpp

75 lines
1.9 KiB
C++

#ifdef WINDOWS
#include "Controller_BL0942.h"
#include "Shape.h"
#include "Junction.h"
#include "Text.h"
#define BL0942_PACKET_LEN 23
#define BL0942_READ_COMMAND 0x58
static float BL0942_PREF = 598;
static float BL0942_UREF = 15188;
static float BL0942_IREF = 251210;
void CControllerBL0942::onDrawn() {
int currentPending = UART_GetDataSize();
if (currentPending > 0) {
return;
}
if (1) {
CMD_ExecuteCommand("startDriver BL0942", 0);
}
int i;
byte data[BL0942_PACKET_LEN];
memset(data, 0, sizeof(data));
data[0] = 0x55;
byte checksum = BL0942_READ_COMMAND;
float realCurrent = 0.25f;
float realPower = 60.0f;
float realVoltage = 220.0f;
int bl_current = BL0942_IREF * realCurrent;
int bl_power = BL0942_PREF * realPower;
int bl_voltage = BL0942_UREF * realVoltage;
data[1] = (byte)(bl_current);
data[2] = (byte)(bl_current >> 8);
data[3] = (byte)(bl_current >> 16);
data[4] = (byte)(bl_voltage);
data[5] = (byte)(bl_voltage >> 8);
data[6] = (byte)(bl_voltage >> 16);
data[10] = (byte)(bl_power);
data[11] = (byte)(bl_power >> 8);
data[12] = (byte)(bl_power >> 16);
for (i = 0; i < BL0942_PACKET_LEN - 1; i++) {
checksum += data[i];
}
checksum ^= 0xFF;
data[BL0942_PACKET_LEN - 1] = checksum;
for (i = 0; i < BL0942_PACKET_LEN; i++) {
UART_AppendByteToCircularBuffer(data[i]);
}
}
class CControllerBase *CControllerBL0942::cloneController(class CShape *origOwner, class CShape *newOwner) {
CControllerBL0942 *r = new CControllerBL0942();
if (tx) {
r->tx = newOwner->findShapeByName_r(tx->getName())->asJunction();
}
if (rx) {
r->rx = newOwner->findShapeByName_r(rx->getName())->asJunction();
}
if (txt_voltage) {
r->txt_voltage = newOwner->findShapeByName_r(txt_voltage->getName())->asText();
}
if (txt_current) {
r->txt_current = newOwner->findShapeByName_r(txt_current->getName())->asText();
}
if (txt_power) {
r->txt_power = newOwner->findShapeByName_r(txt_power->getName())->asText();
}
return r;
}
#endif