⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 一个COM PORT的测试程式,能过COM 回路治具来实现.COM回路接法1-7-8,2-3,4-6-9,5
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "Pcomm.h"
//---------------------------------------------------------------------------

#pragma argsused
//--------------------------------------------------------------------------
void help()
{
    printf("RS232 Loopback Test V1.0\n");
    printf("Copy Right by Tatung 2003-June-26\n");
    printf("\n");
    printf("Usage:\n");
    printf("winrs232 [port]\n");

}
//--------------------------------------------------------------------------
int BaudRateTable(int br)
{
    switch (br)
        {
         case 9 :  br=2400;
                   break;
         case 10:  br=4800;
                   break;
         case 11:  br=7200;
                   break;
         case 12:  br=9600;
                   break;
         case 13:  br=19200;
                   break;
         case 14:  br=38400;
                   break;
         case 15:  br=57600;
                   break;
         case 16:  br=115200;
                   break;
         default :
                  br=9600;
                  break;
        }
   return (br);
}
//--------------------------------------------------------------------------
int COMTEST(int comport, int baud)
{
   char tbuf[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   char rbuf[80];
   memset(rbuf,0x0,80);

   if (sio_open (comport) == 0)
   {
       // baud = 9 Real Baud Rate is 2400
       // baud = 10 Real Baud Rate is 4800
       // baud = 11 Real Baud Rate is 7200
       // baud = 12 Real Baud Rate is 9600
       // baud = 13 Real Baud Rate is 19200
       // baud = 14 Real Baud Rate is 38400
       // baud = 15 Real Baud Rate is 57600
       // baud = 16 Real Baud Rate is 115200

       sio_ioctl ( comport, baud, P_NONE | BIT_8 | STOP_1 );
       sio_flowctrl ( comport, 0xc );
       sio_flush ( comport, 2 );

       int baud_ret = sio_getbaud ( comport );
       if ( (baud_ret - BaudRateTable(baud)) == 0 )
       {
          sio_write( comport, tbuf, strlen(tbuf));

          // Deley about 0.5 sec
          //for (int j=0;j<10000;j++) { for (int k=0;k<10000;k++) { }  }
          Sleep(500);
          
          sio_read( comport, rbuf, strlen(tbuf));
          if ( strcmp(rbuf,tbuf) == 0)
          {
            printf("Baud Rate: %d, Result=%s\n",baud_ret,rbuf);
            sio_DTR ( comport, 1 );
            sio_RTS ( comport, 1 );
            if (sio_lstatus ( comport ) == 15)
            {
               printf("DTR=1: DSR=1 RI=1 , RTS=1: DCD=1 CTS=1\n");
               sio_DTR ( comport, 0 );
               sio_RTS ( comport, 0 );
               if (sio_lstatus ( comport ) == 0)
               printf("DTR=0: DSR=0 RI=0 , RTS=0: DCD=0 CTS=0\n");
            }
            else
            return -1;

            return 0;
          }
          else
          return -1;
       }
       else
       return -1;
   }
   else
   return -1;
}
//----------------------------------------------------------------------


int main(int argc, char* argv[])
{
    char *testrlt;
    bool test_status; // true --> pass, false --> fail
    if (argc == 2)
    {
      for (int brate=9; brate < 17; brate++)
      {
        if (COMTEST(atoi(argv[1]), brate) == 0)
        {
          sio_close ( atoi(argv[1]) );
          testrlt="Test OK";
          test_status=true;
        }
        else
        {
          testrlt="Test Fail or port number is not exist in system";
          test_status=false;
        }
      }
      printf("%s\n",testrlt);
      if (test_status)
      exit(0);
      else
      exit(1);
    }
    else
    {
      help();
      exit(1);
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -