update
This commit is contained in:
parent
cfd6706fa5
commit
2d0724098b
@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
project(com)
|
||||
set(CMAKE_PREFIX_PATH "C:\\Programs\\Qt\\6.2.4\\msvc2019_64")
|
||||
#set(CMAKE_PREFIX_PATH "C:\\Programs\\Qt\\6.2.4\\msvc2019_64")
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
119
main_window.cpp
119
main_window.cpp
@ -157,75 +157,84 @@ static int cnt = 0;
|
||||
QByteArray first_frame;
|
||||
bool first = true;
|
||||
|
||||
|
||||
#define MAX_BUF_LENGTH 1e4
|
||||
void main_window::read_data() {
|
||||
static int receive_num_cnt = -2;
|
||||
static int receive_byte_cnt = 0;
|
||||
static int val = 0;
|
||||
auto data = port.readAll();
|
||||
if (first) {
|
||||
if (data.length() < 10) {
|
||||
first_frame += data;
|
||||
return;
|
||||
}
|
||||
while (first_frame[0] != 0) {
|
||||
first_frame.remove(0, 1);
|
||||
}
|
||||
int zero_cnt = 0;
|
||||
do {
|
||||
zero_cnt = 0;
|
||||
while (first_frame[0] != 0) {
|
||||
first_frame.remove(0, 1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
zero_cnt += first_frame[i] == 0 ? 1 : 0;
|
||||
}
|
||||
first_frame.remove(0, 1);
|
||||
} while (zero_cnt != 0);
|
||||
data = first_frame;
|
||||
first = false;
|
||||
}
|
||||
// TODO: BUG int data overflow
|
||||
rawDataFile.write(data);
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
if (receive_byte_cnt % 4 == 0) {
|
||||
if (data[i] != 0) {
|
||||
msgBox.setText("Error occurred, please restart transmission.");
|
||||
msgBox.exec();
|
||||
return;
|
||||
}
|
||||
receive_num_cnt++;
|
||||
if (receive_num_cnt == -1)
|
||||
continue;
|
||||
int real_number = val;
|
||||
if (real_number & 0x800000) {
|
||||
// negative number
|
||||
real_number = -(~real_number & 0x7fffff + 1);
|
||||
}
|
||||
receivefileStream << real_number << " ";
|
||||
double scaled = (double) real_number / (double) (0x7fffff) * 2.5;
|
||||
plotChartView->append ((double) receive_num_cnt / 1000.0, scaled);
|
||||
val = 0;
|
||||
continue;
|
||||
}
|
||||
val <<= 8;
|
||||
val |= data[i];
|
||||
}
|
||||
auto pre_cursor =hexTextEdit->textCursor();
|
||||
QString new_text = QString(data.toHex(' ').toUpper()) + " ";
|
||||
hexTextEdit->moveCursor(QTextCursor::End);
|
||||
bool move_to_end = pre_cursor == hexTextEdit->textCursor();
|
||||
hexTextEdit->insertPlainText(new_text);
|
||||
auto tmp = hexTextEdit->toPlainText();
|
||||
if (!move_to_end) hexTextEdit->setTextCursor(pre_cursor);
|
||||
pre_cursor = asciiTextEdit->textCursor();
|
||||
asciiTextEdit->moveCursor(QTextCursor::End);
|
||||
asciiTextEdit->insertPlainText(QString(data));
|
||||
if (tmp.length() > 1e3) {
|
||||
hexTextEdit->setPlainText(tmp.last((int) 1e3));
|
||||
if (!move_to_end) asciiTextEdit->setTextCursor(pre_cursor);
|
||||
|
||||
auto tmp = hexTextEdit->toPlainText();
|
||||
if (tmp.length() > MAX_BUF_LENGTH) {
|
||||
hexTextEdit->setPlainText(tmp.last((int) MAX_BUF_LENGTH));
|
||||
hexTextEdit->moveCursor(QTextCursor::End);
|
||||
}
|
||||
tmp = asciiTextEdit->toPlainText();
|
||||
if (tmp.length() > 1e3) {
|
||||
asciiTextEdit->setPlainText(tmp.last(int(1e3)));
|
||||
if (tmp.length() > MAX_BUF_LENGTH) {
|
||||
asciiTextEdit->setPlainText(tmp.last(int(MAX_BUF_LENGTH)));
|
||||
asciiTextEdit->moveCursor(QTextCursor::End);
|
||||
}
|
||||
// data processing
|
||||
// if (first) {
|
||||
// if (data.length() < 10) {
|
||||
// first_frame += data;
|
||||
// return;
|
||||
// }
|
||||
// while (first_frame.size() > 0 && first_frame[0] != 0) {
|
||||
// first_frame.remove(0, 1);
|
||||
// }
|
||||
// int zero_cnt = 0;
|
||||
// do {
|
||||
// zero_cnt = 0;
|
||||
// while (first_frame.size() > 0 && first_frame[0] != 0) {
|
||||
// first_frame.remove(0, 1);
|
||||
// }
|
||||
//
|
||||
// for (int i = 0; i < 4 && i < first_frame.size(); i++) {
|
||||
// zero_cnt += first_frame[i] == 0 ? 1 : 0;
|
||||
// }
|
||||
// first_frame.remove(0, 1);
|
||||
// } while (zero_cnt != 0);
|
||||
// data = first_frame;
|
||||
// first = false;
|
||||
// }
|
||||
//
|
||||
// // TODO: BUG int data overflow
|
||||
// rawDataFile.write(data);
|
||||
// for (int i = 0; i < data.size(); i++) {
|
||||
// if (receive_byte_cnt % 4 == 0) {
|
||||
// if (data[i] != 0) {
|
||||
// msgBox.setText("Error occurred, please restart transmission.");
|
||||
// msgBox.exec();
|
||||
// this->open_port();
|
||||
// return;
|
||||
// }
|
||||
// receive_num_cnt++;
|
||||
// if (receive_num_cnt == -1)
|
||||
// continue;
|
||||
// int real_number = val;
|
||||
// if (real_number & 0x800000) {
|
||||
// // negative number
|
||||
// real_number = -(~real_number & 0x7fffff + 1);
|
||||
// }
|
||||
// receivefileStream << real_number << " ";
|
||||
// double scaled = (double) real_number / (double) (0x7fffff) * 2.5;
|
||||
// plotChartView->append ((double) receive_num_cnt / 1000.0, scaled);
|
||||
// val = 0;
|
||||
// continue;
|
||||
// }
|
||||
// val <<= 8;
|
||||
// val |= data[i];
|
||||
// }
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user