Salutare,
Am o mica problema legata de "ascultarea" datelor ce imi curg pe portul serial.
Am un PBX conectat la un calculator pe serial(com1) si respectiva cutie imi ruleaza un linux - CentOS.
Folosirea minicom(pentru a prinde datele de pe serial) a cam iesit din discutie fiindca nu prea stie sa ruleze in fundal.
Asa ca am apelat la o aplicatie facuta in C++(cred)
cod sursa:
CODSURSA
#include <fcntl.h>
#include <stdio.h>
#include <termios.h>
#include <stdlib.h>
#include <strings.h>
/* Setez baud rate */
#define SPEED B19200
/* Setez portul serial */
#define PORT "/dev/ttyS0"
int main( ){
int fd = open( PORT, O_RDONLY | O_NOCTTY );
if (fd <0) {perror(PORT); exit(-1); }
struct termios options;
bzero(&options, sizeof(options));
options.c_cflag = SPEED | CS8 | CLOCAL | CREAD | IGNPAR;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &options);
int r;
char buf[255];
while( 1 ){
r = read( fd, buf, 255 );
buf[r]=0;
printf( "%s", buf );
}
}
#include <stdio.h>
#include <termios.h>
#include <stdlib.h>
#include <strings.h>
/* Setez baud rate */
#define SPEED B19200
/* Setez portul serial */
#define PORT "/dev/ttyS0"
int main( ){
int fd = open( PORT, O_RDONLY | O_NOCTTY );
if (fd <0) {perror(PORT); exit(-1); }
struct termios options;
bzero(&options, sizeof(options));
options.c_cflag = SPEED | CS8 | CLOCAL | CREAD | IGNPAR;
tcflush(fd, TCIFLUSH);
tcsetattr(fd, TCSANOW, &options);
int r;
char buf[255];
while( 1 ){
r = read( fd, buf, 255 );
buf[r]=0;
printf( "%s", buf );
}
}
Am gasit sursa pe internet si as vrea sa o adaptez cumva pentru nevoile mele
Sunt total necunoscator in acest limbaj si ma intreb cum pot face sa scriu acele date care mi le scoate in stdout sau in "ecran" dupa intelesul meu, fie intr-o baza de date sau intr-un fisier text.
Tin sa precizez ca este vorba de inregistrari SMDR care apar ceva in genul asta:
22/10/09 16:09 103 11 0777777777 00:00'31 00000.00
22/10/09 16:11 107 10 0777777777 00:00'42 00000.00
22/10/09 16:11 110 10 0777777777 00:00'16 00000.00
22/10/09 16:12 108 11 0777777777 00:02'56 00000.00
22/10/09 16:14 110 11 0777777777 00:00'51 00000.00
22/10/09 16:17 106 11 0777777777 00:00'29 00000.00
22/10/09 16:19 106 11 0777777777 00:00'25 00000.00
22/10/09 16:19 107 10 0777777777 00:01'01 00000.00
unde 0777777777 variaza fiind un numar de telefon format.
multumesc anticipat pentru orice sugestie.
