LINUX.ORG.RU
ФорумTalks

Анекдоты на C


0

0

/*
 *
 * 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 работать! */
★★★★★
Ответ на: комментарий от no-dashi

Н-да... аргументы непробиваемые... "куда отправится твоя лочка, если ты сам же её за каим-то хреном и снесёшь, или просто забьёшь на неё, как это привык делать я" :)

Teak ★★★★★
()
Ответ на: комментарий от Teak

> Н-да... аргументы непробиваемые...

Абсолютно непробиваемые. Если получится так, что придется использовать какой-либо закрытый софт, который по другому именует лок-файлы, то все, приехали.

no-dashi ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.