На каком языке проще всего это реализовать?

Модератор: Модераторы разделов

Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

На каком языке проще всего это реализовать?

Сообщение Mull »

Есть задача - нужно связать два GSM модема, и пока что не знаю каким макаром, но выкачать данные из прибора, подключенного к этому модему, после этого обработать и поместить эти данные в СУБД. Какие средства, языки, СУБД лучше всего для этого использовать? Предпочтений нет, знаю лишь Паскаль и Бейсик с первых курсов университета, Буду благодарен за любую информацию.
Спасибо сказали:
Kopilov
Сообщения: 958
ОС: [K]Ubuntu, Debian

Re: На каком языке проще всего это реализовать?

Сообщение Kopilov »

Ой, не знаю, справишься ли...
Расскажи хоть, что за прибор, как взаимодействовать с ним будешь. Если придётся драйверы к нему писать -- наверно, на C.
В приборах и модемах я не силён. Про передачу данных по сети могу сказать, что пишу SOAP-сервис на Java, товарищи -- клиентов к нему на Delphi и PHP.
А СУБД разные бывают, но если знать азы -- переключаться между ними не так уж трудно (если не задействованы специфические особенности), выбирают их обычно по быстродействию, функциональности и стоимости.
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

Kopilov писал(а):
20.02.2013 15:02
Ой, не знаю, справишься ли...
Расскажи хоть, что за прибор, как взаимодействовать с ним будешь. Если придётся драйверы к нему писать -- наверно, на C.
В приборах и модемах я не силён. Про передачу данных по сети могу сказать, что пишу SOAP-сервис на Java, товарищи -- клиентов к нему на Delphi и PHP.
А СУБД разные бывают, но если знать азы -- переключаться между ними не так уж трудно (если не задействованы специфические особенности), выбирают их обычно по быстродействию, функциональности и стоимости.

Драйверы писать вроде не надо, хотя не уверен. СУБД нужна бесплатная, а по поводу функционала - операция с датами, сложение умножение вычитание деление дробных чисел. да и все =)
Спасибо сказали:
Аватара пользователя
Gloomy
Сообщения: 340
Статус: сочувствующий

Re: На каком языке проще всего это реализовать?

Сообщение Gloomy »

Mull писал(а):
20.02.2013 14:13
знаю лишь Паскаль и Бейсик с первых курсов университета

Если разработку никак нельзя вынести на аутсорс, можно попробовать осилить Lazarus. Его возможности вполне покрывают требуемый функционал.
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: На каком языке проще всего это реализовать?

Сообщение FlySnake »

GSM-модемы управляются AT-командами по UART, следовательно нужен лишь последовательный порт и преобразователь уровней. Если только это не какой-то специальный прибор со своим фирменным интерфейсом поверх AT-команд.
Какой модем вообще?
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

Gloomy писал(а):
20.02.2013 17:00
Mull писал(а):
20.02.2013 14:13
знаю лишь Паскаль и Бейсик с первых курсов университета

Если разработку никак нельзя вынести на аутсорс, можно попробовать осилить Lazarus. Его возможности вполне покрывают требуемый функционал.


Не хочу выносить на аутсорс, хочу сам во всем разобраться.


FlySnake писал(а):
20.02.2013 17:13
GSM-модемы управляются AT-командами по UART, следовательно нужен лишь последовательный порт и преобразователь уровней. Если только это не какой-то специальный прибор со своим фирменным интерфейсом поверх AT-команд.
Какой модем вообще?


Модема еще нет, прибор соединяется с модемом по RS-232. Больше пока ничего сказать не могу, жду поставки конкретного оборудования для экспериментов
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: На каком языке проще всего это реализовать?

Сообщение FlySnake »

Mull писал(а):
20.02.2013 19:06
Модема еще нет, прибор соединяется с модемом по RS-232. Больше пока ничего сказать не могу, жду поставки конкретного оборудования для экспериментов

Значит подойдёт любой язык на котором можно работать с последовательным портом, БД и парсить строки (AT-команды)
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

FlySnake писал(а):
20.02.2013 21:38
Mull писал(а):
20.02.2013 19:06
Модема еще нет, прибор соединяется с модемом по RS-232. Больше пока ничего сказать не могу, жду поставки конкретного оборудования для экспериментов

Значит подойдёт любой язык на котором можно работать с последовательным портом, БД и парсить строки (AT-команды)

А вас не затруднит, как более опытного товарища подсказать какой язык это умеет? кросс-платформенность в рамках винда/юникс приветствуется =) Ну и чтобы можно было GUI прикрутить
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21513
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: На каком языке проще всего это реализовать?

Сообщение Bizdelnick »

Mull писал(а):
20.02.2013 22:19
какой язык это умеет?

Да любой из распространённых. Новичкам обычно рекомендуют Python. Что до кроссплатформенности - работа с портами в винде и *NIX сильно отличается, хотя наверняка для любого языка можно найти библиотеку, позволяющую от этого абстрагироваться.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: На каком языке проще всего это реализовать?

Сообщение FlySnake »

