|
|
当サイトは、玄箱PRO (KURO-BOX/Pro)を中心とした組み込み、Linuxと電子工作を扱っています。
会社案内
情報セキュリティおよび個人情報の取り扱いについて コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。コメントはそれぞれ投稿した人のものです。 |
![]()
if((asy = open(DEVICE, O_RDWR | O_NDELAY))<0) {
fprintf(stderr, "Colud not open serial port.n");
exit(2);
}
ioctl(asy, TIOCMGET, &modemline);
if (modemline & TIOCM_CAR) /* TIOCM_CD でもよい */
printf("1:DCD is ON, ");
else
printf("1:DCD is OFF, ");
if (modemline & TIOCM_DSR)
printf("6:DSR is ON, ");
else
printf("6:DSR is OFF, "); if (modemline & TIOCM_CTS)
printf("8:CTS is ON, ");
else
printf("8:CTS is OFF, ");
if (modemline & TIOCM_RNG) /* TIOCM_RI でもよい */
printf("9:RI is ONn");
else
printf("9:RI is OFFn");
modemline = TIOCM_DTR;ほかのビットの値を変えずに、該当ビットを'1'にするなら論理和を使います。次の例は、ほかのビットに影響を与えずに DTR のビットのみ'1' にします。
modemline |= TIOCM_DTR;ほかのビットの値を変えずに、該当ビットを'0'にするなら反転と論理積を使います。次の例は、ほかのビットに影響を与えずに DTR のビットのみ'0' にします。
modemline &= ~TIOCM_DTR;プログラム中では、変数 i の値に応じて、ON にするビットを変えて、ioctl() で出力しています。
switch (i) {
case 0:
modemline = 0;
break;
case 1: /* Pin 4: DTR ON */
modemline = TIOCM_DTR;
break;
case 2: /* Pin 7: RTS ON */
modemline = TIOCM_RTS;
break;
case 3: /* Pin 4 & 7 ON */
modemline = TIOCM_RTS | TIOCM_DTR;
break;
default:
break;
}
ioctl(asy, TIOCMSET, &modemline);
sleep(1);
cc -o modem modem.cまたは、
make modemです。
./modemとして、実行するとビデオのように、LEDが点滅するはずです。open()時に一瞬 DTR, RTS がONになっているのがわかるかと思います。信号を流用するときは、この現象に注意してください。
ディジタル出力テストの様子(クリックすると動画が表示される)
使用する部品一覧
工作は簡単です。電池のマイナス側の線をコネクタの5ピンにはんだ付けし、プラス側の線を抵抗にはんだ付けするだけです。準備したテスト用回路とシリアル・チェッカにつないだところ
./modemを実行し、抵抗の足を、1, 6, 8, 9ピンと順に当てていくと、表示が変わることが確認できます。次の例では 1, 8 ピンに当てています。
kurobox@kurobox:~/src/serial$ ./modem
1:DCD is OFF, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF
1:DCD is OFF, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF
1:DCD is OFF, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF
1:DCD is ON, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF ← 1 ピン ON
1:DCD is ON, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF ← 1 ピン ON
1:DCD is OFF, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF
1:DCD is OFF, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF
1:DCD is OFF, 6:DSR is OFF, 8:CTS is ON, 9:RI is OFF ← 8 ピン ON
1:DCD is OFF, 6:DSR is OFF, 8:CTS is ON, 9:RI is OFF ← 8 ピン ON
1:DCD is OFF, 6:DSR is OFF, 8:CTS is ON, 9:RI is OFF ← 8 ピン ON
1:DCD is OFF, 6:DSR is OFF, 8:CTS is OFF, 9:RI is OFF
:
このブログ記事を参照しているブログ一覧: シリアル・ポートを使ってディジタル入出力
このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/1088
おすすめ書籍 |
![]() |
コメントする