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

📄 exfserv.c

📁 HT系列掌机部分功能测试程序(含源码)
💻 C
字号:
/* CommPlus Server for PC
   project file should include:
        Intcaptr.asm
        commplus.c
        cplib.lib
   compiled with     NO STACK WARNING & NO REGISTER VALUABLE
*/

  #include <conio.h>
  #include <stdio.h>
  #include <commplus.h>
  #include <dos.h>
  #include <string.h>
  #include "intcaptr.h"

  #define _BUFF_SIZE 4096

  int  ParseComLn(int  argc, char *argv[],
		  unsigned char *CommPort,
		  unsigned int  *ServerID,
		  unsigned long *BdRtInput,
                  char *filename);

  void TimeStamp(void);

  void linefeed(void);

  char filename[64] = "";

  void linefeed()

  {
    _asm {
      mov  ax, 0e0ah
      int  10h
      mov  ax, 0e0dh
      int  10h
    };
  }

  void TimeStamp()

  {
    struct dosdate_t d;
    struct  time t;

    _dos_getdate(&d);
    gettime(&t);
    putch('\r');
    cprintf("%d/%d/%d %2d:%02d ", d.year, d.month, d.day, t.ti_hour, t.ti_min);
  }

  int  ParseComLn(int  argc, char *argv[],
		  unsigned char  *CommPort,
		  unsigned int   *ServerID,
		  unsigned long  *BdRtInput,
                  char *filename)

  {
    int  i, result=1;
    unsigned char Mode, Port;
    unsigned int  SNo;
    unsigned long BdRttmp;
    unsigned int BdRt;

    if (ComPlsInstalled())
       {
        GetCommMode(&Mode, &Port, &BdRt);
        BdRttmp=BdRt;
        SNo=GetSerialNo();
       }
    else
       {
        Port=SNo=0;
        BdRttmp=38400;
       }

    for (i=1; i<argc; i++)
        switch (argv[i][0])
               {
        	    case 'c': ;
	            case 'C': if (argv[i][1]=='1')
                             Port=0;
		                  else if (argv[i][1]=='2')
                             Port=1;
		                  break;
	            case 'b': ;
	            case 'B': sscanf (&argv[i][1], "%lu", &BdRttmp);
                          break;
	            case 's': ;
                case 'S': sscanf (&argv[i][1], "%d", &SNo);
                          break;
                case 'f': ;
                case 'F': sscanf (&argv[i][1], "%64s", filename);
                          break;
                case '?': result=0;
                          linefeed();
                          cprintf("Exfile Server Version 3.0 (C) 2000, LandTech Development Co.");
                          linefeed();
		                  cprintf("Syntax: EXFSERV [bBaudRate] [{c1|c2}] [sServerID] [fFileName]");
                          linefeed();
		                  cprintf("BaudRate: 9600 19200 38400 57600 or 115200, default is 38400");
                          linefeed();
		                  cprintf("c1: use COM1  c2: use COM2");
                          linefeed();
		                  cprintf("ServerID: unsigned int for server ID, default is current");
                          linefeed();
		                  cprintf("FileName: log file for the server to write to");
                          linefeed();
                          break;
               }
        *CommPort=Port;
        *BdRtInput=BdRttmp;
        *ServerID=SNo;
        return(result);
  }

  int main(int  argc, char *argv[])
  {

   unsigned char CommPort;
   unsigned int  ServerID;
   unsigned int  BaudRate;
   unsigned long BdRtInput;
   char          Buffer[_BUFF_SIZE];

   directvideo=0;
   if (ParseComLn(argc, argv, &CommPort, &ServerID, &BdRtInput, filename))
      {
       if (!ComPlsInstalled())
          if (InstallComPls(CommPort) == 2)
             {
              cprintf("BIOS Setting for COM1 or COM2 Error!!!!\r\n\n");
              return 0;
             }

       if (BdRtInput == 115200)
          BaudRate=0x0fff0;
       else BaudRate= (unsigned int )
          BdRtInput;

       BaudRate=0x0fff0;
       if (!SetCommMode(_PAK_MODE, CommPort, BaudRate))
          {
           EnableRx(0);
           if (strlen(filename)!=0)
              {
               bPointer = 0;
               oldInt10 = _dos_getvect(0x10);
               _dos_setvect(0x10, Int10);
              }
           linefeed();
           cprintf("Exfile Server Version 3.0 (C) 2000, LandTech Development Co.");
           linefeed();
           cprintf("COM%u avaliable with baud rate %lu", CommPort+1, BdRtInput);
           linefeed();
           SetSerialNo(ServerID);
           cprintf("Server %d started...", ServerID);
           linefeed();
           fServer(CommPort, BaudRate, _NOT_SLNT, _IN_ENG, _BUFF_SIZE, Buffer);
           linefeed();
           cprintf("Server %d downed.", ServerID);
           linefeed();
           if (strlen(filename)!=0)
              _dos_setvect(0x10, oldInt10);
           DisableRx();
          }
       else
          cprintf("%d is an invalid baud rate for CommPlus.\n\r", BaudRate);
       UninstComPls();
      }
   return 0;
  }

⌨️ 快捷键说明

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