На каком языке проще всего это реализовать?
Модератор: Модераторы разделов
-
Mull
- Сообщения: 35
- ОС: Ubuntu
На каком языке проще всего это реализовать?
Есть задача - нужно связать два GSM модема, и пока что не знаю каким макаром, но выкачать данные из прибора, подключенного к этому модему, после этого обработать и поместить эти данные в СУБД. Какие средства, языки, СУБД лучше всего для этого использовать? Предпочтений нет, знаю лишь Паскаль и Бейсик с первых курсов университета, Буду благодарен за любую информацию.
-
Kopilov
- Сообщения: 958
- ОС: [K]Ubuntu, Debian
Re: На каком языке проще всего это реализовать?
Ой, не знаю, справишься ли...
Расскажи хоть, что за прибор, как взаимодействовать с ним будешь. Если придётся драйверы к нему писать -- наверно, на C.
В приборах и модемах я не силён. Про передачу данных по сети могу сказать, что пишу SOAP-сервис на Java, товарищи -- клиентов к нему на Delphi и PHP.
А СУБД разные бывают, но если знать азы -- переключаться между ними не так уж трудно (если не задействованы специфические особенности), выбирают их обычно по быстродействию, функциональности и стоимости.
Расскажи хоть, что за прибор, как взаимодействовать с ним будешь. Если придётся драйверы к нему писать -- наверно, на C.
В приборах и модемах я не силён. Про передачу данных по сети могу сказать, что пишу SOAP-сервис на Java, товарищи -- клиентов к нему на Delphi и PHP.
А СУБД разные бывают, но если знать азы -- переключаться между ними не так уж трудно (если не задействованы специфические особенности), выбирают их обычно по быстродействию, функциональности и стоимости.
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
Kopilov писал(а): ↑20.02.2013 15:02Ой, не знаю, справишься ли...
Расскажи хоть, что за прибор, как взаимодействовать с ним будешь. Если придётся драйверы к нему писать -- наверно, на C.
В приборах и модемах я не силён. Про передачу данных по сети могу сказать, что пишу SOAP-сервис на Java, товарищи -- клиентов к нему на Delphi и PHP.
А СУБД разные бывают, но если знать азы -- переключаться между ними не так уж трудно (если не задействованы специфические особенности), выбирают их обычно по быстродействию, функциональности и стоимости.
Драйверы писать вроде не надо, хотя не уверен. СУБД нужна бесплатная, а по поводу функционала - операция с датами, сложение умножение вычитание деление дробных чисел. да и все =)
-
Gloomy
- Сообщения: 340
- Статус: сочувствующий
-
FlySnake
- Сообщения: 992
- ОС: openSUSE
Re: На каком языке проще всего это реализовать?
GSM-модемы управляются AT-командами по UART, следовательно нужен лишь последовательный порт и преобразователь уровней. Если только это не какой-то специальный прибор со своим фирменным интерфейсом поверх AT-команд.
Какой модем вообще?
Какой модем вообще?
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
Не хочу выносить на аутсорс, хочу сам во всем разобраться.
Модема еще нет, прибор соединяется с модемом по RS-232. Больше пока ничего сказать не могу, жду поставки конкретного оборудования для экспериментов
-
FlySnake
- Сообщения: 992
- ОС: openSUSE
Re: На каком языке проще всего это реализовать?
Значит подойдёт любой язык на котором можно работать с последовательным портом, БД и парсить строки (AT-команды)
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
А вас не затруднит, как более опытного товарища подсказать какой язык это умеет? кросс-платформенность в рамках винда/юникс приветствуется =) Ну и чтобы можно было GUI прикрутить
-
Bizdelnick
- Модератор
- Сообщения: 21513
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: На каком языке проще всего это реализовать?
Да любой из распространённых. Новичкам обычно рекомендуют Python. Что до кроссплатформенности - работа с портами в винде и *NIX сильно отличается, хотя наверняка для любого языка можно найти библиотеку, позволяющую от этого абстрагироваться.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
FlySnake
- Сообщения: 992
- ОС: openSUSE
Re: На каком языке проще всего это реализовать?
Mull писал(а): ↑20.02.2013 22:19
А вас не затруднит, как более опытного товарища подсказать какой язык это умеет? кросс-платформенность в рамках винда/юникс приветствуется =) Ну и чтобы можно было GUI прикрутить
Я делал на С++. Для кроссплатформенности - boost, для кросспллатформенности и гуя - Qt с qextserailport для последовательного порта. Но это не совет т.к. наверняка есть более подходящие инструменты под ваши задачи, с которыми моего опыта недостаточно.
Если верить гуглу для вышеупомянутого питона есть примочки для работы с последовательным портом http://pyserial.sourceforge.net/ , гуй Qt к питону есть. На руби тоже есть http://ruby-serialport.rubyforge.org/ Да наверное сложнее найти язык на котором нельзя этого сделать
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
Нашел документацию, не пойму в каком виде он хочет получать запросы и как оно кодирует информацию. Помогите пожалуйста.
З.Ы. В этом мануале есть примеры кода, они на C может лучше это реализовать на С а не на питоне?
З.Ы. В этом мануале есть примеры кода, они на C может лучше это реализовать на С а не на питоне?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
FlySnake
- Сообщения: 992
- ОС: openSUSE
Re: На каком языке проще всего это реализовать?
Дык это Modbus и железки - не простые модемы оказывается. Modbus реализует свой транспортный протокол с одним мастером и несколькими слейвами. Поверх него уже свой протокол накладывается. В питоне и для этого мазь найдётся http://code.google.com/p/pymodbus/ но насколько это хорошо - не уверен.
Для C++ есть libmodbus - она проверенно работает, у нас есть как раз проект сейчас на Qt с libmodbus в работе. Есть QModBus - отличная софтина для ручного формирования и приёма команд по модбасу. Если собираетесь иметь дело с модбасом - погуглите в сторону его принципа работы сначала. Потом зная это несложно прикрутить библиотеку и реализовать прикладной протокол на любом языке.
Кстати pyserial недавно довелось попробовать на ARM и то ли руки кривые то ли что-то ещё. Очень нестабильно работал приём. Так и не разобрались и сделали на Си
Для C++ есть libmodbus - она проверенно работает, у нас есть как раз проект сейчас на Qt с libmodbus в работе. Есть QModBus - отличная софтина для ручного формирования и приёма команд по модбасу. Если собираетесь иметь дело с модбасом - погуглите в сторону его принципа работы сначала. Потом зная это несложно прикрутить библиотеку и реализовать прикладной протокол на любом языке.
Кстати pyserial недавно довелось попробовать на ARM и то ли руки кривые то ли что-то ещё. Очень нестабильно работал приём. Так и не разобрались и сделали на Си
Спасибо сказали:
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
FlySnake писал(а): ↑11.04.2013 23:23Дык это Modbus и железки - не простые модемы оказывается. Modbus реализует свой транспортный протокол с одним мастером и несколькими слейвами. Поверх него уже свой протокол накладывается. В питоне и для этого мазь найдётся http://code.google.com/p/pymodbus/ но насколько это хорошо - не уверен.
Для C++ есть libmodbus - она проверенно работает, у нас есть как раз проект сейчас на Qt с libmodbus в работе. Есть QModBus - отличная софтина для ручного формирования и приёма команд по модбасу. Если собираетесь иметь дело с модбасом - погуглите в сторону его принципа работы сначала. Потом зная это несложно прикрутить библиотеку и реализовать прикладной протокол на любом языке.
Кстати pyserial недавно довелось попробовать на ARM и то ли руки кривые то ли что-то ещё. Очень нестабильно работал приём. Так и не разобрались и сделали на Си
Просто не до конца понимаю какой это вид данных 0х000 и так много раз 0_о и как это разгребать. К тому же щас будем реализовывать сеть таких приборов по rs-485 и одним модемом. Не могу догнать как мне с этим работать. До этого писал bash скрипты и поэтому плохо себе представляю как обращатся к модему, и т.д. если в скриптах стандартными средставми обращаещься к файлам - то как это реализуется в данном случае на С или на питоне? С чего проще начать? Задача довольно объемная, не знаю с какого конца хвататься.
-
FlySnake
- Сообщения: 992
- ОС: openSUSE
Re: На каком языке проще всего это реализовать?
0x000 - это шестнадцатеричная запись чисел в Си ставшая стандартом для таких чисел.
Вам нужен любой modbus tutorial и общее представление о сетях и протоколах. И ещё спаять какой-нибудь девайс, подключить к последовательному порту и попробовать гонять данные между ним и ПК без всяких модбасов чтобы увидеть как это работает. Проще не бывает. Потом уже с модбасом разобраться легко.
К модему обращаться через последовательный порт (может быть на USB устройтве создан, а может RS-232 в компе - без разницы) который представляет из себя символьное устройство /dev/ttySx, /dev/ttyUSBx, /dev/ttyACMx или ещё как - вот в него и пишутся/читаются данные. На физическом уровне RS-485, поверх modbus - это транспортный уровень. А на командах modbus реализуется прикладной. Вот посредством этих команд и общаетесь с девайсом.
Вам нужен любой modbus tutorial и общее представление о сетях и протоколах. И ещё спаять какой-нибудь девайс, подключить к последовательному порту и попробовать гонять данные между ним и ПК без всяких модбасов чтобы увидеть как это работает. Проще не бывает. Потом уже с модбасом разобраться легко.
К модему обращаться через последовательный порт (может быть на USB устройтве создан, а может RS-232 в компе - без разницы) который представляет из себя символьное устройство /dev/ttySx, /dev/ttyUSBx, /dev/ttyACMx или ещё как - вот в него и пишутся/читаются данные. На физическом уровне RS-485, поверх modbus - это транспортный уровень. А на командах modbus реализуется прикладной. Вот посредством этих команд и общаетесь с девайсом.
Спасибо сказали:
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: На каком языке проще всего это реализовать?
насколько я знаю, он работает как эмуляция COM порта. Примеров на C в сети должно быть навалом.
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: На каком языке проще всего это реализовать?
btw, то, что у ВКТ-7 называется «ModBus», на самом деле — «не совсем modbus, а точнее, совсем не modbus». «modbus, только размер фрейма другой, тайминги другие, назначение полей другое». Готовых библиотек, разбирающих этот «modbus», я в своё время не нашёл (libmodbus адаптировать не получилось), пришлось городить своё.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
Portnov писал(а): ↑16.04.2013 13:46btw, то, что у ВКТ-7 называется «ModBus», на самом деле — «не совсем modbus, а точнее, совсем не modbus». «modbus, только размер фрейма другой, тайминги другие, назначение полей другое». Готовых библиотек, разбирающих этот «modbus», я в своё время не нашёл (libmodbus адаптировать не получилось), пришлось городить своё.
А ВКТ-5 - норм? =)
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: На каком языке проще всего это реализовать?
С ВКТ-5 дела не имел, не знаю.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
Mull
- Сообщения: 35
- ОС: Ubuntu
Re: На каком языке проще всего это реализовать?
Portnov писал(а): ↑16.04.2013 13:46btw, то, что у ВКТ-7 называется «ModBus», на самом деле — «не совсем modbus, а точнее, совсем не modbus». «modbus, только размер фрейма другой, тайминги другие, назначение полей другое». Готовых библиотек, разбирающих этот «modbus», я в своё время не нашёл (libmodbus адаптировать не получилось), пришлось городить своё.
btw, не могли бы вы дать исходник того что нагородили? =) так было бы проще разобратся