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

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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум покритикуйте функцию (2009)
- Форум Канал загадок (2007)
- Форум C++[RAII], c network, recv неоправданный интервал (2008)
- Форум Вывести содержание бинарного файла (2013)
- Форум FUSE (2013)
- Форум Почему программа выключается? (2017)
- Форум Сокеты, Передача данных, C/C++ (2006)
- Форум [pipe] ftp не хочет общатся через два пайпа (2009)
- Форум Получение списка интерфейсов через netlink (2013)
- Форум перехват open (2016)