📄 commplus.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 + -