Browse Source

update

master
zhaohe 5 months ago
parent
commit
e2ede969eb
  1. 5
      CMakeLists.txt
  2. 2
      a8000_protocol
  3. 75
      iflytop_canbus/iflytop_canbus_master.cpp
  4. 8
      iflytop_canbus/iflytop_canbus_master.hpp
  5. 5
      iflytop_canbus/waveshare_can.cpp
  6. 2
      libzqt/QFunction.hpp
  7. 6
      libzqt/logger.hpp
  8. 59
      src/mainwindow.cpp
  9. 6
      src/qt_serial_datachannel.cpp
  10. 4
      src/tab/id_card_read_tab.cpp
  11. 26
      src/tab/pipette_ctrl_tab.cpp
  12. 11
      tools/build.bat
  13. 2
      tools/packet.bat

5
CMakeLists.txt

@ -24,7 +24,7 @@ include_directories(src/basic)
include_directories(libzqt) include_directories(libzqt)
add_compile_options(-Wall -DBUILD_IN_QT)
add_compile_options(-Wall -Wno-unused-variable -Wno-sign-compare -DBUILD_IN_QT)
set(PROJECT_SOURCES set(PROJECT_SOURCES
libzqt/logger.cpp libzqt/logger.cpp
libzqt/zqthread.cpp libzqt/zqthread.cpp
@ -88,7 +88,8 @@ set(PROJECT_SOURCES
) )
add_executable(a8000_pc_upper WIN32
add_executable(a8000_pc_upper
${PROJECT_SOURCES} ${PROJECT_SOURCES}
) )
target_link_options(a8000_pc_upper PRIVATE -static -static-libgcc -static-libstdc++) target_link_options(a8000_pc_upper PRIVATE -static -static-libgcc -static-libstdc++)

2
a8000_protocol

@ -1 +1 @@
Subproject commit 6c53aa3ab6e9888e39bcc92f7956d9fc6ad135a9
Subproject commit baa52b8e1db1da6eb1ba4a5bbcb55dc49d22c795

75
iflytop_canbus/iflytop_canbus_master.cpp

@ -10,6 +10,14 @@ using namespace zcr;
#define TAG "IflytopCanbusMaster" #define TAG "IflytopCanbusMaster"
#define G_OVERTIME 300 #define G_OVERTIME 300
static bool checkpacket(uint8_t *data, int len) {
uint8_t sum = 0;
for (int i = 0; i < len - 1; i++) {
sum += data[i];
}
return sum == data[len - 1];
}
IflytopCanbusMaster *IflytopCanbusMaster::ins() { IflytopCanbusMaster *IflytopCanbusMaster::ins() {
static IflytopCanbusMaster *ins = new IflytopCanbusMaster(); static IflytopCanbusMaster *ins = new IflytopCanbusMaster();
return ins; return ins;
@ -19,7 +27,10 @@ void IflytopCanbusMaster::initialize(IDataChannel *channel) { //
m_channel = channel; m_channel = channel;
m_waveCan.init(channel, [this](WaveshareCan::can_rx_frame_t *canframe) { // m_waveCan.init(channel, [this](WaveshareCan::can_rx_frame_t *canframe) { //
ZLOGI(TAG, "can rx: 0x%08x %d %s", canframe->id, canframe->dlc, zhex2str(canframe->data, canframe->dlc).c_str());
if (canframe->dlc == 0) {
ZLOGW(TAG, "rx empty packet")
return;
}
/** /**
* @brief * @brief
@ -27,9 +38,9 @@ void IflytopCanbusMaster::initialize(IDataChannel *channel) { //
* [2] [3bit] [8bit] [8bit] [8bit] * [2] [3bit] [8bit] [8bit] [8bit]
* , from frameNum frameId * , from frameNum frameId
*/ */
uint8_t from = (canframe->id >> 16 & 0xFF);
uint8_t nframe = (canframe->id & 0xFF00) >> 8;
uint8_t frameId = (canframe->id & 0x00FF);
uint8_t from = (canframe->id & 0xFF);
uint8_t nframe = (canframe->data[0] & 0xF0) >> 4;
uint8_t frameId = (canframe->data[0] & 0xF);
CanPacketRxBuffer *rxbuf = nullptr; CanPacketRxBuffer *rxbuf = nullptr;
rxbuf = findRxBuff(from); rxbuf = findRxBuff(from);
@ -47,8 +58,8 @@ void IflytopCanbusMaster::initialize(IDataChannel *channel) { //
return; return;
} }
memcpy(rxbuf->rxdata + rxbuf->rxdataSize, canframe->data, canframe->dlc);
rxbuf->rxdataSize += canframe->dlc;
memcpy(rxbuf->rxdata + rxbuf->rxdataSize, canframe->data + 1, canframe->dlc - 1);
rxbuf->rxdataSize += canframe->dlc - 1;
/** /**
* @brief * @brief
@ -74,6 +85,11 @@ CanPacketRxBuffer *IflytopCanbusMaster::findRxBuff(int deviceId) {
} }
void IflytopCanbusMaster::processRxPacket(zcr_cmd_header_t *frame, size_t len) { void IflytopCanbusMaster::processRxPacket(zcr_cmd_header_t *frame, size_t len) {
if (!checkpacket((uint8_t *)frame, len)) {
ZLOGE(TAG, "check packet fail %s", zhex2str((uint8_t *)frame, len).c_str());
return;
}
if (frame->packetType == kptv2_ack || frame->packetType == kptv2_error_ack) { if (frame->packetType == kptv2_ack || frame->packetType == kptv2_error_ack) {
if (on_rx_raw) on_rx_raw(kcmd_receipt, (uint8_t *)frame, len); if (on_rx_raw) on_rx_raw(kcmd_receipt, (uint8_t *)frame, len);
} else if (frame->packetType == kptv2_cmd) { } else if (frame->packetType == kptv2_cmd) {
@ -83,7 +99,7 @@ void IflytopCanbusMaster::processRxPacket(zcr_cmd_header_t *frame, size_t len) {
} }
if (frame->packetType == kptv2_ack || frame->packetType == kptv2_error_ack) { if (frame->packetType == kptv2_ack || frame->packetType == kptv2_error_ack) {
if (frame->packetindex == m_rxReceiptContext.waittingIndex) {
if (frame->index == m_rxReceiptContext.waittingIndex) {
lock_guard<mutex> lock(m_rxReceiptContext_lock); lock_guard<mutex> lock(m_rxReceiptContext_lock);
m_rxReceiptContext.receiptIsReady = true; m_rxReceiptContext.receiptIsReady = true;
m_rxReceiptContext.receiptLen = len; m_rxReceiptContext.receiptLen = len;
@ -96,7 +112,7 @@ void IflytopCanbusMaster::processRxPacket(zcr_cmd_header_t *frame, size_t len) {
} }
void IflytopCanbusMaster::updateChannelConfig() { // void IflytopCanbusMaster::updateChannelConfig() { //
m_waveCan.setCanpPrameter(CANUSB_SPEED_500000, CANUSB_MODE_NORMAL, CANUSB_FRAME_EXTENDED);
m_waveCan.setCanpPrameter(CANUSB_SPEED_500000, CANUSB_MODE_NORMAL, CANUSB_FRAME_STANDARD);
} }
void IflytopCanbusMaster::ping(int32_t device_id) { void IflytopCanbusMaster::ping(int32_t device_id) {
int32_t param[4]; int32_t param[4];
@ -146,18 +162,25 @@ void IflytopCanbusMaster::callcmd4(int32_t device_id, int32_t cmdid, int32_t par
callcmd(device_id, cmdid, (uint8_t *)param, 16, G_OVERTIME); callcmd(device_id, cmdid, (uint8_t *)param, 16, G_OVERTIME);
} }
void IflytopCanbusMaster::callcmd(int32_t device_id, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime) { // void IflytopCanbusMaster::callcmd(int32_t device_id, int32_t cmdid, uint8_t *param, int32_t paramLen, int32_t overtime) { //
zcr_cmd_header_t *frame = (zcr_cmd_header_t *)m_txbuf;
frame->cmdMainId = cmdid >> 8;
frame->cmdSubId = cmdid & 0xff;
zcr_cmd_header_t *frame = (zcr_cmd_header_t *)m_txbuf;
int32_t frameLen = paramLen + sizeof(zcr_cmd_header_t) + 1;
frame->cmdid = cmdid;
if (m_txindex < 60000) { if (m_txindex < 60000) {
m_txindex = 60000; m_txindex = 60000;
} }
frame->packetindex = m_txindex;
frame->moduleid = device_id;
frame->packetType = kptv2_cmd;
frame->index = m_txindex;
frame->moduleId = device_id;
frame->packetType = kptv2_cmd;
frame->datalen = paramLen;
if (paramLen != 0) memcpy(frame->data, param, paramLen); if (paramLen != 0) memcpy(frame->data, param, paramLen);
uint8_t sum = 0;
for (int i = 0; i < frameLen - 1; i++) {
sum += ((uint8_t *)frame)[i];
}
((uint8_t *)frame)[frameLen - 1] = sum;
{ {
lock_guard<mutex> lock(m_rxReceiptContext_lock); lock_guard<mutex> lock(m_rxReceiptContext_lock);
m_rxReceiptContext.waittingIndex = m_txindex; m_rxReceiptContext.waittingIndex = m_txindex;
@ -167,7 +190,7 @@ void IflytopCanbusMaster::callcmd(int32_t device_id, int32_t cmdid, uint8_t *par
} }
m_txindex++; m_txindex++;
sendframe(frame, paramLen + sizeof(zcr_cmd_header_t));
sendframe(frame, frameLen);
bool rxreceipt = false; bool rxreceipt = false;
@ -204,20 +227,19 @@ void IflytopCanbusMaster::sendframe(zcr_cmd_header_t *frame, size_t len) { sendf
void IflytopCanbusMaster::sendframe(uint8_t fromId, uint8_t *frame, size_t len) { void IflytopCanbusMaster::sendframe(uint8_t fromId, uint8_t *frame, size_t len) {
if (on_rx_raw) on_rx_raw(kcmd_cmd, (uint8_t *)frame, len); if (on_rx_raw) on_rx_raw(kcmd_cmd, (uint8_t *)frame, len);
uint8_t *packet = (uint8_t *)frame;
int npacket = len / 8 + (len % 8 == 0 ? 0 : 1);
uint8_t *packet = (uint8_t *)frame;
int npacket = len / 7 + (len % 7 == 0 ? 0 : 1);
if (npacket > 255) { if (npacket > 255) {
throw zexception(ke_invalid_packet_format, "channel is not open"); throw zexception(ke_invalid_packet_format, "channel is not open");
return; return;
} }
int finalpacketlen = len % 8 == 0 ? 8 : len % 8;
int finalpacketlen = len % 7 == 0 ? 7 : len % 7;
for (uint8_t i = 0; i < npacket; i++) { for (uint8_t i = 0; i < npacket; i++) {
if (i == npacket - 1) { if (i == npacket - 1) {
sendsubframe(fromId, npacket, i, packet + i * 8, finalpacketlen);
sendsubframe(fromId, npacket, i, packet + i * 7, finalpacketlen);
} else { } else {
sendsubframe(fromId, npacket, i, packet + i * 8, 8);
sendsubframe(fromId, npacket, i, packet + i * 7, 7);
} }
} }
} }
@ -226,11 +248,14 @@ void IflytopCanbusMaster::sendsubframe(uint8_t fromId, int npacket, int packetIn
uint8_t candata[8]; uint8_t candata[8];
uint8_t cantxlen; uint8_t cantxlen;
canid = (fromId << 16) | (npacket << 8) | packetIndex;
memcpy(candata, packet, len);
cantxlen = len;
// canid = (fromId << 16) | (npacket << 8) | packetIndex;
canid = fromId;
candata[0] = npacket << 4 | packetIndex;
memcpy(&candata[1], packet, len);
cantxlen = len + 1;
m_waveCan.sendExtframe(canid, candata, cantxlen);
m_waveCan.sendStdframe(canid, candata, cantxlen);
} }
void IflytopCanbusMaster::sendraw(int32_t fromId, uint8_t *data, size_t len) { sendframe(fromId, data, len); } void IflytopCanbusMaster::sendraw(int32_t fromId, uint8_t *data, size_t len) { sendframe(fromId, data, len); }

8
iflytop_canbus/iflytop_canbus_master.hpp

@ -66,10 +66,10 @@ class IflytopCanbusMaster {
/******************************************************************************* /*******************************************************************************
* TX CONTEXT * * TX CONTEXT *
*******************************************************************************/ *******************************************************************************/
mutex m_tx_lock;
uint8_t m_txbuf[1024];
int32_t m_rxsize;
uint16_t m_txindex = 0;
mutex m_tx_lock;
uint8_t m_txbuf[1024];
int32_t m_rxsize;
uint8_t m_txindex = 0;
WaveshareCan m_waveCan; WaveshareCan m_waveCan;

5
iflytop_canbus/waveshare_can.cpp

@ -82,12 +82,11 @@ bool WaveshareCan::init(IDataChannel* ch, frame_callback_t framecb) {
} }
} }
})); }));
return true;
} }
void WaveshareCan::setCanpPrameter(CANUSB_SPEED speed, CANUSB_MODE mode, CANUSB_FRAME frame) { void WaveshareCan::setCanpPrameter(CANUSB_SPEED speed, CANUSB_MODE mode, CANUSB_FRAME frame) {
int cmd_frame_len;
unsigned char cmd_frame[20]; unsigned char cmd_frame[20];
cmd_frame_len = 0;
cmd_frame[0] = 0xaa; cmd_frame[0] = 0xaa;
cmd_frame[1] = 0x55; cmd_frame[1] = 0x55;
cmd_frame[2] = 0x02; // 0x02:用固定20字节协议收发数据 0x12-设置用可变协议收发数据 cmd_frame[2] = 0x02; // 0x02:用固定20字节协议收发数据 0x12-设置用可变协议收发数据
@ -167,7 +166,9 @@ int WaveshareCan::onReceivePacket(uint8_t* data, size_t len) {
canframe.data[6] = rxpacket->frame_data_7; canframe.data[6] = rxpacket->frame_data_7;
canframe.data[7] = rxpacket->frame_data_8; canframe.data[7] = rxpacket->frame_data_8;
ZLOGI(TAG, "can rx: 0x%08x %d %s", canframe.id, canframe.dlc, zhex2str(canframe.data, canframe.dlc).c_str());
if (m_frame_callback) { if (m_frame_callback) {
m_frame_callback(&canframe); m_frame_callback(&canframe);
} }
return 0;
} }

2
libzqt/QFunction.hpp

@ -6,7 +6,7 @@
class QFunction : public QObject { class QFunction : public QObject {
Q_OBJECT Q_OBJECT
std::function<void()> m_func;
std::function<void()> m_func = nullptr;
public: public:
explicit QFunction(std::function<void()> func, QObject *parent = nullptr); explicit QFunction(std::function<void()> func, QObject *parent = nullptr);

6
libzqt/logger.hpp

@ -4,7 +4,7 @@
#include <string> #include <string>
void zos_log(const char* fmt, ...);
void zos_log(const char* fmt, ...);
uint32_t zos_get_ticket(); uint32_t zos_get_ticket();
std::string zhex2str(const uint8_t* hex, size_t len); std::string zhex2str(const uint8_t* hex, size_t len);
@ -12,7 +12,8 @@ std::string zhex2binary(uint8_t hex);
std::string zhex32ToBinary(uint32_t hex); std::string zhex32ToBinary(uint32_t hex);
#define ZLOGI(TAG, fmt, ...) zos_log("%08lu INFO [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__); #define ZLOGI(TAG, fmt, ...) zos_log("%08lu INFO [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZLOGD(TAG, fmt, ...) zos_log("%08lu DEBU [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZLOGD(TAG, fmt, ...) \
if (DEBUG) zos_log("%08lu DEBU [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZLOGE(TAG, fmt, ...) zos_log("%08lu ERRO [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__); #define ZLOGE(TAG, fmt, ...) zos_log("%08lu ERRO [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZLOGW(TAG, fmt, ...) zos_log("%08lu WARN [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__); #define ZLOGW(TAG, fmt, ...) zos_log("%08lu WARN [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZASSERT(cond) \ #define ZASSERT(cond) \
@ -21,5 +22,4 @@ std::string zhex32ToBinary(uint32_t hex);
exit(-1); \ exit(-1); \
} }
#define ZARRAY_SIZE(array) (sizeof(array) / sizeof(array[0])) #define ZARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))

59
src/mainwindow.cpp

@ -170,18 +170,9 @@ void MainWindow::constructBaseUI() {
void MainWindow::displayInfo(bool suc, QString info) {} void MainWindow::displayInfo(bool suc, QString info) {}
static const char *fmt(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
static char buf[1024] = {0};
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
return buf;
}
void MainWindow::parse_ptv2_cmd(zcr_cmd_header_t *frame, int32_t packetlen) { void MainWindow::parse_ptv2_cmd(zcr_cmd_header_t *frame, int32_t packetlen) {
int cmdId = frame->cmdMainId * 256 + frame->cmdSubId;
int32_t mid = frame->moduleid;
int cmdId = frame->cmdid;
int32_t mid = frame->moduleId;
int32_t *param = (int32_t *)frame->data; int32_t *param = (int32_t *)frame->data;
if (cmdId == kmodule_set_reg) { if (cmdId == kmodule_set_reg) {
@ -190,31 +181,31 @@ void MainWindow::parse_ptv2_cmd(zcr_cmd_header_t *frame, int32_t packetlen) {
ZQUI::ins()->rawshow(" [-->] module_get_reg %d(mid) %s(%d)", mid, regindex2str(param[0]), param[0]); ZQUI::ins()->rawshow(" [-->] module_get_reg %d(mid) %s(%d)", mid, regindex2str(param[0]), param[0]);
} else { } else {
// //
if ( cmdId == ka8000_idcard_write_raw) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, mid, cmdid2str(cmdId), cmdId, //
zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
if (cmdId == ka8000_idcard_write_raw) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->index, mid, cmdid2str(cmdId), cmdId, //
zhex2str(frame->data, frame->datalen).c_str());
} else { } else {
int32_t paramNum = (packetlen - sizeof(zcr_cmd_header_t)) / 4;
int32_t paramNum = (frame->datalen) / 4;
int32_t *para = (int32_t *)frame->data; int32_t *para = (int32_t *)frame->data;
if (paramNum == 0) { if (paramNum == 0) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) ", frame->packetindex, mid, cmdid2str(cmdId), cmdId);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) ", frame->index, mid, cmdid2str(cmdId), cmdId);
} else if (paramNum == 1) { } else if (paramNum == 1) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0]);
} else if (paramNum == 2) { } else if (paramNum == 2) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0], para[1]);
} else if (paramNum == 3) { } else if (paramNum == 3) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2]);
} else if (paramNum == 4) { } else if (paramNum == 4) {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2], para[3]);
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2], para[3]);
} else { } else {
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
ZQUI::ins()->rawshow("[CMD ] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->index, mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, frame->datalen).c_str());
} }
} }
} }
} }
void MainWindow::parse_ptv2_ack(zcr_cmd_header_t *frame, int32_t packetlen) { void MainWindow::parse_ptv2_ack(zcr_cmd_header_t *frame, int32_t packetlen) {
int cmdId = frame->cmdMainId * 256 + frame->cmdSubId;
int32_t mid = frame->moduleid;
int cmdId = frame->cmdid;
int32_t mid = frame->moduleId;
int32_t *param = (int32_t *)frame->data; int32_t *param = (int32_t *)frame->data;
if (kptv2_error_ack == frame->packetType) { if (kptv2_error_ack == frame->packetType) {
ZQUI::ins()->rawshow("[E-RECEI] %s(%d)", err::error2str(param[0]), param[0]); ZQUI::ins()->rawshow("[E-RECEI] %s(%d)", err::error2str(param[0]), param[0]);
@ -224,29 +215,29 @@ void MainWindow::parse_ptv2_ack(zcr_cmd_header_t *frame, int32_t packetlen) {
cmdId == ka8000_idcard_reader_read_raw) { cmdId == ka8000_idcard_reader_read_raw) {
ZQUI::ins()->rawshow("[ RECEI] %s", zhex2str((uint8_t *)frame, packetlen).c_str()); ZQUI::ins()->rawshow("[ RECEI] %s", zhex2str((uint8_t *)frame, packetlen).c_str());
} else { } else {
int32_t paramNum = (packetlen - sizeof(zcr_cmd_header_t)) / 4;
int32_t paramNum = (frame->datalen) / 4;
int32_t *para = (int32_t *)frame->data; int32_t *para = (int32_t *)frame->data;
if (paramNum == 0) { if (paramNum == 0) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) ", frame->packetindex, mid, cmdid2str(cmdId), cmdId);
ZQUI::ins()->rawshow("[ RECEI] index:%d mid:%d cmdid:%s(0x%04x) ", frame->index, mid, cmdid2str(cmdId), cmdId);
} else if (paramNum == 1) { } else if (paramNum == 1) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0]);
ZQUI::ins()->rawshow("[ RECEI] index:%d mid:%d cmdid:%s(0x%04x) param:%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0]);
} else if (paramNum == 2) { } else if (paramNum == 2) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1]);
ZQUI::ins()->rawshow("[ RECEI] index:%d mid:%d cmdid:%s(0x%04x) param:%d,%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0], para[1]);
} else if (paramNum == 3) { } else if (paramNum == 3) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2]);
ZQUI::ins()->rawshow("[ RECEI] index:%d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2]);
} else if (paramNum == 4) { } else if (paramNum == 4) {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->packetindex, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2], para[3]);
ZQUI::ins()->rawshow("[ RECEI] index:%d mid:%d cmdid:%s(0x%04x) param:%d,%d,%d,%d", frame->index, mid, cmdid2str(cmdId), cmdId, para[0], para[1], para[2], para[3]);
} else { } else {
ZQUI::ins()->rawshow("[ RECEI] %d mid:%d cmdid:%s(0x%04x) param:%s", frame->packetindex, mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, packetlen - sizeof(zcr_cmd_header_t)).c_str());
ZQUI::ins()->rawshow("[ RECEI] index:%d mid:%d cmdid:%s(0x%04x) param:%s", frame->index, mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, frame->datalen).c_str());
} }
} }
} }
} }
void MainWindow::parse_ptv2_event(zcr_cmd_header_t *frame, int32_t packetlen) { void MainWindow::parse_ptv2_event(zcr_cmd_header_t *frame, int32_t packetlen) {
int cmdId = frame->cmdMainId * 256 + frame->cmdSubId;
int32_t mid = frame->moduleid;
int cmdId = frame->cmdid;
int32_t mid = frame->moduleId;
int32_t *param = (int32_t *)frame->data; int32_t *param = (int32_t *)frame->data;
int32_t paramLen = packetlen - sizeof(zcr_cmd_header_t);
int32_t paramLen = frame->datalen;
ZQUI::ins()->rawshow("[EVENT ] raw:%s[id:%d e:%s(0x%04x) p:%s(%d)]", zhex2str((uint8_t *)frame, packetlen).c_str(), // ZQUI::ins()->rawshow("[EVENT ] raw:%s[id:%d e:%s(0x%04x) p:%s(%d)]", zhex2str((uint8_t *)frame, packetlen).c_str(), //
mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, paramLen).c_str(), paramLen); mid, cmdid2str(cmdId), cmdId, zhex2str(frame->data, paramLen).c_str(), paramLen);
@ -302,7 +293,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
IflytopCanbusMaster::ins()->regOnRawData([this](raw_data_type_t type, uint8_t *hex, uint32_t hexlen) { IflytopCanbusMaster::ins()->regOnRawData([this](raw_data_type_t type, uint8_t *hex, uint32_t hexlen) {
zcr_cmd_header_t *frame = (zcr_cmd_header_t *)hex; zcr_cmd_header_t *frame = (zcr_cmd_header_t *)hex;
int cmdId = frame->cmdMainId * 256 + frame->cmdSubId;
int cmdId = frame->cmdid;
if (cmdId == kmodule_get_status) return; // 过滤掉kmodule_get_status指令 if (cmdId == kmodule_get_status) return; // 过滤掉kmodule_get_status指令

6
src/qt_serial_datachannel.cpp

@ -17,6 +17,8 @@ using namespace std;
#define TAG "QTDataChannel" #define TAG "QTDataChannel"
#define DEBUG 0
void QTDataChannel::init() { void QTDataChannel::init() {
m_thread.reset(new thread([this]() { m_thread.reset(new thread([this]() {
while (true) { while (true) {
@ -24,7 +26,7 @@ void QTDataChannel::init() {
uint8_t rx[1024] = {0}; uint8_t rx[1024] = {0};
int rx_cnt = com_receive(rx, 1024); int rx_cnt = com_receive(rx, 1024);
if (rx_cnt != 0) { if (rx_cnt != 0) {
ZLOGI(TAG, "rx %s ", zhex2str(rx, rx_cnt).c_str());
ZLOGD(TAG, "rx %s ", zhex2str(rx, rx_cnt).c_str());
// ZLOGI(TAG, "rx %s ", zhe x2str(rx, rx_cnt).c_str()); // ZLOGI(TAG, "rx %s ", zhe x2str(rx, rx_cnt).c_str());
if (m_rxcb) m_rxcb(rx, rx_cnt); if (m_rxcb) m_rxcb(rx, rx_cnt);
} }
@ -128,7 +130,7 @@ void QTDataChannel::close() {
bool QTDataChannel::isOpen() { return m_isOpen; } bool QTDataChannel::isOpen() { return m_isOpen; }
bool QTDataChannel::send(const uint8_t *data, size_t len) { bool QTDataChannel::send(const uint8_t *data, size_t len) {
ZLOGI(TAG, "send %s", zhex2str(data, len).c_str());
ZLOGD(TAG, "send %s", zhex2str(data, len).c_str());
DWORD dwBytesWrite = len; DWORD dwBytesWrite = len;
// BOOL bWriteStat = // BOOL bWriteStat =

4
src/tab/id_card_read_tab.cpp

@ -51,10 +51,6 @@ static inline const char *hex2binstr(int32_t hex) {
* 12 34 57 90 AA XX XX XX XX XX XX XX XX XX ...dsfa.. * 12 34 57 90 AA XX XX XX XX XX XX XX XX XX ...dsfa..
* *
*/ */
string format_memery(uint8_t *mem, int len) {
string result = "";
char buf[128];
}
static uint8_t eeprom_rd_buf[2048 + 100]; static uint8_t eeprom_rd_buf[2048 + 100];

26
src/tab/pipette_ctrl_tab.cpp

@ -73,21 +73,21 @@ void PipetteCtrlTab::construct(QTabWidget *fathertab) {
return true; return true;
}); });
tableBox->addReg("pipette_pos_ul", kreg_pipette_pos_ul, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_pos_ul", kreg_pipette_pos_ul, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_capactitance_val", kreg_pipette_capactitance_val, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("pipette_capactitance_val", kreg_pipette_capactitance_val, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_tip_state", kreg_pipette_tip_state, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("pipette_tip_state", kreg_pipette_tip_state, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_limit_ul", kreg_pipette_limit_ul, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_pump_acc", kreg_pipette_pump_acc, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_pump_dec", kreg_pipette_pump_dec, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_pump_vstart", kreg_pipette_pump_vstart, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_pump_vstop", kreg_pipette_pump_vstop, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_pump_vmax", kreg_pipette_pump_vmax, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_aspirate_pump_vel", kreg_pipette_aspirate_pump_vel, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_lld_pump_vel", kreg_pipette_lld_pump_vel, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_lld_motor_vel_rpm", kreg_pipette_lld_motor_vel_rpm, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_lld_detect_period_ms", kreg_pipette_lld_detect_period_ms, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_lld_prepare_pos", kreg_pipette_lld_prepare_pos, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_lld_prepare_pre_distribut_ul", kreg_pipette_lld_prepare_pre_distribut_ul, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_limit_ul", kreg_pipette_limit_ul, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_pump_acc", kreg_pipette_pump_acc, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_pump_dec", kreg_pipette_pump_dec, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_pump_vstart", kreg_pipette_pump_vstart, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_pump_vstop", kreg_pipette_pump_vstop, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_pump_vmax", kreg_pipette_pump_vmax, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_aspirate_pump_vel", kreg_pipette_aspirate_pump_vel, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_lld_pump_vel", kreg_pipette_lld_pump_vel, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_lld_motor_vel_rpm", kreg_pipette_lld_motor_vel_rpm, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_lld_detect_period_ms", kreg_pipette_lld_detect_period_ms, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_lld_prepare_pos", kreg_pipette_lld_prepare_pos, ZRegItem::krw | ZRegItem::kdec);
// tableBox->addReg("pipette_lld_prepare_pre_distribut_ul", kreg_pipette_lld_prepare_pre_distribut_ul, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_zm_pos", kreg_pipette_zm_pos, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("pipette_zm_pos", kreg_pipette_zm_pos, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_zm_is_enable", kreg_pipette_zm_is_enable, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("pipette_zm_is_enable", kreg_pipette_zm_is_enable, ZRegItem::krw | ZRegItem::kdec);
tableBox->addReg("pipette_zm_dpos", kreg_pipette_zm_dpos, ZRegItem::krw | ZRegItem::kdec); tableBox->addReg("pipette_zm_dpos", kreg_pipette_zm_dpos, ZRegItem::krw | ZRegItem::kdec);

11
tools/build.bat

@ -1,6 +1,11 @@
cd build cd build
make -j8 make -j8
if %errorlevel% neq 0 (
echo Build failed
pause
exit /b 1
)
cd .. cd ..
copy build\a8000_pc_upper.exe appenv\app.exe
@REM #打包指令
.\tools\makesfx.exe -ic -mf -ft -we -di -un -oo .\appenv\ .\dist\app.exe .\logo.ico .\appenv\app.exe
copy build\a8000_pc_upper.exe appenv\app.exe

2
tools/packet.bat

@ -0,0 +1,2 @@
@REM #打包指令
.\tools\makesfx.exe -ic -mf -ft -we -di -un -oo .\appenv\ .\dist\app.exe .\logo.ico .\appenv\app.exe
Loading…
Cancel
Save