読者です 読者をやめる 読者になる 読者になる

続 IOを使いたい(シリアルポート編)

組込 Linux

さて、先日の記事ですが、入力しかしていないので、
LEDでも光らせてみたいと思います。

配線は写真を見てもわかりにくいのですが、
DTRとRTSからそれぞれLEDに繋いで、
シリアルポートのGNDに落としています。
たったそれだけです。
プログラムは、

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>

#define  DEVICE "/dev/ttyUSB0"

int main()
{
  int fd;
  int arg, lstat=0;

  fd = open( DEVICE, O_RDWR | O_NOCTTY | O_NDELAY);
  if( fd < 0 ){
    perror( "device open error" );
    exit(1);
  }

  while(1){
    ioctl( fd, TIOCMSET, &lstat );
    lstat =~lstat;
    printf("%02X\n",lstat);
    fflush(stdout);
    usleep(2000000);
  }
  return 0;
}

この程度で2秒ごとに点滅します。
ただ、Ctrl+Cでリセットすると、
なんだか暴走するときがあるみたいで、
もう一度やっても点滅しなくなる時があります。
原因はわからん。誰か知っていたら教えてください。