📄 nulllib.c
字号:
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define STX 0x02
#define ETX 0x03
#define NAK 0x15
#define EOT 0x04
#define ACK 0x06
#define ESC 27
extern long HN_total_byte;
extern long HN_pack_cnt;
extern long HN_timeout;
extern int HN_ESC_delay,HN_NAK_delay,HN_disp_cmd,HN_ACK_delay;
extern int HN_enable_ESC,HN_COM_para[4],HN_pack_size;
extern int HN_retry,HN_dnl_disp,HN_upl_disp;
extern int HN_dnl_sub(char *);
extern int HN_upl_sub(char *);
extern int far serinit(int portn, int confign);
extern int far serclose(int portn);
extern int far sersend(int portn, int char_c);
extern int far serrecv(int portn);
union REGS regs;
struct SREGS segregs;
int HN_FILE1(char,int,char *);
int HN_set_tab(char,int,unsigned char *);
int HN_set_tab1(char,int,unsigned char *,int);
int HN_read_pack(FILE *,unsigned char *);
int HN_ret_resp1(unsigned char);
unsigned char HN_send_485_cmd(char,unsigned char *,unsigned char *);
unsigned char HN_send_esc(char,unsigned char *);
unsigned char HN_send_485_cmd1(char,unsigned char *,unsigned char *,int);
unsigned char HN_send_esc1(char,unsigned char *,int);
unsigned char HN_resp_485(unsigned char *);
int HN_unpack(unsigned char *,unsigned char *);
int HN_pack(unsigned char *,int,unsigned char *); // 3.0
int HN_isprint1(unsigned char);
int CURR_PORT;
void HN_time_delay(int period)
{
union REGS regs;
long t_start,t_stop,td,i;
regs.h.ah = 0x2c; intdos(®s,®s);
t_start = regs.h.dh * 100 + regs.h.dl;
do {
regs.h.ah = 0x2c; intdos(®s,®s);
t_stop = regs.h.dh * 100 + regs.h.dl;
td = t_stop - t_start;
if (td < 0) td = 6000+td;
for (i=0;i<3600;i++) i = i;
} while (td < period);
return;
}
int HN_parameter(int port,int baud,int stop,int data,int parity)
{
int ret;
if ((port < 1) || (port > 4)) return(2); // if out of port range exit
if ((baud < 0) || (baud > 9)) return(2);
HN_COM_para[port-1] = baud << 4;
if (stop == 0) ret=ret;
else if (stop == 1) HN_COM_para[port-1] |= 0x02;
else return(2);
if (data == 0) ret=ret;
else if (data == 1) HN_COM_para[port-1] |= 0x01;
else return(2);
if (parity == 0) ret=ret;
else if (parity == 1) HN_COM_para[port-1] |= 0x04;
else if (parity == 2) HN_COM_para[port-1] |= 0x0c;
else return(2);
return(0);
}
int HN_poll(int port,unsigned char *str,int *len)
{
unsigned char ch,buff[256];
int nak_cnt,tag=1;
nak_cnt = 0;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
tag = 0;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
ch = HN_resp_485(buff); // 3.0
serclose(CURR_PORT);
HN_time_delay(HN_ESC_delay);
switch(ch)
{
case 0 : *len = strlen(buff);
strcpy(str,buff);
return(0);
default : return(HN_ret_resp1(ch));
}
}
int HN_coldstart(int port)
{
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
HN_send_esc('H',""); // 3.0
serclose(CURR_PORT);
//return(0);
return(-1); //indicate nothing, because we don't know if it succeed or not
}
int HN_power_save_on(int port)
{
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
sersend(CURR_PORT,0);
HN_send_esc('8',""); // 3.0
serclose(CURR_PORT);
return(0);
}
int HN_power_save_off(int port)
{
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
sersend(CURR_PORT,0);
HN_send_esc('7',""); // 3.0
serclose(CURR_PORT);
return(0);
}
int HN_warmstart(int port)
{
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
HN_send_esc('A',""); // 3.0
serclose(CURR_PORT);
//return(0);
return(-1);
}
int HN_320_record(int port,unsigned char *str)
{
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
HN_send_esc('?',str); // 3.0
serclose(CURR_PORT);
return(0);
}
int HN_send_data(int port,unsigned char *str,int len)
{
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
HN_send_esc('0',str); // 3.0
serclose(CURR_PORT);
//return(0);
return(-1);
}
int HN_directory(int port,char *str)
{
unsigned char temp_buff[256],cc;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd('D',"",temp_buff); // 3.0
serclose(CURR_PORT);
switch (cc)
{
case 0 : strcpy(str,temp_buff+2); return(0);
default : return(HN_ret_resp1(cc));
}
}
int HN_sendback(int port,unsigned char *stro,unsigned char *stri)
{
unsigned char temp_buff[256],cc;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd('9',stro,temp_buff); // 3.0
serclose(CURR_PORT);
stri[0] = 0;
switch (cc)
{
case 0 : strcpy(stri,temp_buff+2); return(0);
default: return(HN_ret_resp1(cc));
}
}
//
int HN_erase(int port,char *str)
{
return(HN_FILE1('E',port,str));
}
int HN_exec(int port,char *str)
{
return(HN_FILE1('X',port,str));
}
int HN_autoboot(int port,char *str)
{
return(HN_FILE1('O',port,str));
}
int HN_FILE1(char cmd,int port,char *str)
{
unsigned char cc;
unsigned char temp_buff[256];
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd(cmd,str,temp_buff); // 3.0
serclose(CURR_PORT);
switch (cc)
{
case 0 : switch(temp_buff[2])
{
case 00 : return(0);
case 01 : return(0x30);
case 02 : return(0x31);
default : return(5);
}
default : return(HN_ret_resp1(cc));
}
}
int HN_exec_file(int port,char *fname)
{
unsigned char tempbuff[256],cc;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd('I',"",tempbuff); // 3.0
serclose(CURR_PORT);
switch (cc)
{
case 0 : if (tempbuff[2] == 1) return(35);
strcpy(fname,tempbuff+2); return(0);
default: return(HN_ret_resp1(cc));
}
}
int HN_file_exist(int port,char *fname)
{
unsigned char tempbuff[256],cc;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd('J',fname,tempbuff); // 3.0
serclose(CURR_PORT);
switch (cc)
{
case 0 : if (tempbuff[2] == 0) return(0);
else return(0x30);
default : return(HN_ret_resp1(cc));
}
}
int HN_ram_size(int port,int *t_size,int *e_size,int *f_size)
{
unsigned char buf[256],cc;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd('G',"",buf); // 3.0
serclose(CURR_PORT);
*f_size = (buf[8]-'0')*100 + (buf[9]-'0')*10 + buf[10]-'0';
*e_size = (buf[5]-'0')*100 + (buf[6]-'0')*10 + buf[7]-'0';
*t_size = (buf[2]-'0')*100 + (buf[3]-'0')*10 + buf[4]-'0';
if (cc == 0) return(0);
return(cc);
}
int HN_ups(int port)
{
unsigned char temp_buff[256],cc;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd('F',"",temp_buff); // 3.0
serclose(CURR_PORT);
return(0);
}
int HN_exe_size(int port,int size)
{
unsigned char temp_buff[256],cc;
int i;
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
sprintf(temp_buff,"%3d",size);
for (i=0;i<3;i++) if (temp_buff[i] == ' ') temp_buff[i] = '0';
cc=HN_send_485_cmd('F',temp_buff,temp_buff); // 3.0
serclose(CURR_PORT);
switch (cc)
{
case 0: switch(temp_buff[2])
{
case 0 : return(0);
case 1 : return(0x40);
case 2 : return(0x41);
default : return(5);
}
default : return(HN_ret_resp1(cc));
}
}
int HN_keypad(int port,int status)
{
unsigned char temp_buff[256];
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
temp_buff[0] = status+'0';
temp_buff[1] = 0;
HN_send_esc('K',temp_buff); // 3.0
serclose(CURR_PORT);
return(0);
}
int HN_term_tab(int port,unsigned char *str)
{
return(HN_set_tab1('T',port,str,15));
}
int HN_comm_tab(int port,unsigned char *str)
{
return(HN_set_tab('C',port,str));
}
int HN_dev_tab(int port,unsigned char *str)
{
return(HN_set_tab('V',port,str));
}
int HN_bar_tab(int port,unsigned char *str)
{
return(HN_set_tab('B',port,str));
}
int HN_date_time(int port,char *str)
{
return(HN_set_tab('M',port,str));
}
int HN_password(int port,char *str)
{
return(HN_set_tab('P',port,str));
}
int HN_rec_tab(int port,char*str)
{
return(HN_set_tab('8',port,str));
}
int HN_key_alias(int port,char key,char type,char *alias)
{
unsigned char temp_buff[256];
sprintf(temp_buff,"%c%c%s",key,type,alias);
return(HN_set_tab('S',port,temp_buff));
}
int HN_set_tab(char cmd,int port,unsigned char *str)
{
unsigned char cc;
unsigned char temp_buff[256];
if ((port < 1) || (port > 4)) return(2); else CURR_PORT = port-1;
serinit(CURR_PORT,HN_COM_para[CURR_PORT]); // initial COM parameter
cc=HN_send_485_cmd(cmd,str,temp_buff); // 3.0
serclose(CURR_PORT);
switch (cc)
{
case 0 : switch(temp_buff[2])
{
case 00 : return(0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -