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

📄 dser4_bp.cpp

📁 its creates virtual multi tasking i DOS
💻 CPP
字号:
/*******************************************************
 *                                                     *
 *  Program : DSER4_BP      Language : Borland C++     *
 *                                                     *
 *  Modified : 20 nov 2003                             *
 *                                                     *
 *  Copyright (c) 1988,2003, ORITECH    V 5.1          *
 *  All rights reserved.                               *
 *                                                     *
 *******************************************************
 *                                                     *
 *  DSER4_BP.CPP     Demo EasyTask       DPMI16        *
 *                                                     *
 *******************************************************/


#include <stdlib.h>
#include <stdio.h>
#include <graphics.h>
#include <dos.h>
#include <conio.h>
#include <string.h>
#include <float.h> 
#include <math.h> 
#include <time.h>
#include <malloc.h>
#include "etlib.h"

#define numIrq 7 // serial group number 

PMultiTask t1,t2,t3,t4,t5;
char s[50];
BOOL echo;  
char so[128];

void drawwindow(int x1,int y1,int x2,int y2,char *titre)
{
  int n;
  
  window(x1,y1,x2,y2+1);
  clrscr();
  gotoxy(1,1);
  sprintf(so,"%c",201); 
  cprintf(so);
  for (n=x1+1;n<=x2-1;n++)
  {
    sprintf(so,"%c",205);
    cprintf(so);
  }
  sprintf(so,"%c",187);
  cprintf(so);
  for (n=2;n<=y2-y1;n++)
  {
    gotoxy(1,n); 
    sprintf(so,"%c",186);
    cprintf(so);
    gotoxy(x2-x1+1,n); 
    sprintf(so,"%c",186);
    cprintf(so);
  }
  gotoxy(1,y2-y1+1);
  sprintf(so,"%c",200);
  cprintf(so);
  for (n=x1+1;n<=x2-1;n++) 
  {
    sprintf(so,"%c",205);
    cprintf(so);
  }
  sprintf(so,"%c",188);
  cprintf(so);
  gotoxy(((x2-x1) / 2)-(strlen(titre) / 2),1);
  sprintf(so,"%s",titre);
  cprintf(so);
  window(x1+1,y1+1,x2-1,y2-1);
}
  
void receive1(pvoid, pvoid)
{
  int err;
  
  pausemode(MTT);
  drawwindow(1,6,80,10,"RECEIVE COM1");
  do
  {
    sprintf(so,"%c",getserial(numIrq,1,pause,0,err));
    cprintf(so);
    pause();
  } while (TRUE);
}

void receive2(pvoid, pvoid)
{
  int err;
  
  pausemode(MTT);
  drawwindow(1,11,80,15,"RECEIVE COM2");
  do
  {
    sprintf(so,"%c",getserial(numIrq,2,pause,0,err));
    cprintf(so);
    pause();
  } while (TRUE);
}

void receive3(pvoid, pvoid)
{
  int err;
  
  pausemode(MTT);
  drawwindow(1,16,80,20,"RECEIVE COM3");
  do
  {
    sprintf(so,"%c",getserial(numIrq,3,pause,0,err));
    cprintf(so);
    pause();
  } while (TRUE);
}

void receive4(pvoid, pvoid)
{
  int err;
  
  pausemode(MTT);
  drawwindow(1,20,80,24,"RECEIVE COM4");
  do
  {
    sprintf(so,"%c",getserial(numIrq,4,pause,0,err));
    cprintf(so);
    pause();
  } while (TRUE);
}

void emit(pvoid, pvoid)
{
  BOOL keyfunc,upper;
  char keychar;
  char s[256];
  int n;
  int err;
  
  pausemode(MTT);
  drawwindow(1,1,80,5,"EMIT COM1 + COM2 + COM3 + COM4");
  strcpy(s,"Channel 0.");
  for (n=1;n<=20;n++)
  {
    writeserial(numIrq,1,"Channel 1.",pause,0,err);
    writeserial(numIrq,2,"Channel 2.",pause,0,err);
    writeserial(numIrq,3,"Channel 3.",pause,0,err);
    writeserial(numIrq,4,"Channel 4.",pause,0,err);
    sprintf(so,"%s",s);
    cprintf(so);
    pause();
  }
  upper = FALSE;
  do
  {
    areadkey(&keyfunc,&keychar,upper);
    if (keychar==27) killalltasks();
    else
    {
      putserial(numIrq,1,keychar,pause,0,err);
      putserial(numIrq,2,keychar,pause,0,err);
      putserial(numIrq,3,keychar,pause,0,err);
      putserial(numIrq,4,keychar,pause,0,err);
    }
    sprintf(so,"%c",keychar);
    cprintf(so);
    if (keychar==13)
    {
      sprintf(so,"%c",10);
      cprintf(so);
      putserial(numIrq,1,10,pause,0,err);
      putserial(numIrq,2,10,pause,0,err);
      putserial(numIrq,3,10,pause,0,err);
      putserial(numIrq,4,10,pause,0,err);
    }
  } while (TRUE);
}

void main(void)
{
  int err;
  
  etker_init();
  etser_init();
  pausemode(MTT);
  clrscr();
  //
  openserial(numIrq,4,256,256,0x2A0,err);  // 4 port serial card
  //
  resetserial(numIrq,1,1200,7,1,MT_EVENPARITY,smode_dtr + smode_rts,err);
  //
  resetserial(numIrq,2,1200,7,1,MT_EVENPARITY,smode_dtr + smode_rts,err);
  //
  resetserial(numIrq,3,300,7,1,MT_EVENPARITY,smode_dtr + smode_rts,err);
  //
  resetserial(numIrq,4,600,7,1,MT_EVENPARITY,smode_dtr + smode_rts,err);
  //
  t4 = newtask(receive4,8000,1,MT_CHILD,NULL,0,NULL);
  t3 = newtask(receive3,8000,1,MT_CHILD,NULL,0,NULL);
  t2 = newtask(receive2,8000,1,MT_CHILD,NULL,0,NULL);
  t1 = newtask(receive1,8000,1,MT_CHILD,NULL,0,NULL);
  t5 = newtask(emit,8000,1,MT_CHILD,NULL,0,NULL);
  waitnotask();
  //
  disposeserial();
}

⌨️ 快捷键说明

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