protobuf server
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
#include "../include/ConnectionWindow.h"
|
||||
#include "imgui.h"
|
||||
#include <cstdio>
|
||||
|
||||
ConnectionWindow::ConnectionWindow()
|
||||
: selectedPortIdx(0), connected(false), activePort(nullptr) {
|
||||
@@ -27,10 +26,10 @@ void ConnectionWindow::refreshPorts() {
|
||||
ports.clear();
|
||||
selectedPortIdx = 0;
|
||||
|
||||
struct sp_port** port_list;
|
||||
if (sp_list_ports(&port_list) == SP_OK) {
|
||||
for (int i = 0; port_list[i] != nullptr; i++) {
|
||||
struct sp_port* port = port_list[i];
|
||||
sp_port** portList;
|
||||
if (sp_list_ports(&portList) == SP_OK) {
|
||||
for (int i = 0; portList[i] != nullptr; i++) {
|
||||
const sp_port* port = portList[i];
|
||||
SerialPortInfo info;
|
||||
const char* name = sp_get_port_name(port);
|
||||
info.portName = name ? name : "Unknown";
|
||||
@@ -38,7 +37,7 @@ void ConnectionWindow::refreshPorts() {
|
||||
info.description = desc ? desc : "No Description";
|
||||
ports.push_back(info);
|
||||
}
|
||||
sp_free_port_list(port_list);
|
||||
sp_free_port_list(portList);
|
||||
}
|
||||
|
||||
if (ports.empty()) {
|
||||
@@ -50,8 +49,8 @@ void ConnectionWindow::forceLogMessage(const std::string& msg) {
|
||||
txLog += msg + "\n";
|
||||
}
|
||||
|
||||
void ConnectionWindow::render(bool* p_open) {
|
||||
if (!ImGui::Begin("Connection Settings", p_open)) {
|
||||
void ConnectionWindow::render(bool* paramOpen) {
|
||||
if (!ImGui::Begin("Connection Settings", paramOpen)) {
|
||||
ImGui::End();
|
||||
return;
|
||||
}
|
||||
@@ -62,17 +61,17 @@ void ConnectionWindow::render(bool* p_open) {
|
||||
ImGui::SameLine();
|
||||
|
||||
// 1. Выбор COM-порта
|
||||
std::string combo_preview = ports[selectedPortIdx].portName;
|
||||
std::string preview = ports[selectedPortIdx].portName;
|
||||
if (ports[selectedPortIdx].portName != "None") {
|
||||
combo_preview += " (" + ports[selectedPortIdx].description + ")";
|
||||
preview += " (" + ports[selectedPortIdx].description + ")";
|
||||
}
|
||||
|
||||
ImGui::BeginDisabled(connected);
|
||||
if (ImGui::BeginCombo("Serial Port", combo_preview.c_str())) {
|
||||
if (ImGui::BeginCombo("Serial Port", preview.c_str())) {
|
||||
for (int n = 0; n < ports.size(); n++) {
|
||||
const bool is_selected = (selectedPortIdx == n);
|
||||
const bool isSelected = (selectedPortIdx == n);
|
||||
std::string item_text = ports[n].portName + " - " + ports[n].description;
|
||||
if (ImGui::Selectable(item_text.c_str(), is_selected)) {
|
||||
if (ImGui::Selectable(item_text.c_str(), isSelected)) {
|
||||
selectedPortIdx = n;
|
||||
}
|
||||
}
|
||||
@@ -80,13 +79,13 @@ void ConnectionWindow::render(bool* p_open) {
|
||||
}
|
||||
|
||||
// 2. Выбор Baud Rate через выпадающий список
|
||||
std::string baud_preview = std::to_string(baudRates[selectedBaudIdx]);
|
||||
if (ImGui::BeginCombo("Baud Rate", baud_preview.c_str())) {
|
||||
const std::string baudPreview = std::to_string(baudRates[selectedBaudIdx]);
|
||||
if (ImGui::BeginCombo("Baud Rate", baudPreview.c_str())) {
|
||||
for (int b = 0; b < baudRates.size(); b++) {
|
||||
const bool is_selected = (selectedBaudIdx == b);
|
||||
const bool isSelected = (selectedBaudIdx == b);
|
||||
std::string baud_item_text = std::to_string(baudRates[b]);
|
||||
|
||||
if (ImGui::Selectable(baud_item_text.c_str(), is_selected)) {
|
||||
if (ImGui::Selectable(baud_item_text.c_str(), isSelected)) {
|
||||
selectedBaudIdx = b;
|
||||
}
|
||||
}
|
||||
@@ -102,15 +101,15 @@ void ConnectionWindow::render(bool* p_open) {
|
||||
if (sp_open(activePort, SP_MODE_READ_WRITE) == SP_OK) {
|
||||
|
||||
// Передаем реальное значение скорости из выбранного индекса массива
|
||||
int real_baud = baudRates[selectedBaudIdx];
|
||||
sp_set_baudrate(activePort, real_baud);
|
||||
const int selectedBaud = baudRates[selectedBaudIdx];
|
||||
sp_set_baudrate(activePort, selectedBaud);
|
||||
|
||||
sp_set_bits(activePort, 8);
|
||||
sp_set_parity(activePort, SP_PARITY_NONE);
|
||||
sp_set_stopbits(activePort, 1);
|
||||
|
||||
connected = true;
|
||||
forceLogMessage("[SYSTEM] Connected to " + ports[selectedPortIdx].portName + " at " + std::to_string(real_baud) + " baud.");
|
||||
forceLogMessage("[SYSTEM] Connected to " + ports[selectedPortIdx].portName + " at " + std::to_string(selectedBaud) + " baud.");
|
||||
} else {
|
||||
forceLogMessage("[SYSTEM ERROR] Could not open port " + ports[selectedPortIdx].portName);
|
||||
sp_free_port(activePort);
|
||||
|
||||
Reference in New Issue
Block a user