[Armadillo:05437] シリアル通信時のタイムアウト

相田 仁 email@hidden
2010年 7月 15日 (木) 10:02:56 JST


相田と申します。

シリアルの受信タイムアウトが機能せず悩んでいます。
設定ミス、または使用方法をお教えください。

開発環境は
・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 メーリングリストの案内