URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9985
[ Назад ]

Исходное сообщение
"COM-порт + MySQL + сетевой демон"

Отправлено yurybx , 19-Мрт-15 10:26 
Сразу оговорюсь, что мой опыт "программирования" под *nix-системы ограничивается написанием скриптов на bash. Поэтому обращаюсь к спецам за помощью в определении направления: какую документацию читать, по каким языкам, механизмам и т.д. Какой путь выбрать.
Задача следующая. Имеется офисная АТС, передающая лог звонков по COM-порту, и сервер на FreeBSD 8.0. Нужно решить две задачи:
1. Сервер должен принимать лог от АТС и расфасовывать его в базу данных MySQL (оная уже работает на сервере)
2. Сервер должен мгновенно отправлять информацию о поступившем звонке на рабочую станцию Windows по сети (чтобы секретарша видела кто звонит на экране ещё до поднятия трубки)
С первой задачей наверняка справится ATSlog. Но как написать программу для второй задачи, которая будет перехватывать лог от станции, не мешая работе ATSlog? Или придётся писать программу для обеих задач?
Теперь подробно о второй задаче. Насколько я понимаю, нужно будет написать приложение под Windows, которое будет подключаться к демону FreeBSD по сети на определённый порт и реагировать на получаемые данные (искать клиента в базе по номеру звонящего и отображать информацию на экране большими буквами). Значит, нужно написать сетевой демон, который слушает определённый порт и обрабатывает данные получаемые по COM-порту в реальном времени. Какой язык программирования лучше использовать для этой задачи?

Содержание

Сообщения в этом обсуждении
"COM-порт + MySQL + сетевой демон"
Отправлено fantom , 19-Мрт-15 11:52 
>[оверквотинг удален]
> С первой задачей наверняка справится ATSlog. Но как написать программу для второй
> задачи, которая будет перехватывать лог от станции, не мешая работе ATSlog?
> Или придётся писать программу для обеих задач?
> Теперь подробно о второй задаче. Насколько я понимаю, нужно будет написать приложение
> под Windows, которое будет подключаться к демону FreeBSD по сети на
> определённый порт и реагировать на получаемые данные (искать клиента в базе
> по номеру звонящего и отображать информацию на экране большими буквами). Значит,
> нужно написать сетевой демон, который слушает определённый порт и обрабатывает данные
> получаемые по COM-порту в реальном времени. Какой язык программирования лучше использовать
> для этой задачи?

Язык программирования фактически любой, но на вашем месте я бы подумал на предмет web-морды/приложения, платформонезависимо и ненадо изобретать сетевых демонов.
Незнаю как в мускуле, а в postgresql можно по триггеру например запустить стороннее приложение.

Вроде по описанию
https://ru.wikipedia.org/wiki/Socket.IO
может вам помочь


"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 19-Мрт-15 20:40 
Не, web-морду делать не хочу, ибо система должна работать как часы: браузер завис/закрылся, секретарша сидит в соц. сети, смотрит фотки на полный экран - пофигу, окно должно появиться как штык! Так что будет клиент-серверная система: сервер на freebsd и клиент на windows.
А что если я просто напишу скрипт на bash? Например:

while read -r line < /dev/cuau1; do
  # отправляем $line в качестве аргумента обработчику
done

И обработчик тоже на bash, который использует команду "nc", чтобы передать информацию клиенту по TCP или UDP протоколу.
Будет ли такой вариант надёжно работать? Не будет ли пропускать символы/строки, получаемые по com-порту?


"COM-порт + MySQL + сетевой демон"
Отправлено Pahanivo , 20-Мрт-15 06:26 
> Задача следующая. Имеется офисная АТС, передающая лог звонков по COM-порту, и сервер
> 2. Сервер должен мгновенно отправлять информацию о поступившем звонке на рабочую станцию

а разве логи звонков пишутся не по факту их, звонков, ОКОНЧАНИЯ?



"COM-порт + MySQL + сетевой демон"
Отправлено fantom , 20-Мрт-15 10:28 
>> Задача следующая. Имеется офисная АТС, передающая лог звонков по COM-порту, и сервер
>> 2. Сервер должен мгновенно отправлять информацию о поступившем звонке на рабочую станцию
> а разве логи звонков пишутся не по факту их, звонков, ОКОНЧАНИЯ?

Спецы по АТС говорят, что в нормальных АТС поведение настраивалось, по дефолту - по факту окончания, при перенастройке - каждый "чих" это событие ...
Другое дело, что в COM будет гора всего насвете лететь, и нужен анализ что именно нам АТС сказала и нужно ли нам это обрабатывать.


