Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop to Master #2

Merged
merged 18 commits into from
Aug 18, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
e819403
Небольшие изменения
Jun 24, 2022
b689b98
Добавил базовую поддержку приёма данных через UDP
Jun 24, 2022
5ec6e1b
Приём данных через UDP полностью работает
Jun 24, 2022
82ba1ac
Переделаны очереди приёма и обработки данных из последовательного порта
Jun 26, 2022
dd4ed03
Исправил кодировку
Jun 26, 2022
ccfb808
Отказался от очередей, переписал парсе CAN-пакетов
Jun 27, 2022
adf1a12
Закончил с парсером
Jun 28, 2022
912cacd
Переделал кадр отрисовки графика
Jun 29, 2022
c55429c
Данные UDP обрабатываются пакетно
Jun 29, 2022
4c0929f
Реализованы приём и отправка пакетов через Wi-Fi
Jun 30, 2022
a1a431c
Переделал фоновый поток на события
Jul 3, 2022
2b2c0ce
Переделал фоновый поток на события
Jul 3, 2022
5dfd461
Исправил очистку буфера приёма данных при "аварийном" отключении COM-…
KruFFT Jul 9, 2022
fdcd48c
Полностью переделан процесс отображения данных в таблицу
KruFFT Jul 17, 2022
b6ed1c3
Исправил кодировку символов файла
KruFFT Jul 17, 2022
a453d2d
Исправлено вычисление размера отправляемого CAN-пакета
KruFFT Jul 17, 2022
ded972d
Переход на wxWidgets 3.2.0
KruFFT Aug 18, 2022
98a372e
Update README.md
KruFFT Aug 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Данные UDP обрабатываются пакетно
  • Loading branch information
KruFFT authored and KruFFT committed Jun 29, 2022
commit c55429cb15e381c8ba3b1f26a2f96f429c81f227
7 changes: 3 additions & 4 deletions wxCAN Sniffer/CircularFrameBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CircularFrameBuffer::CircularFrameBuffer(size_t windowSize)
frameSize = windowSize;
frameBegin = 0;
frameEnd = frameSize;
frameSizeBytesCount = bufferSize * sizeof(uint32_t);
}

// Деструктор
Expand All @@ -24,8 +25,7 @@ CircularFrameBuffer::~CircularFrameBuffer()
// Очистить буфер
void CircularFrameBuffer::Clear()
{
size_t count = bufferSize * sizeof(uint32_t);
memset(buffer, 0, count);
memset(buffer, 0, frameSizeBytesCount);
frameBegin = 0;
frameEnd = frameSize;
}
Expand All @@ -36,8 +36,7 @@ void CircularFrameBuffer::Add(uint32_t value)
// если достигнут предел массива - надо сдвинуть данные
if (frameEnd >= bufferSize)
{
size_t count = frameSize * sizeof(uint32_t);
memcpy_s(buffer, count, &buffer[frameBegin], count);
memcpy_s(buffer, frameSizeBytesCount, &buffer[frameBegin], frameSizeBytesCount);
frameBegin = 0;
frameEnd = frameSize;
}
Expand Down
1 change: 1 addition & 0 deletions wxCAN Sniffer/CircularFrameBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ class CircularFrameBuffer
size_t frameSize; // размер окна данных
size_t frameBegin; // начало окна данных
size_t frameEnd; // конец окна данных
size_t frameSizeBytesCount; // количество байтов в кадре
};
28 changes: 17 additions & 11 deletions wxCAN Sniffer/FormMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,10 @@ void FormMain::OnClose(wxCloseEvent& event)
// Обработчик кнопки Подключить/отключить
void FormMain::ButtonConDiscon_OnClick(wxCommandEvent& event)
{
rowToView = -1;
colToView = -1;
drawData->Clear();

try
{
// если порт не открыт - открыть, иначе - закрыть
Expand All @@ -468,7 +472,6 @@ void FormMain::ButtonConDiscon_OnClick(wxCommandEvent& event)
{
frames.reserve(FRAMES_DATA_RESERV);
frames.clear();
drawData->Clear();

// удалить все строки таблицы
if (gridCANView->GetNumberRows() > 0)
Expand All @@ -478,8 +481,6 @@ void FormMain::ButtonConDiscon_OnClick(wxCommandEvent& event)

COM = new ThreadedSerialPort(textCOM->GetValue(), comSpeed, (wxFrame*)this);
buttonConnectDisconnect->SetLabelText(wxT("Отключить"));
rowToView = -1;
colToView = -1;
}
}
else
Expand All @@ -490,7 +491,6 @@ void FormMain::ButtonConDiscon_OnClick(wxCommandEvent& event)
}
delete COM;
COM = nullptr;
drawData->Clear();

