[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 メーリングリストの案内