Ir ao conteúdo
  • Cadastre-se

Turboc++ programa não funciona na porta serial e dos.


Posts recomendados

Bom dia, o problema é o seguinte: o programa compilado funciona perfeitamente rodando no windows xp porém quando roda em MSDos 6.22 não funciona, foi compilado no turboc 3.0,

Gostaria de saber se o dos ou o turboc não tem suporte a essa placa, processador athlon xp 3000+, e qual seria a solução. 

 

segue o programa fonte:

 

#include<stdio.h>
#include<conio.h>
#include<bios.h>
#define SETTINGS (_COM_9600 | _COM_CHR8 | _COM_EVENPARITY | _COM_STOP1) /* baud rate = 9600, 8 data bits, even parity bit, 1 stop bit */
/////////////////////////////////// protótipos///////////////////////////////////
void display(char *, int);
/////////////////////////////////// inicio do programa ///////////////////////////////////
void main(void)
{
     unsigned in, out, status, count_in=0, count_out=0;
    int port, i;
     char msg_in[75], msg_out[75];
     textbackground(BLACK);
     clrscr();
     gotoxy(3, 1);
     textcolor(GREEN);
     cprintf("Full-Duplex PC para PC Communicação via RS-232 Serial Port usando 'C':Chatting");
     gotoxy(7, 3);
     textcolor(LIGHTCYAN);
     gotoxy(15, 5);
     textcolor(LIGHTGRAY);
     cprintf("Selecione a Porta (Digite '0' para COM1 ou '1' para COM2) : ");
     scanf("%d",&port);
     textcolor(LIGHTGRAY + BLINK);
     cprintf("\n Pressione ESC para sair, Pressione Enter para enviar a mensagem de saída");
     gotoxy(10, 9);
     textcolor(MAGENTA + BLINK);
    putch(1);
     cprintf("-Mensagem de saída");
     gotoxy(53, 9);
     textcolor(BLUE + BLINK);
     putch(1);
     cprintf("-Mensagem recebida");
     window(10, 11, 70, 23);
     textbackground(YELLOW);
     clrscr();
 /* Exibição da Comunicação */
     window(1, 25, 80, 25);
     textbackground(BLUE);
     textcolor(YELLOW);
     clrscr();
 /* Entrada de texto */
     window(1, 1, 80, 25);
     gotoxy(2, 25);
     putch(2);
     _bios_serialcom(_COM_INIT, port, SETTINGS);
     window(4, 25, 80, 25);
///////////////////////////////////inicio do programa principal ///////////////////////////////////
   for(;;)
   {
     status=_bios_serialcom(_COM_STATUS, port, 0);
     if (status & 512)
      printf("\n\t\a Overrun Error");
     if (status & 1024)
      printf("\n\t\a Parity Error");
     if (status & 2048)
      printf("\n\t\a Framing Error");
     if(status & (512|1024|2048)) /* if any error */
     break;
 
    if(status & 256) /* if data ready */
     {
      if((out=_bios_serialcom(_COM_RECEIVE, port, 0) & 255)!=0)
        msg_in[count_in++] = out;
      if(out=='\r')
        {
        display(msg_in, BLUE);
        count_in=0;
        gotoxy(count_out+1, 1);
        }
     }
      
     if(kbhit()) /* if a keystroke is currently available */
     {
       gotoxy(count_out+1, 1);
       in=getche(); /* get a character by echoing onto the screen */
       if(in==27) /* if ESC */
        break;
       if(in=='\b' && count_out>0)
        {
        count_out=count_out-2;
        cprintf(" \b");
        }
        else
        msg_out[count_out]=in;
       if(count_out==74)
        {
         in='\r';
         msg_out[74]='\r';
        }
        count_out++;
        
       if(in=='\r')
        {
         display(msg_out, MAGENTA);
         for(i=0; i<count_out; i++)
         _bios_serialcom(_COM_SEND, port, msg_out);
         count_out=0;
         clrscr();
        }
     }
   }
}
/////////////////////////////////// funções////////////////////////////////////////////
void display(char arr[75], int COLOR)
{
 static int line=1;
 int j;
 window(10, 11, 70, 23);
 gotoxy(1, line);
 textcolor(COLOR);
 textbackground(YELLOW);
 cprintf("\n");
 putch(1);
 for(j=0; arr[j]!='\r'; j++)
 putch(arr[j]);
 line=wherey();
 window(4, 25, 80, 25);
 textcolor(YELLOW);
 textbackground(BLUE);
}
///////////////////////////////////

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...