[Armadillo:05445] Re: armadillo まとめ読み, 75 巻, 18 号
相田 仁
email@hidden
2010年 7月 15日 (木) 15:35:33 JST
相田です。
素早いご回答ありがとうございます。
教えていただいたURLを参考に試させていただきます。
その後、試行錯誤した結果
通信相手がない(端子オープンの)状態において
「タイムアウトしない」動作となるようです。
ありがとうございました。
-- > 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 メーリングリストの案内