S ( $ date raquo ;, $ time raquo ;, $ sline raquo ;, $ sstn raquo ;, $ stimetalk raquo ;, $ sdestno raquo ;, $ stimetalksec ) );
$ dbh2- gt; do ( INSERT INTO $ table_name (sDateCall, sTimeCall, sLine, sStn, sTimeTalk, sDestno, sTimeTalkSec) VALUES ( $ date raquo ;, $ time raquo ;, $ sline raquo ;, $ sstn raquo ;, $ stimetalk raquo ;, $ sdestno raquo ;, $ stimetalksec ) );}
$ result= raquo ;;}}
$ dbh- gt; disconnect ();
$ dbh2- gt; disconnect ();
undef $ ob;
Додаток В
# Текст програми збору тарифікаційної інформації з УАТС NEAX
#!/usr/bin/perl -w
# Підключення модуля для роботи з СУБД
use DBI; {
$ OS_win=($ ^ O eq MSWin32 )? 1: 0; ($ OS_win) { use Win32 :: SerialPort raquo ;;} { use Device :: SerialPort }} ($ OS_win) {
$ port= COM2 raquo ;;
$ ob=Win32 :: SerialPort- gt; new ($ port);
} {
$ port=/dev/ttyS0 raquo ;;
$ ob=Device :: SerialPort- gt; new ($ port);
} die Can not open serial port $ port: $ ^ E n unless ($ ob);
# Встановлення параметрів роботи з com-портом
$ ob- gt; baudrate (38400); # Швидкість передачі даних через порт
$ ob- gt; parity ( none ); # Наявність біта парності
$ ob- gt; databits (8); # Біти даних
$ ob- gt; stopbits (1); # Кількість степових біт
$ ob- gt; handshake ( none ); # Управління потоком
$ ob- gt; write_settings; # Застосування налаштувань
# подлюченіе до локальної та центральної баз даних
$ dbi_user= root raquo ;;
$ dbi_password= raquo ;;
$ dbi_database= nec raquo ;;
$ dbi_host= localhost raquo ;;
$ dbi_dsn= DBI: mysql: database=$ dbi_database; host=$ dbi_host raquo ;;
$ dbi_host2= 192.168.1.1 raquo ;;
$ dbi_dsn2= DBI: mysql: database=$ dbi_database; host=$ dbi_host2 raquo ;;
$ dbh=DBI- gt; connect ($ dbi_dsn, $ dbi_user, $ dbi_password, {AutoCommit= gt; 1, RaiseError= gt; 1, PrintError= gt; 1});
$ dbh2=DBI- gt; connect ($ dbi_dsn2, $ dbi_user, $ dbi_password, {AutoCommit= gt; 1, RaiseError= gt; 1, PrintError= gt; 1});
($ month, $ year)=(localtime) [4,5];
$ table_name=sprintf ( s% 02d% 02d raquo ;, $ month + 1, $ year + 1900);
# Запит на створення таблиці
($ sql_create_table)="CREATE TABLE $ table_name (sID INT (10) UNSIGNED DEFAULT 0 NOT NULL AUTO_INCREMENT, VARCHAR (6), VARCHAR (24), VARCHAR (10), VARCHAR (10), int (10) UNSIGNED,
PRIMARY KEY (sID));" ;
# Якщо таблиця з такою назвою (назва - поточний місяць) не існує, то її створити
# в локальній і центральної базах даних
$ sth=$ dbh- gt; prepare ( show tables from $ dbi_database like $ table_name raquo ;; );
$ sth- gt; execute () or die $ dbh- gt; errstr;
$ ex= raquo ;;
$ ex=$ sth- gt; fetchrow_array (); ($ ex ne $ table_name) {
$ dbh- gt; do ($ sql_create_table);
$ sth- gt; execute () or die $ dbh- gt; errstr;};
$ sth=$ dbh2- gt; prepare ( show tables from $ dbi_database like $ table_name raquo ;; );
$ sth- gt; execute () or die $ dbh2- gt; errstr;
$ ex= raquo ;;
$ ex=$ sth- gt; fetchrow_array (); ($ ex ne $ table_name) {
$ dbh2- gt; do ($ sql_create_table);
$ sth- gt; execute () or die $ dbh2- gt; errstr;};
$ timestart=time ();
$ timeout=2;
$ result= raquo ;;
# Опитування com-порту в циклі (здійснюється до закінчення тайм-ауту) ((time () - $ timestart) lt; $ timeout)
{
# Читання одного байта інформації з com-порта ($ count - ознака того, що дані
# з com-порту надійшли, $ active - дані, лічені з порту)
($ count, $ active)=$ ob- gt; read (1);
# Як...