続 IOを使いたい(シリアルポート編)
さて、先日の記事ですが、入力しかしていないので、
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でリセットすると、
なんだか暴走するときがあるみたいで、
もう一度やっても点滅しなくなる時があります。
原因はわからん。誰か知っていたら教えてください。