📄 s1.cpp
字号:
/**************************************************************************************
/ SBS Science & Technology CO.,LTD of shanghai.
/ http://www.sbs.com.cn
/
/ Compiler: Turboc C++ (r) version 3.0
/
/ Last update: December 26, 2005
/
/ This file contains procedure and functions used by the sample programs
/ provided with your serial port The procedures are well documented and should
/ be helpful in learning how to program your serial port
/**************************************************************************************/
#include <stdlib.h>
#include <dos.h>
#include <process.h>
#include <conio.h>
#include <bios.h>
#include <ctype.h>
#include <stdio.h>
#include <fcntl.h>
//#include "serial.h"
#include "s1.inc"
/****************************************************************************************/
/*********************************** 主函数 *******************************************/
/****************************************************************************************/
void main()
{
int madd;
long int madld;
for(;;){
printf("%s",strings);
textcolor(132);
cprintf("1\b");
Inchar=getch();
textcolor(4);
switch(Inchar){
case 27:
window(1,1,80,25);
textbackground(0);
textcolor(7);
clrscr();
exit(0);
case '2':
{
cprintf("%c",Inchar);
test2in();
do{
Init(Saddr,0,Sbps,0x00);
Init(Raddr,1,Rbps,0x00);
pesck();
enableports(Raddr,Rirq,1,0x00);
flag=0;
buffin=buffout=0;
for(;;){
prch();
if(kbhit()!=0){
Inchar=getche();
outportb(Saddr,Inchar);
if(Inchar==13) cprintf("\n");
x2=wherex();y2=wherey();
delay(5);
if(Inchar==27||Inchar==60)
{disableports(Raddr,Rirq);
break;}
}
}
madd=Saddr;Saddr=Raddr;Raddr=madd;
madd=Sirq;Sirq=Rirq;Rirq=madd;
madld=Sbps;Sbps=Rbps;Rbps=madld;
buffin=buffout=0;
}while(!(Inchar==27));
break;}
case '3':
{
cprintf("%c",Inchar);
test2in();
do{
Init(Saddr,0,Sbps,0xcf);
Init(Raddr,1,Rbps,0xcf);
pesck();
enableports(Raddr,Rirq,1,0xcf);
buffin=buffout=0;
flag=0;
k=0;
for(;;){
Fprch();
if(flag==0){
for(ff=0;ff<14;ff++);
{ Inchar=str[k++];
if(k>78) k=0;
outportb(Saddr,Inchar);
cprintf("%c",Inchar);
delay(5); }}
x2=wherex();y2=wherey();
if(kbhit()!=0){
Inchar=getch();
if(Inchar==60||Inchar==27)
{
disableports(Raddr,Rirq);
disableports(Saddr,Sirq);
break;}
}
}
madd=Saddr;Saddr=Raddr;Raddr=madd;
madd=Sirq;Sirq=Rirq;Rirq=madd;
madld=Sbps;Sbps=Rbps;Rbps=madld;
}while(!(Inchar==27));
break;}
case '4':
{
printf("%c\n",Inchar);
Raddr=0x3f8;Saddr=0x2f8;
printf("default address COM1 0x3f8,COM2 0x2f8 (Y/N)?Y\b");
do{
Inchar=getch();
}while(!(Inchar=='Y'||Inchar=='y'||Inchar=='N'||Inchar=='n'||Inchar==13));
printf("%c\n",Inchar);
if(Inchar=='N'||Inchar=='n')
{
printf("Please setup COM1 and COM2 address(Hex):\n");
scanf("%x %x",&Raddr,&Saddr);
if(!(Raddr<=0x3ff&&(Raddr%8==0)))
Raddr=0x3f8;
if(!(Saddr<=0x3ff&&(Saddr%8==0)))
Saddr=0x2f8;
}
do{
printf("COM1 and COM2 address are %x and %x.\n",Raddr,Saddr);
testmodem();
printf("connect com1 and com2:\n");
printf("Press any key exit, but ENTER!");
Inchar=getch();
}while(Inchar==13);
break;}
case '5':
{
printf("%c",Inchar);
test2in();
rsdisableport(Saddr,Sirq);
rsdisableport(Raddr,Rirq);
do{
pesck();
// outportb(Saddr,6); //清除发送中断
// while((inportb(Raddr+5)&0x01)==1) //清除接受中断
// {inportb(Raddr);}
InitComPort(Raddr,Rirq,Rbps,1,0x00);
InitComPort(Saddr,Sirq,Sbps,2,0x00);
buffin=buffout=0;
flag=0;
sendflag=0;
k=0;
if(Sirq<8)
geninterrupt(Sirq+8); //触发一次发送中断
else
geninterrupt(Sirq+0x70-8);
for(;;)
{
sendprch();
prch2();
if(kbhit()!=0){
Inchar=getch();
if(Inchar==60||Inchar==27)
{
DisableComPort(Saddr,Sirq,2);
DisableComPort(Raddr,Rirq,1);
break;}
}
}
madd=Saddr;Saddr=Raddr;Raddr=madd;
madd=Sirq;Sirq=Rirq;Rirq=madd;
madld=Sbps;Sbps=Rbps;Rbps=madld;
}while(!(Inchar==27));
break;}
default:
{
cprintf("1");
test2in();
do{
pesck();
Init(Saddr,0,Sbps,0x00);
Init(Raddr,1,Rbps,0x00);
enableports(Raddr,Rirq,1,0x00);
buffin=buffout=0;
flag=0;
k=0;
for(;;){
prch();
Inchar=str[k++];
if(k>78) k=0;
outportb(Saddr,Inchar);
cprintf("%c",Inchar);
x2=wherex();y2=wherey();
delay(5);
if(kbhit()!=0){
Inchar=getch();
if(Inchar==60||Inchar==27)
{
disableports(Raddr,Rirq);
break;}
}
}
madd=Saddr;Saddr=Raddr;Raddr=madd;
madd=Sirq;Sirq=Rirq;Rirq=madd;
madld=Sbps;Sbps=Rbps;Rbps=madld;
}while(!(Inchar==27));
}
}
window(1,1,80,25);
textbackground(0);
textcolor(7);
clrscr();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -