/* * * This source code redistributed under GPL version 2 only * */ typedef struct { int fd_in; int fd_out; int cu_pid ) tlink; typedef tlink * plink /* Открываем последовательный порт для чтения/записи... */ plink open_serial(char * n) { plink ret; int fd_in[2]; int fd_out[2]; ret = (plink) malloc ( sizeof(tlink) ); pipe(fd_in); pipe(fd_out); if ((ret->cu_pid=fork()) != 0) { ret->fd_in = fd_in[0]; ret->fd_out = fd_out[1]; return ret; } else { dup2(fd_out[0],0); dup2(fd_in[1],1); execl("/usr/bin/cu","/usr/bin/cu","-l",n); } } /* Закрываем порт */ void close_serial(plink p) { kill(p->cu_pid,SIGTERM); free(p); } /* Запись в порт &/ int write_serial(plink p, void * b, int len) { return write( p->fd_out, b, len ); } /* Чтение из порта */ int read_serial(plink p, void * b, int len) { memset(buf,0,len); return read( p->fd_in, b, len ); } int main() { char buf[256]; plink f = open_serial("/dev/ttyS0"); write_serial(f,"ATZ\r\n",5); read_serial(f,buf,256); printf("%s",buf); close_serial(f); return 0; } /* P.S.: чтоб вам так всю жизнь в винде через Hyperterminal работать! */