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