[Armadillo:05443] Re: シリアル通信時のタイムアウト
nakai
email@hidden
2010年 7月 15日 (木) 12:38:08 JST
nakaiです。
selectシステムコールを使ってみてはいかがでしょうか?
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/select.2.html
(2010/07/15 10:02), 相田 仁 wrote:
> 相田と申します。
>
> シリアルの受信タイムアウトが機能せず悩んでいます。
> 設定ミス、または使用方法をお教えください。
>
> 開発環境は
> ・Armadillo240
> ・atmark-dist-20100603
> ・linux-2.6.12.3-a9-17
> ・atde2
> です。
>
> よろしくお願いいたします。
>
> ----- ソース(ここから) -----
>
> #include<sys/ioctl.h>
> #include<sys/types.h>
> #include<sys/stat.h>
> #include<fcntl.h>
> #include<termios.h>
> #include<unistd.h>
> #include<stdio.h>
> #include<stdlib.h>
> #include<string.h>
>
> #define BAUDRATE B38400
> #define MODEMDEVICE "/dev/ttyAM1"
>
> static int open_serial(void)
> {
> int fd;
> struct termios newtio;
>
> //
> fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
> if (fd< 0) {perror(MODEMDEVICE); exit(-1); }
>
> //
> bzero(&newtio, sizeof(newtio));
>
> //
> newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
>
> // タイムアウトの指定
> newtio.c_cc[VMIN] = 0;
> newtio.c_cc[VTIME] = 1;
>
> //
> ioctl(fd, TCSETS,&newtio);
> return fd;
> }
>
> int main(void)
> {
> int fd;
> int recv_size;
> unsigned char res[16];
>
> fd = open_serial();
>
> write(fd, "123", sizeof("123"));
> recv_size = read(fd, res, 15);
>
> printf("size: %d\n", recv_size);
>
> close(fd);
> return 0;
> }
>
> ----- ソース(ここまで) -----
>
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
armadillo メーリングリストの案内