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