Перейти к содержанию
    

Поиск

Показаны результаты для тегов 'serialport'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Нейронные сети и машинное обучение (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Методы и средства верификации ПЛИС/ASIC
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Ремонт и отладка
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники


Звание

Найдено: 1 результат

  1. Привет. Не могу сам разобраться, в плюсах не силен. Как правильно (принято) реализовывать взаимодействие между объектами? Мой случай, условно (пишу на QT, ранее программа была написана на CBuilder6). Реализация на CBuilder 6. Программа на ПК обменивается через COM-PORT с МК и отображает его состояние. Протоколов обмена два (может быть больше). Реализованы протоколы через объекты protocol_1 и protocol_2, оба они имеют методы rcv(u8* byte, u16 sz) через которые принимают "сырые" данные. Этот метод реализует байт-стаффинг, подсчет crc и разбивает поток байт на сообщения вида typedef struct {u16 cmd; u8 data[];} msg_t, которые в свою очередь можно получить с помощью метода get_msg(msg_t * msg). Так же объекты имеют методы для передачи сообщений put_msg(msg_t * msg), которые их "готовят" (байт-стаффинг, crc) и передают. Далее, объект коммуникации comm, который содержит объекты comport, protocol_1 и protocol_2, реализует обмен с МК: 1. Прием реализован через call-back ф-ию: void com_rcv_cb(u8 * b, u16 sz) { if (protocol == 1) protocol_1.rcv(b, sz); if (protocol == 2) protocol_2.rcv(b, sz); } ф-ия передается объекту comport через его метод set_rcv_cb(com_rcv_cb). Выбор протокола: comm.select_protocol(int r){ protocol = r; } 2. Реализация передачи: void comm::send(msg_t * msg) { if (protocol == 1) protocol_1.put_msg(msg); if (protocol == 2) protocol_2.put_msg(msg); } Собственно передачу осуществляют объекты protocol_1 и protocol_2, для этого им передается указатель на ф-ию отправки данных в comport /* void comport::send(u8* byte, u16 sz) */: protocol_1.set_sender(comport.send), protocol_2.set_sender(comport.send). Все три объекта (comport, protocol_1 и protocol_2) объявляются в файле comm.cpp, но, как бы сказать, не в самом объекте comm. Все работает. Вопросов нет. Начал изучать QT с написания вышеописанной программы с несколько другим функционалом. Объекты protocol_1 и protocol_2 взял как есть. Для работы с COM-PORT взял объект QSerialPort. Но в этот раз все три объекта (serialport, protocol_1 и protocol_2) создаю в объекте comm. С приемом проблем нет, функцию приема прикрутил с помощью connect(serialport, &QSerialPort::readyRead, comm, comm::com_rcv_cb), упуская детали. Работает. А вот передать указатель на ф-ию отправки serialport::write в объекты protocol_1 и protocol_2 не получается. Видимо от того, что serialport создается в самом объекте comm. Думаю, если вынесу объявление объектов serialport, protocol_1 и protocol_2 в пространство файла comm.cpp (как было ранее) все получится. Но хотелось бы узнать какие еще варианты взаимодействия объектов имеются. Или в моем случае надо полностью менять подход в построении программы?
×
×
  • Создать...