"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 20-Мрт-15 11:23 
Моя АТС KX-TDA100 настроена таким образом, что выдаёт информацию о поступлении вызова в момент его поступления мгновенно.

"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 20-Мрт-15 11:40 
Ахтунг! Не работает второй com-порт на сервере! Не могу понять, почему.
Подключаю девайс к первому порту (что на задней панели), ввожу команду:
cu -l /dev/cuau0 -s19200
получаю читабельные данные.
Подключаю ко второму порту (что выведен на слот корпуса через переходник), ввожу команду:
cu -l /dev/cuau1 -s19200
не получаю ничего.
Переходник проверял на другой материнке - работает.
Материнка сервера X7SBA, в биосе "Serial Port B" включён, выставлен режим "Normal". Куда копать?

"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 20-Мрт-15 22:50 
Оказывается, существуют два вида распиновки внутреннего разъема COM-порта на материнках! В понедельник проверю.

"COM-порт + MySQL + сетевой демон"
Отправлено Pahanivo , 21-Мрт-15 20:47 
> Оказывается, существуют два вида распиновки внутреннего разъема COM-порта на материнках!
> В понедельник проверю.

скачай мануал по маме - там пины разъемов подписаны ))


"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 22-Мрт-15 07:44 
>> Оказывается, существуют два вида распиновки внутреннего разъема COM-порта на материнках!
>> В понедельник проверю.
> скачай мануал по маме - там пины разъемов подписаны ))

Нету в мануале распиновки. Придётся прозванивать тестером.


"COM-порт + MySQL + сетевой демон"
Отправлено Pahanivo , 22-Мрт-15 15:06 
>>> Оказывается, существуют два вида распиновки внутреннего разъема COM-порта на материнках!
>>> В понедельник проверю.
>> скачай мануал по маме - там пины разъемов подписаны ))
> Нету в мануале распиновки. Придётся прозванивать тестером.

модель мамы?!


"COM-порт + MySQL + сетевой демон"
Отправлено 3gmodem , 22-Мрт-15 15:10 
> Нету в мануале распиновки. Придётся прозванивать тестером.

oCTbIHb
gonoJHuTeJbHbIe COM-nopTbI BuguMo npocTo BbIKJ@4eHbI
nocMoTpu B BIOS u B MaHyaJe - HaMaMe MoryT 6bITb nepeMbI4Ku


"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 22-Мрт-15 18:49 
>> Нету в мануале распиновки. Придётся прозванивать тестером.
> oCTbIHb
> gonoJHuTeJbHbIe COM-nopTbI BuguMo npocTo BbIKJ@4eHbI
> nocMoTpu B BIOS u B MaHyaJe - HaMaMe MoryT 6bITb nepeMbI4Ku

В биосе проверил - порт включён. На маме по ком-порту не вижу никаких перемычек. В понедельник разберусь с распиновкой.


"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 23-Мрт-15 11:38 
>>> Нету в мануале распиновки. Придётся прозванивать тестером.
>> oCTbIHb
>> gonoJHuTeJbHbIe COM-nopTbI BuguMo npocTo BbIKJ@4eHbI
>> nocMoTpu B BIOS u B MaHyaJe - HaMaMe MoryT 6bITb nepeMbI4Ku
> В биосе проверил - порт включён. На маме по ком-порту не вижу
> никаких перемычек. В понедельник разберусь с распиновкой.

Таки да, распиновка была не той. Перепаял выкидыш - всё заработало!


"COM-порт + MySQL + сетевой демон"
Отправлено Pahanivo , 26-Мрт-15 08:35 
таки да, начала за mysql, закончили про pinout.
как в том анекдоте "Судья достал из коробки апельсин и сказал задумчиво: “КОСОЙ, БЛИН, ОТДАЙ
БРАТЬЯМ КОРОВУ!”"

"COM-порт + MySQL + сетевой демон"
Отправлено unibus , 23-Мрт-15 10:57 
> Какой язык программирования лучше использовать для этой задачи?

Взгляните на язык Python.
Лаконичен. Довольно прост для обучения. Есть на всех платформах, что легко позволяет писать переносимые приложения. Много дополнительных модулей для чего угодно - serial comm., сетевые приложения, базы данных, http, xml, rpc, json и т.д.
В базовом пакете для Винды есть модуль tkinter - для простых графических приложений на основе tcl/tk.


"COM-порт + MySQL + сетевой демон"
Отправлено yurybx , 23-Мрт-15 17:27 
Проследил за работой простого скрипта на bash. Вроде всё работает, строки не пропускает. Если всё же будут проблемы, попробую Python. Спасибо за ответы!