Mull писал(а):
20.02.2013 22:19
FlySnake писал(а):
20.02.2013 21:38
Mull писал(а):
20.02.2013 19:06
Модема еще нет, прибор соединяется с модемом по RS-232. Больше пока ничего сказать не могу, жду поставки конкретного оборудования для экспериментов

Значит подойдёт любой язык на котором можно работать с последовательным портом, БД и парсить строки (AT-команды)

А вас не затруднит, как более опытного товарища подсказать какой язык это умеет? кросс-платформенность в рамках винда/юникс приветствуется =) Ну и чтобы можно было GUI прикрутить

Я делал на С++. Для кроссплатформенности - boost, для кросспллатформенности и гуя - Qt с qextserailport для последовательного порта. Но это не совет т.к. наверняка есть более подходящие инструменты под ваши задачи, с которыми моего опыта недостаточно.
Если верить гуглу для вышеупомянутого питона есть примочки для работы с последовательным портом http://pyserial.sourceforge.net/ , гуй Qt к питону есть. На руби тоже есть http://ruby-serialport.rubyforge.org/ Да наверное сложнее найти язык на котором нельзя этого сделать
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

Нашел документацию, не пойму в каком виде он хочет получать запросы и как оно кодирует информацию. Помогите пожалуйста.

З.Ы. В этом мануале есть примеры кода, они на C может лучше это реализовать на С а не на питоне?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
FlySnake
Сообщения: 992
ОС: openSUSE

Re: На каком языке проще всего это реализовать?

Сообщение FlySnake »

Дык это Modbus и железки - не простые модемы оказывается. Modbus реализует свой транспортный протокол с одним мастером и несколькими слейвами. Поверх него уже свой протокол накладывается. В питоне и для этого мазь найдётся http://code.google.com/p/pymodbus/ но насколько это хорошо - не уверен.

Для C++ есть libmodbus - она проверенно работает, у нас есть как раз проект сейчас на Qt с libmodbus в работе. Есть QModBus - отличная софтина для ручного формирования и приёма команд по модбасу. Если собираетесь иметь дело с модбасом - погуглите в сторону его принципа работы сначала. Потом зная это несложно прикрутить библиотеку и реализовать прикладной протокол на любом языке.

Кстати pyserial недавно довелось попробовать на ARM и то ли руки кривые то ли что-то ещё. Очень нестабильно работал приём. Так и не разобрались и сделали на Си :)
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

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: На каком языке проще всего это реализовать?

Сообщение FlySnake »

0x000 - это шестнадцатеричная запись чисел в Си ставшая стандартом для таких чисел.
Вам нужен любой modbus tutorial и общее представление о сетях и протоколах. И ещё спаять какой-нибудь девайс, подключить к последовательному порту и попробовать гонять данные между ним и ПК без всяких модбасов чтобы увидеть как это работает. Проще не бывает. Потом уже с модбасом разобраться легко.
К модему обращаться через последовательный порт (может быть на USB устройтве создан, а может RS-232 в компе - без разницы) который представляет из себя символьное устройство /dev/ttySx, /dev/ttyUSBx, /dev/ttyACMx или ещё как - вот в него и пишутся/читаются данные. На физическом уровне RS-485, поверх modbus - это транспортный уровень. А на командах modbus реализуется прикладной. Вот посредством этих команд и общаетесь с девайсом.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: На каком языке проще всего это реализовать?

Сообщение drBatty »

Mull писал(а):
20.02.2013 14:13
Есть задача - нужно связать два GSM модема, и пока что не знаю каким макаром, но выкачать данные из прибора, подключенного к этому модему,

насколько я знаю, он работает как эмуляция COM порта. Примеров на C в сети должно быть навалом.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: На каком языке проще всего это реализовать?

Сообщение Portnov »

btw, то, что у ВКТ-7 называется «ModBus», на самом деле — «не совсем modbus, а точнее, совсем не modbus». «modbus, только размер фрейма другой, тайминги другие, назначение полей другое». Готовых библиотек, разбирающих этот «modbus», я в своё время не нашёл (libmodbus адаптировать не получилось), пришлось городить своё.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

Portnov писал(а):
16.04.2013 13:46
btw, то, что у ВКТ-7 называется «ModBus», на самом деле — «не совсем modbus, а точнее, совсем не modbus». «modbus, только размер фрейма другой, тайминги другие, назначение полей другое». Готовых библиотек, разбирающих этот «modbus», я в своё время не нашёл (libmodbus адаптировать не получилось), пришлось городить своё.

А ВКТ-5 - норм? =)
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: На каком языке проще всего это реализовать?

Сообщение Portnov »

С ВКТ-5 дела не имел, не знаю.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Mull
Сообщения: 35
ОС: Ubuntu

Re: На каком языке проще всего это реализовать?

Сообщение Mull »

Portnov писал(а):
16.04.2013 13:46
btw, то, что у ВКТ-7 называется «ModBus», на самом деле — «не совсем modbus, а точнее, совсем не modbus». «modbus, только размер фрейма другой, тайминги другие, назначение полей другое». Готовых библиотек, разбирающих этот «modbus», я в своё время не нашёл (libmodbus адаптировать не получилось), пришлось городить своё.

btw, не могли бы вы дать исходник того что нагородили? =) так было бы проще разобратся
Спасибо сказали: