本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSC]_bios_serialcom() のサンプルプログラム(98用)

文書番号: 402038

最終更新日: 2004/03/30


この資料は以下の製品について記述したものです。


概要

この資料は、NEC PC98 シリーズ用の _bios_serialcom 関数のサンプルプログラムです。

サンプルをご覧になる前に

このサンプルプログラムは、関数の使用方法の一例として提示するもので、十分に
テストされた信頼されるものではありません。個人の学習のために使用、修正、
分割については、自由に行っていただけますが、このサンプルに関しての、サポー
ト、説明等は一切お受けしかねますのであらかじめご了承ください。また、この
プログラムを実行し発生した、いかなる障害も、弊社では責任を負いません。
  /*
  * 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]);

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBHOWTO KB402038
Technology: kbAudDeveloper kbCCompPDS600DOS kbCCompSearch kbQC200 kbVCsearch kbZNotKeyword3 kbZNotKeyword8

inserted by FC2 system