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

📄 commplus.h

📁 Borland c++编写
💻 H
字号:

  /* CommPlus(TM) function heading files */

  #define _CP_BIOS_INT  0xe8

  #define _GET_MODE     0x81
  #define _SET_MODE     0x82
  #define _GET_SNO      0x83
  #define _SET_SNO      0x84

  #define _ENA_RX       0x85
  #define _DIS_RX       0x86

  #define _PUT_PAK      0x87
  #define _GET_PAK      0x88

  #define _PUT_AUX      0x89
  #define _PRE_GET_AUX  0x8a
  #define _GET_AUX      0x8b
  #define _IMD_GET_AUX  0x8c
  #define _SELECT_PORT  0x8d

  #define _BlkGetAux    0x8e;
  #define _BlkPutAux    0x8f;
  #define _GetNinthBit  0x90;
  #define _PutNinthBit  0x91;


  #define _CP_OS_INT    0x0e7

  #define _SET_WAIT_MD  0x80
  #define _OPEN_EXF     0x81
  #define _READ_EXF     0x82
  #define _WRT_EXF      0x83
  #define _CLOS_EXF     0x84

  #define _COMT_REQ     0x85
  #define _GET_REQ      0x86
  #define _REP_REQ      0x87

  #define _TX_FILE      0x88
  #define _RX_FILE      0x89
  #define _EXF_SERV     0x8a
  #define _EXF_PUT      0x8b
  #define _EXF_GET      0x8c


  #define _WRT_REQ      1
  #define _READ_REQ     2
  #define _LST_REQ      3
  #define _DEL_REQ      4
  #define _SNO_REQ      5
  #define _SPC_REQ      6
  #define _MDIR_REQ     7  (在 HT2800上有效)
  #define _RDIR_REQ     8  (在 HT2800上有效)
  #define _LSTN_REQ     9  (在 HT2800上有效)
  #define _STM_REQ      10 (在 HT2800上有效)

  #define _REJECTED      -2
  #define _READ         0
  #define _WRITE        1

  #define _PAK_MODE     2
  #define _AUX_MODE     3

  #define _par_EVEN     0x80
  #define _par_ODD      0
  #define _mod_STD      0
  #define _mod_7D1P     0x10
  #define _mod_8D1P     0x30
  #define _mod_7D       0x40

  #define _NOT_SLNT     1
  #define _SLNT         0
  #define _IN_CHI       0
  #define _IN_ENG       2

  typedef struct {
    unsigned char ReqDescLen;
    char ReqDescStr[257];
  } REQ_DESC;

  typedef struct {
    unsigned char ShowInfor;
    unsigned char Language;
    char far *Buffer;
    unsigned int BufferSize;
    char far *Localf;
    char far *Remotef;
    unsigned int ValidSNO;
  } FCOM_PARA;


  #ifndef __COMMPLUS
    extern far int  pascal InstallComPls(unsigned char CommPort);
    extern far int  pascal UninstComPls(void);

    extern int  ComPlsInstalled(void);

  /*
     取得当前通信口、工作模式和波特率。
    参数:  
               WorkMode
               CommPort
	       BaudRate
     返回参数: 
               WorkMode     工作模式
                 _PAK_MODE  数据包传送/接收方式
                 _AUX_MODE  字符流传送/接收方式
               CommPort     当前通信口
                 0          串行口1(COM1)
                 1          串行口2(COM2)
               BaudRate     当前波特率
                 150        150bps 
                 300        300bps
                 600        600bps
                 1200       1200bps
                 2400       2400bps
        		 4800       4800bps
                 9600       9600bps
                 19200      19200bps
                 38400      38400bps
                 57600      57600bps
                 0fff0h     115200bps  (在 HT2800上有效)
 */
 
   extern void GetCommMode(unsigned char far *WorkMode,
                            unsigned char far *CommPort,
		            unsigned int far *BaudRate);



  /*  
    设置通信口、工作模式和波特率。
   参数:  
        WorkMode    工作模式
          _PAK_MODE                         2     数据包传送/接收方式
          _AUX_MODE                         3     字符流传送/接收方式 8N1
          _AUX_MODE+_mod_8D1P+_par_ODD      51    字符流传送/接收方式 8O1
          _AUX_MODE+_mod_8D1P+_par_EVEN     179   字符流传送/接收方式 8E1
	      _AUX_MODE+_mod_7D1P+_par_ODD      19    字符流传送/接收方式 7O1
          _AUX_MODE+_mod_7D1P+_par_EVEN     147   字符流传送/接收方式 7E1
          _AUX_MODE+_mod+7D                 67    字符流传送/接收方式 7N1
          _AUX_MODE+_mod_8D1P+_mod_7D       115   字符流传送/接收方式 9N1

          (9N1 仅适用于HT1820,在 HT2800上无效 !)

        CommPort     当前通信口
          0          串行口1(COM1)
          1          串行口2(COM2)
        BaudRate     当前波特率
          150        150bps
          300        300bps
          600        600bps
          1200       1200bps
          2400       2400bps
          4800       4800bps
          9600       9600bps
          19200      19200bps
          38400      38400bps
          57600      57600bps
          0fff0h     115200bps   (在 HT2800上有效)
    返回参数:
    函数值:  
	       0           设置成功
               4           非法模式
               5           非法波特率
 */

   extern int  SetCommMode(unsigned char WorkMode,
                            unsigned char CommPort,
                            unsigned int BaudRate);




  /*   
    取得机器系列号。
   参数:     
               无 
    返回参数: 
    函数值:
	     机器系列号
  */ 
 
    extern unsigned int GetSerialNo(void);



  /*
    设置机器系列号。
   参数:  
              SerialNo   机器系列号
                 机器系列号的范围在 0 至 65535 之间
    返回参数:

*/ 


    extern void SetSerialNo(unsigned int SerialNo);




  /*
    允许串行口接收具指定系列号的机器发送来的数据。
   参数:  
              SerialNo   机器系列号
               机器系列号的范围在 0 至 65535 之间
    返回参数:

    【注释】  机器系列号为零表明允许接收任何机器发送来的数据。
              字符流工作方式下机器系列号无意义。
              发此调用将清除数据包和字符流缓冲区内的所有数据。


  */ 

    extern void EnableRx(unsigned int RxSerialNo);



  /*   
    禁止串行口接收任何数据。
   参数:     
               无 
    返回参数: 
  */ 

    extern void DisableRx(void);



  /* 
    数据包传送/接收方式下接收数据
   参数:     
	       Buffer       数据包缓冲区指针 
    返回参数: 
    函数值:
              0            没有接收到任何数据包
               大于 0       数据包长度(字节)
               小于 0       接收到错误数据包个数(的相反数)


  */ 


    extern int  RxPackage(unsigned char far *Buffer);


  /* 
    数据包传送/接收方式下发送数据包。
   参数:     
               Buffer       数据包缓冲区指针 
	       BufLength    数据包长度
    返回参数: 
    函数值:
              0            发送成功
               1            通信超时
               2            链路错误
               3            数据包过长
               4            非法工作模式(当前工作模式不是数据包方式)
   【注释】   最大数据包长度为 512 个字节。
  
  */ 

   extern int  TxPackage(unsigned char far *Buffer, unsigned int BufLength);



  /* 
    字符流传送/接收方式下发送字符。
   参数:
               AuxByte      被发送的字符
    返回参数: 
    函数值:
              零           发送成功
               非零         当前工作方式不是字符流传送/接收方式
  */ 
 
    extern int  PutAuxByte(unsigned char AuxByte);



  /*
    字符流传送/接收方式下取得字符接收状态。
   参数:     
               AuxByte      接收字符
               Status       接收状态
    返回参数: 
    	       AuxByte      返回字符
               Status       返回状态
    函数值:
              零            未接收到任何字符
               非零          已接收到字符
  
  【注释】  该字符并未由字符流缓冲区中读取出来。
  */ 

    extern int  AuxByteExist(unsigned char far *AuxByte,
                             unsigned char far *Status);



  /*
    字符流传送/接收方式下读取字符。
   参数:     
               AuxByte      接收字符
               Status       接收状态
    返回参数:
	           AuxByte      返回字符
	           Status       返回状态
    函数值:
	          零           接收到字符
	           非零         当前工作方式不是字符流传送/接收方式
			                或因按ESC(ON)键中断退出

   【注释】  该字符已从字符流缓冲区中读取出来。

 */

    extern int  GetAuxByte(unsigned char far *AuxByte,
			   unsigned char far *Status);



  /*
    取得字符接收状态并读取已接收到的字符
   参数:
	       AuxByte      接收字符
	       Status       接收状态
    返回参数:
	       AuxByte      返回字符
	       Status       返回状态
    函数值:
	      零           未接收到任何字符
	       非零         已接收到字符

    【注释】  该字符已从字符流缓冲区中读取出来。

 */

    extern int  ExistAuxBGot(unsigned char far *AuxByte,
			     unsigned char far *Status);


    extern void SelectPort(unsigned char port);

    extern unsigned int GetAuxBlock(char _far *buffer, unsigned int buffsize,
			unsigned int waitsec);

    extern unsigned int PutAuxBlock(char _far *buffer, unsigned int buffsize);

    extern unsigned char GetAuxNinthBit(void);

    extern void PutAuxNinthBit(unsigned char NinthBit);

  /*
    文件通信过程中关闭超时检测开关。
   参数:
    返回参数:
   【注释】  当打开超时检测开关时, 一旦数据包超过其最大可能传输延误二十秒后
             仍未到达,文件通信自动中断并返回超时错误。
        在文件通信过程中如无必需的长时间延误,建议打开超时检测开关以避
        免因链路故障导致的死等。
 */ 

    extern void DisableTimeOut(void);



  /*
    文件通信过程中打开超时检测开关。
   参数:     
    返回参数: 
   【注释】  当打开超时检测开关时, 一旦数据包超过其最大可能传输延误二十秒后
             仍未到达,文件通信自动中断并返回超时错误。
        在文件通信过程中如无必需的长时间延误,建议打开超时检测开关以避
        免因链路故障导致的死等。
 */ 

    extern void EnableTimeOut(void);



  /*
    数据包通信方式下按读/写请求打开外部文件。

     参数: 
               OpenMode      打开方式
                             _READ  读外部文件
                             _WRITE 写外部文件
               ValidSNo      对方允许系列号
               FileName      文件名字符串
               ExfAttr       文件属性
               ExfSize       文件大小
               ExfStamp      文件时间(按MS-DOS文件时间格式存放)
               theOthSNo     对方实际系列号
   【注释】依读请求打开外部文件时
          输入参数为:
          对方允许系列号 用来指定通信对方所必须具有的机器系列号,
                 为零时表示可以与任意机器通信。
         文件名字符串    以字符*开始的字符串表明读取任意文件,否则
                  对方传来的文件必须具有与指定字串相同的名字。
              返回值为:
                 文件名字符串  对方传来的文件名
                 文件属性        对方传来的文件属性
                 文件时间        对方传来的文件时间
                 文件大小        对方传来的文件大小
                 对方实际系列号  对方实际具有的系列号
               〖注意〗:如果对方未设置文件属性、时间或大小,则返回的可能是随机值

            依写请求打开外部文件时  
        输入参数为:
          对方允许系列号 用来指定通信对方所必须具有的机器系列号
                 为零时表示可以与任意机器通信。
         文件名字符串    指定外部文件所用的文件名, 对方必须指定相同的文件名或指定*字符串
                 文件属性        文件属性
                 文件时间        文件时间
                 文件大小        文件大小
            返回值为:
                 对方实际系列号  对方实际具有的系列号

    返回值:  0   打开成功
              1   通信超时
              2   链路错误
              6   通信被取消
              7   文件名不匹配
              8   非法方式
              10  外部文件已经被打开
              11  非法文件名
 
  */

    extern int  ExfOpen(unsigned char OpenMode, unsigned int ValidSNo,
                        char far *FileName,
                        unsigned char far *ExfAttr,
                        unsigned long far *ExfSize,
                        unsigned long far *ExfStamp,
                       unsigned int far *theOthSNo);



 /*
    数据包通信方式下读外部文件。

   参数: 
              RdBuff       读入缓冲区地址
 

⌨️ 快捷键说明

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