воскресенье, 16 октября 2011 г.

tty0tty

Я привык работать на ноутбуке, но у него нет последовательного порта. Конечно есть переходники usb->serial и т.д. Но когда приходится писать протокол обмена по COM-порту, то очень выручает эта утилита: tty0tty

Суть её сводится к тому, что она эмулирует несколько последовательных, нуль-модемных соединений: 

/dev/tnt0 <=> /dev/tnt1
/dev/tnt2 <=> /dev/tnt3
/dev/tnt4 <=> /dev/tnt5
/dev/tnt6 <=> /dev/tnt7

Напомню распиновку в нуль-модемном соединении:

TX -> RX
RX <- TX
RTS -> CTS
CTS <- RTS
DSR <- DTR
CD <- DTR
DTR -> DSR
DTR -> CD

понедельник, 26 сентября 2011 г.

/* libevent timers example */


#include <stdio.h>

#include <event2/event.h>


struct event_base * base;


struct event * timer1;

struct event * timer2;


struct timeval period1 = {1, 0};

struct timeval period2 = {2, 0};


int tc1 = 10;

int tc2 = 5;


void timer1_handler(int fd, short int fo, void* arg)

{

    printf("timer 1\n");

    if(tc1 > 0)

    {

        tc1--;

        evtimer_add(timer1, &period1);     

    }

}


void timer2_handler(int fd, short int fo, void* arg)

{

    printf("timer 2\n");

    if(tc2 > 0)

    {

        tc2--;

        evtimer_add(timer2, &period2);

    }

}


int main()

{

    struct event_config *cfg = event_config_new();

    event_config_avoid_method(cfg, "epoll");

    base = event_base_new_with_config(cfg);

    event_config_free(cfg);

 

    timer1 = evtimer_new(base, timer1_handler, NULL);

    timer2 = evtimer_new(base, timer2_handler, NULL); 

    evtimer_add(timer1, &period1); 

    evtimer_add(timer2, &period2);

 

    event_base_dispatch(base);

 

    return 0;

}


* This source code was highlighted with Source Code Highlighter.