Сервер для удаленного доступа к осциллографу, возможно подключать различные осциллографы, которые
соответветствуют родительскому классу Oscilloscope из oscilloscopes.h. Необходимо задать свои IP
адрес в сети и PORT, а так же указать префикс:
#include "../Ваш_осциллограф.h"
#include "Server.h"
#include "utils.h"
int main( int argc, char* argv[] )
{
oscilloscopes::Ваш_осциллограф oscilloscope;
auto arg = readArg( argc, argv );
server::CommandDecoder cmdec( std::get<0>(arg), &oscilloscope );
server::Server server( std::get<1>(arg), std::get<2>(arg), &cmdec );
return server.run();
}В качестве примера в проекте подключается осциллограф Hantek 6022BE eму посвещен отдельный репозиторий.
В распакованном виде
Написанием тестов к каждому методу/функции в проекте я не занимался. Проводил испытания вызова методов и проверки на отказо устойчивость.
-
Протестировано с Hantek 6022BE на 10.000 итерациях, на Mac OS и Raspberry Pi проблем обнаружено не было.
-
Что касается кода, после запуска в нем максимальная защита через блок
try {} catch( ... ) {};такие ошибки отлавливаются.
| Код ошибки | Название макроса ошибки | Расшифровка |
|---|---|---|
| 1 | OSCILLOSCOPE_ERROR_INVALID_PARAM | Некорректный параметр на входе метода осциллографа |
| 0 | OSCILLOSCOPE_SUCCESS | Все отработало штатно |
| -3 | OSCILLOSCOPE_ERROR_ACCESS | Ошибка доступа, может быть вызвана из за того, что вызов не из подsudo |
| -4 | OSCILLOSCOPE_ERROR_NO_DEVICE | Нет подключенного устройства |
| -7 | OSCILLOSCOPE_ERROR_TIMEOUT | Ошибка времени ожидания |
| -11 | OSCILLOSCOPE_ERROR_NO_MEM | Не выделена память |
| -21 | ERROR_INFO_EXTRA | При запросе информации произошло что-то экстро ординарное |
| -22 | ERROR_PULSE_EXTRA | |
| -23 | ERROR_SAMPLE_EXTRA | |
| -24 | ERROR_VX_EXTRA | |
| -25 | ERROR_TRIG_EXTRA | |
| -31 | ERROR_RANGE_UNKHOWN_PARAMETR | |
| -32 | ERROR_CURRENT_UNKNOWN_PARAMETR | |
| -33 | ERROR_SET_UNKNOWN_NEW_LEVEL | |
| -34 | ERROR_SET_UNKNOWN_PARAMETR | |
| -35 | ERROR_GET_DELAY_UNKNOWN | |
| -41 | ERROR_RANGE_PROBLEM_GET | |
| -42 | ERROR_CURRENT_PROBLEM_GET | |
| -43 | ERROR_SET_PROBLEM_SET | |
| -44 | ERROR_GET_PROBLEM_GET | |
| -51 | ERROR_CURRENT_CHANNEL_NUMBER_UNKNOWN | |
| -52 | ERROR_SET_CHANNEL_NUMBER_UNKNOWN | |
| -53 | ERROR_GET_CHANNEL_NUMBER_UNKNOWN | |
| -61 | ERROR_RANGE_EMPTY | |
| -62 | ERROR_GET_MESSAGE_THROW | |
| -94 | ERROR_NO_PREFIX | Выставлен не тот префикс, условно был osc, а надо hant |
| -95 | ERROR_NO_OSC | Не подключен осциллограф |
| -96 | ERROR_NO_METHOD | Некорректный метод осциллографа |
| -97 | ERROR_UNKNOWN_MESSAGE | Неизвестное сообщение, ошибка ввода команды |
| -98 | ERROR_UNKNOWN_COMMAND | Некорретная команда была введена |
| -99 | OSCILLOSCOPE_ERROR_OTHER | Внутрення ошибка осциллографа, что могло быть неизвестно |
- Скопировать репозиторий сразу с подкачкой
submoduls
git clone --recurse-submodules git@github.com:khosta77/ServerForOscilloscope.gitили, если не планируется пушить код:
git clone --recurse-submodules https://github.com/khosta77/ServerForOscilloscope.git- Переходим в директорию
cd ServerForOscilloscope- На всякий случай убеждаемся, что все модули в ветке
main.
git submodule foreach git pull origin main- Собираем и компилируем проект.
cmake .make- Запуск. Для примера
./main

