![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Stoptyssin |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 20.1.2012 Пользователь №: 3145 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте! Заранее извиниясь за ламерство. Пишу диплом. Надо написать программу которая получает данные от нескольких ZigBee устройст и заносит их в базу данных (MySql). В принципе все устройства соеденены с ПК через ZigBee коллектор который работает как виртуальный COM-порт. Ни с мускулем ни QT особо дел не имел. Подскажите в каком направлении двигаться, если можно то с примерами (можно и на WiFi и на Bluetouth там я сам разберусь). И последний вопрос (самый ламерский), как лучше - принимать данные : буфер -> файл ->бд, или же буфер ->бд (временная таблица)-> файл. Заранее спасибо за ответы.
|
|
|
![]() |
zloiia |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Участник Сообщений: 25 Регистрация: 5.5.2011 Пользователь №: 2655 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Stoptyssin, а примеры... Может поможет. Кусок из моего давнего проекта. У нас было самопальное устройство, у которого сообщения с устройства были просты как валенки
Цитата <CommandValue> Где Command и Value были целыми числами. Данные капали где-то 5 раз в секунду и лень было заморачиваться с оптимизацией, поэтому сделал так. (писал с использованием QextSerialPort но разницы никакой). Унаследовался от QextSerialPort , завел слот, который связал с сигналом readyRead() (то есть в этом слоте читал данные, которые пришли с порта). В нем все что приходило забивал в свойство этого класса типа QByteArray (то есть создавал буфер на случай если у меня не вся команда придет сразу) и затем в этом буфере искал целую команду. Когда находил команду, высылал сигнал, который сообщал что за команда пришла и ее параметр
Затем создал обычный класс, унаследованный от QObject, к котором принимал этот сигнал и просто забивал очередь QQueue. В этом-же классе переопределил свойство void timerEvent(QTimerEvent *); и в нем смотрел, если очередь не пустая, то писал в базу одно первое сообщение очереди и успокаивался. Пришлось извратиться с таймером так, потому что в качестве базы выступала xml таблица на удаленной машине, подключенная через ODBC ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.5.2025, 20:20 |