• Как использовать одно состояние переменных заголовочного файла в нескольких исходных файлах программы?

    @Fatus
    Инженер-электроник
    Защита заголовков. Ваши определения функций и определений типов не должны объявляться дважды. Поэтому не забывайте про защиту включения: старый способ #ifndef #define #endif или прагмой #pragma once. Но думаю Вы итак это используете, а проблема именно в переменных.
    Если вы объявляете переменную в заголовочном файле (не надо так) т.е. вне функции - переменная является статической и область видимости такой переменной - файл, но вы хотите через .h файл сделать видимой статическую переменную с областью видимости файл в разных файлах. Переменные не объявляются в .h файлах.
    Решение: статические переменные объявляются в .с файле. Если вы хотите ограничить область видимости до файла, используете static. А вот если вы хотите расширить область видимости до проекта, то в файле, где вы хотите использовать объявленную в другом месте переменную, используйте ключевое слово extern. Иными словами - объявили в .с файле статическую переменную (int x;) создали .h файл и там указали extern int x; и теперь вы можете добавлять свой .h файл и переменная x будет обладать внешней компоновкой, и из всех .с файлах вы будете обращаться к одной статической переменной х (которая объявлена и инициализирована один раз в .с файле, но никак в .h)
    Ответ написан
    Комментировать
  • Какую STM32 выбрать для новичка?

    @Fatus
    Инженер-электроник
    Blue pill с STM32F103C8T6 на борту. Множество уроков для новичков описано на данной плате. + ST-Link.

    https://aliexpress.ru/item/32649400326.html?spm=a2...
    Ответ написан
    Комментировать
  • Как в QT сделать одновременный прием с двух ком портов?

    @Fatus
    Инженер-электроник
    Может, стоит объявить ещё экземпляр класса ConnectionCom() (не один sPort, а два sPort1 и sPort2). Для каждого COM-порта свой экземпляр. И в слоте делать проверку, если уже один COM-порт используется, создать второй экземпляр, и в нём открывать второй COM-порт.
    Или в ConnectionCom() иметь два экземпляра QSerialPort() (serialPort1 и serialPort2).
    Ответ написан