buttonConnectDisconnect->SetLabelText(wxT("Подключить"));

Expand Down Expand Up @@ -1177,19 +1177,25 @@ void FormMain::TextCANAnswerID_OnEnter(wxCommandEvent& event)
// событие UDP-сокета
void FormMain::UDPSocket_OnEvent(wxSocketEvent& event)
{
uint8_t receivedData[100];
uint8_t receivedData[UDP_BUFFER_SIZE];
uint8_t* receivedDataPointer = receivedData;

if (event.GetSocketEvent() == wxSOCKET_INPUT)
{
size_t receivedDataLen = udpSocket->RecvFrom(espIpAddress, receivedData, sizeof(receivedData)).LastCount();
size_t receivedDataLen = udpSocket->RecvFrom(espIpAddress, receivedData, UDP_BUFFER_SIZE).LastCount();
if (receivedDataLen)
{
// проверка на префикс
uint32_t prefix = *(uint32_t*)receivedData;
if (prefix == 0x55AA55AA)
uint8_t* receivedDataTail = receivedDataPointer + receivedDataLen;
// поиск CAN-пакета и формирование данных
while (receivedDataPointer < receivedDataTail)
{
// обработать полученный пакет пропустив префикс
ProcessCANFrame((CANFrame&)receivedData[4]);
CANFrame frame;

// пакет собран - обработать пакет
if (CANParser::Parse(&receivedDataPointer, frame))
{
ProcessCANFrame(frame);
}
}
}
}
Expand Down
7 changes: 4 additions & 3 deletions wxCAN Sniffer/FormMain.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
#include "ThreadedSerialPort.h"
#include "CircularFrameBuffer.h"

#define FRAMES_DATA_RESERV 100 // колчиество элементов для резерв в векторах
#define FRAMES_DATA_RESERV 100 // количество элементов для резерва в векторе

#define NEW_COLOR 0x00FF00 // green (BGR)
#define MARKED_COLOR 0x0000FF // red (BGR)
#define DEFAULT_COLOR 0xFFFFFF // white (BGR)
#define DRAW_COLOR 0x0000FF // red (BGR)

#define TIMER_INTERVAL 10 // интервал срабатывания таймера (около 50 кадров/с)
#define TIMER_INTERVAL 20 // интервал срабатывания таймера (около 50 кадров/с)

#define COM_NAME wxT("COM3") // последовательный порт по умолчанию
#define UDP_PORT 0xAA55 // UDP порт
#define UDP_BUFFER_SIZE 1000 // размер буфера приёма пакетов

// Идентификаторы необходимых объектов
enum IDs
Expand Down Expand Up @@ -116,7 +117,7 @@ class FormMain : public wxFrame
vector<CANFrame> frames; // список отображаемых на экране пакетов

vector<int32_t> logFilterIDs; // список ID для записи в log-файл
size_t rowToLog = -1; // выбранная в таблице строка для добавления в фильтр log-файла
int32_t rowToLog = -1; // выбранная в таблице строка для добавления в фильтр log-файла
wxString logExt; // расширение log-файла
wxString logSeparator; // разделитель значений в log-файле
bool logDecimal = false; // переключатель режима записи чисел в log-файле: десятичный или шестнадцатиричный
Expand Down