文書番号: 402038
最終更新日: 2004/03/30
/* * BIOS 関数(_bios_serialcom )を使用したサンプルプログラム * このプログラムは、キーボードから入力された文字を RS232C ポートに出力し、 * RS232C ポートに入力されたデータをCRTに表示します。またこのプログラムは、 * [ESC] キーで終了します。 * このサンプルは、NEC PC-9800 シリーズをクロスで接続し、両方のパソコンで、実行 * してターミナルとして文字列データの送受信動作を確認しましたが、相手側機器の * プログラム・パラメータにより、このプログラムのままでは、動作しない場合もあり * ます。このプログラムはあくまで_bios_serialcom 関数のパラメータの設定、プログ * ラミングの概要を示すサンプルプログラムです。 */ #include <bios.h> #include <stdio.h> #include <conio.h> #include <graph.h> #include <stdlib.h> /* コントロールステータス情報 */ #definePARITY_ERROR 0x08 #define OVERRUN_ERROR 0x10 #define FRAME_ERROR 0x20 /* BIOS ワークバッファサイズ */ #defineRECEIVE_BUFSIZE 128 #define CONTROL_BUFSIZE (RECEIVE_BUFSIZE+20) void main( void ) int ii; unsigned result, port; unsigned char buffer[CONTROL_BUFSIZE]; struct com_t serialcom; /* com_t 構造体パラメータの設定 */ serialcom.buad = _COM_2400; serialcom.mode = _COM_CHR8 | _COM_STOP1 | _COM_NOPARITY; serialcom.command = _COM_TXEN | _COM_RXEN | _COM_RTS | _COM_ER ; serialcom.tx_time = 0x02; // 送信待ちタイマ ( 500msec * 0x02 = 1sec.) serialcom.rx_time = 0x1e; // 受信待ちタイマ ( 500msec * 0x1e = 15sec. ) serialcom.size = RECEIVE_BUFSIZE; serialcom.buffer = &buffer[0]; /* 標準 シリアルポート を初期化します.*/ port = _COM_CH1; result = _bios_serialcom(_COM_INIT, port, &serialcom); if (result != 0) printf("COM%d エラー\n : RESULT = %d", port,result); exit(1); result = _bios_serialcom(_COM_STATUS, port, &serialcom); /* 標準シリアルポートのコントローラーとシステムポートのステータスを読み出します.*/ if (result == 0) printf("COM%d コントローラ: %.4X\t システムポート: %.4X\n", port, buffer[0], buffer[1]); else printf("COM%d エラー\n", port); /* 送受信及び、エラー表示 */ for(;;) if( kbhit()) if((buffer[0]=(unsigned char)getch()) == 0x1b ) break; if(result=_bios_serialcom( _COM_SEND ,port ,&serialcom )) printf("送信エラー : %d\n",result ); break; continue; if( _bios_serialcom(_COM_GETDTL , port, &serialcom)) printf("受信バッファエラー\n"); break; if( serialcom.size ) for(ii=serialcom.size ;ii;ii--) if( result = _bios_serialcom( _COM_RECEIVE ,port,&serialcom )) printf("受信エラー : %d\n",result ); break; if(buffer[1]&PARITY_ERROR ) printf("パリティエラー\n"); if(buffer[1]&OVERRUN_ERROR ) printf("オーバーランエラー\n"); if(buffer[1]&FRAME_ERROR ) printf("フレーミングエラー\n"); printf("%c",buffer[0]);
Keywords: KBHOWTO KB402038
Technology: kbAudDeveloper kbCCompPDS600DOS kbCCompSearch kbQC200 kbVCsearch kbZNotKeyword3 kbZNotKeyword8