Григорий Бондаренко: У меня есть для TDA200. Алгоритм такой
-программа слушает COM-порт и пишет все, что услышит в файл.
-вторая программа читает файл, разбирает SMDR и сваливает в таблицу в базе Firebird.
Однако, здесь нет задачи немедленного уведомления БД о новом звонке, это, фактически, сбор статистики (потому и пишется в файл - коннект упал, но статистика пишется). Период обновления - минута (по cron).
В вашем случае, чтобы обеспечить железобетонную надежность, придется также использовать две программы. nc, socat и другие аналоги не подойдут - они не уведомляют о разрыве соединения.
Первая программа будет разбирать то, чем плюется АТС и по TCP общаться с программой на рабочем месте секретаря. Вторая программа будет показывать окошки и прочие фокусы.
К сожалению, мои программы написаны на C++ и могут оказаться трудны для адаптации.
От Qt здесь понадобятся QSerialPort, QTCPServer, QTCPSocket.
respe-t: Это сейчас "не нужно", а дальше может резко стать "нужно".
"Компактно" - тоже странная затея. Насколько я помню, Firebird Интербейсович под Blob изволит съедать всю страницу - минимум 4 килобайта. Вот вам и "компактно".
jcmvbkbc: да, да, классический эффект последней строки. На момент написания моего ответа, там было for(i=j+1,..., а дальше тупоголовый парсер тостера все пожрал.
Rainberd шустро комментарий поправил, и теперь я выгляжу немножко тупицей.
Ihor Kalashnikov: Хранить в базе не web-сервиса бинарнки - как раз хорошая идея, потому как это существенно улучшает контроль над консистентностью базы.
-программа слушает COM-порт и пишет все, что услышит в файл.
-вторая программа читает файл, разбирает SMDR и сваливает в таблицу в базе Firebird.
Однако, здесь нет задачи немедленного уведомления БД о новом звонке, это, фактически, сбор статистики (потому и пишется в файл - коннект упал, но статистика пишется). Период обновления - минута (по cron).
В вашем случае, чтобы обеспечить железобетонную надежность, придется также использовать две программы. nc, socat и другие аналоги не подойдут - они не уведомляют о разрыве соединения.
Первая программа будет разбирать то, чем плюется АТС и по TCP общаться с программой на рабочем месте секретаря. Вторая программа будет показывать окошки и прочие фокусы.
К сожалению, мои программы написаны на C++ и могут оказаться трудны для адаптации.
От Qt здесь понадобятся QSerialPort, QTCPServer, QTCPSocket.