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

Исходное сообщение
"Com порт"

Отправлено als , 04-Июн-02 12:30 
Уважаемый ALL! Не подскажешь ли как снять информацию с com1 и копировать ее в файл? Есть АТС Panasonic, прекрасно кидает данные по RS232, через гипертерминал под Win проверил, все работает. Надо эту информацию получать на com1 (в смысле кабель проложил), и складывать ее в файл. Чем снять ее с com порта представить немогу, потому как опыта в этом нюнь. Вроде есть мысль запустить терминал на com1 (cuaa0) и глядишь пойдет. Только не понял как осуществить :(

Содержание

Сообщения в этом обсуждении
"RE: Com порт"
Отправлено vitex , 04-Июн-02 12:48 
Кривовато и примитивно, но работает :)

#!/usr/bin/perl
while ($a=1)
{
open (PBX,"/dev/cuaa0");

while (<PBX>)
{
$d=$_;
# print $d;
open (DATE,"date +%Y-%m-%d|");
while (<DATE>)
{
  chomp;
  $dat=$_;
  };
close(DATE);
open (CILDATA,">>/usr/billing/".$dat.".cil");
print CILDATA $d;
close (CILDATA);
  };
close (PBX);
}



"RE: Com порт"
Отправлено als , 04-Июн-02 13:01 
Огромное спасибо за скрипт, щас буду пробывать.
Правда еще вопрос, а как установить параметры cuaa0?

"RE: Com порт"
Отправлено vitex , 04-Июн-02 13:18 
>Огромное спасибо за скрипт, щас буду пробывать.
>Правда еще вопрос, а как установить параметры cuaa0?

/etc/rc.serial

По умолчанию порт работает на 9600-8-N-1, что и требуется для большинства АТС.


"RE: Com порт"
Отправлено als , 04-Июн-02 14:57 
Что-то не работает :(
Стоит FreeBSd 4.5, кабель в порядке. Подключал к com2 (cuaa1 вроде), в скрипте исправил. Под Win работает.
Запускается, висит процессом, в директории ничего не происходит :(
Что может быть или как проверить? Может не совпадает настройка порта (под Win пробывал 9600-8-N-1, под FreeBSd не понял какие, но умолчания вроде никогда не менял.



"RE: Com порт"
Отправлено als , 04-Июн-02 15:00 
>Кривовато и примитивно, но работает :)
>
>#!/usr/bin/perl
>while ($a=1)
>{
>open (PBX,"/dev/cuaa0");
print "a";
>while (<PBX>)
>{
> $d=$_;
print "b";
print $d;
> open (DATE,"date +%Y-%m-%d|");
> while (<DATE>)
> {
>  chomp;
>  $dat=$_;
>  };
> close(DATE);
> open (CILDATA,">>/usr/billing/".$dat.".cil");
> print CILDATA $d;
> close (CILDATA);
>  };
>close (PBX);
>}

Забыл совсем, попробывал добавить print, что бы взглянуть где все ходит :)
(см. выше)
В результе, появляется буква а, и все.
К сожалению в perl не силен.


"RE: Com порт"
Отправлено vitex , 04-Июн-02 15:14 
>Забыл совсем, попробывал добавить print, что бы взглянуть где все ходит :)
>
>(см. выше)
>В результе, появляется буква а, и все.
>К сожалению в perl не силен.

В rc.serial должно быть

default() {
        # Reset everything changed by the other functions to initial defaults.

        ci=$1; shift    # call in device identifier
        co=$1; shift    # call out device identifier

        for i in $*
        do
                comcontrol /dev/tty${ci}${i} dtrwait 300 drainwait 0
                stty < /dev/ttyi${ci}${i} -clocal crtscts hupcl 9600 reprint ^R
                stty < /dev/ttyl${ci}${i} -clocal -crtscts -hupcl 0
                stty < /dev/cuai${co}${i} -clocal crtscts hupcl 9600 reprint ^R
                stty < /dev/cual${co}${i} -clocal -crtscts -hupcl 0
        done
}

добавь в конце
default 0

проверить правильность настройки порта можно
cu -l cuaa0
на терминал должна посыпаться  ожидаемая дата

Может станция хочет не 9600?

PS
У меня на Ericsson'e все работает


"RE: Com порт"
Отправлено als , 04-Июн-02 15:21 
Странно как-то, жму cu -1 /dev/cuaa1 (у меня все на com2 идет)
а он (cu) отвечает, System not found.
Это что, com2 нету?

"RE: Com порт"
Отправлено lavr , 04-Июн-02 15:22 
>>Кривовато и примитивно, но работает :)
>>
>>#!/usr/bin/perl
>>while ($a=1)
>>{
>>open (PBX,"/dev/cuaa0");
>print "a";
>>while (<PBX>)
>>{
>> $d=$_;
>print "b";
>print $d;
>> open (DATE,"date +%Y-%m-%d|");
>> while (<DATE>)
>> {
>>  chomp;
>>  $dat=$_;
>>  };
>> close(DATE);
>> open (CILDATA,">>/usr/billing/".$dat.".cil");
>> print CILDATA $d;
>> close (CILDATA);
>>  };
>>close (PBX);
>>}
>
>Забыл совсем, попробывал добавить print, что бы взглянуть где все ходит :)
>
>(см. выше)
>В результе, появляется буква а, и все.
>К сожалению в perl не силен.

stty < /dev/cuaaНОМЕР 9600 clocal -parenb -parodd cs8 -cstopb -icanon
cat /dev/cuaaНОМЕР > /var/log/ats.log

устроит?


"RE: Com порт"
Отправлено als , 04-Июн-02 15:35 
>stty < /dev/cuaaНОМЕР 9600 clocal -parenb -parodd cs8 -cstopb -icanon
>cat /dev/cuaaНОМЕР > /var/log/ats.log
>
>устроит?
Блеск, все работает, в смысле пошла информация в файл. только страность какая-то, некоторые буквы пропадают. может это из-за параметров в stty быть?


"RE: Com порт"
Отправлено als , 04-Июн-02 15:59 
Ура, разобрался.
Всем большое спасибо :)))

"RE: Com порт"
Отправлено 0leg , 04-Июн-02 16:17 
*некоторые буквы пропадают*

а буквы то нашлись?


"RE: Com порт"
Отправлено als , 04-Июн-02 16:37 
Ага :))