Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rui Baptista

Porta serial - Acesso

Recommended Posts

Boa tarde,

 

Tenho um curto periodo em programação em C++. Estou tentando cessar a porta serial para enviar um byte. Ainda não tenho o circuito integrado mas estou a tratar dele xD.

Bem mas a situação é: Qual o codigo para enviar para a porta serial??

Bem antes de andar a vasculhar no google sobre o assunto comecei por estudar a porta paralela pois deve ter algumas semelhanças.

Eu andei aqui a procurar no forum e encontrei mesmo aquilo que queria em C (não ah qualquer problema) e é o seguinte:

 

#include <dos.h>
#include <conio.h>
#define LCR (com_base+3)
#define LSR (com_base+5)

int com_base;

void inicializa(int baud, int config)
{
   unsigned int divisor;
   divisor=(115200l)/baud;
   outportb(LCR, 0x80); // Liga o bit de acesso ao divisor
   outportb(com_base, divisor); // Escreve o divisor no 8250
   outportb(LCR, config); // Configura a porta serial
}

void main()
{
   int letra;

   com_base=0x3f8;

   inicializa(9600,3);

   if(inportb(LSR) & 1) // Testa se recebeu um byte da porta serial
   {
      putchar(inportb(com_base)); // Escreve o byte lido
   }

   outportb(com_base, 255); //transmite

}

Bem agora a questao: Isto funciona??

Tudo o que procurei no google é um código muito mais extenso. Será que alguem me pode experimentar este código??

 

Com melhores cumprimentos,

Rui Baptista

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Rui

 

Cara, eu não manjo muita coisa da porta serial...

Mas acredito que ler e escrever nela seja parecido com input/output de arquivos em baixo nível.

 

Se você ja fez uma busca no google, provavelmente encontrou isso:

http://mc-computing.com/languages/SerialIO.htm#C++Builder

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal! alguém tem a biblioteca bios.h??? É que no código que o VictorCacciari disponibilizou necessita dessa biblioteca e não a encontro!! e o que encontro da-me uma data de erros!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rui, fiquei curioso também com a bios.h, achei interessante e resolvi pesquisar sobre ela,

pelo que parece é uma biblioteca antiga (windows 98) e descontinuada, para acesso da porta serial, em windows, use:

http://msdn.microsoft.com/en-us/library/ms810467.aspx

http://www.lvr.com/serport.htm

http://cboard.cprogramming.com/cplusplus-programming/47870-simple-rs232-question.html

 

Espero que ajude!

 

Abraços

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro e o segundo link não percebi nada! xDxD

Mas o terceiro entendi!! mas está-me a dar um problema ao compilar:

 

1>serial.obj : error LNK2019: unresolved external symbol "public: int __thiscall SFile::ReadByte(unsigned char &)" (?ReadByte@SFile@@QAEHAAE@Z) referenced in function _main

1>serial.obj : error LNK2019: unresolved external symbol "public: int __thiscall SFile::Open(unsigned int,unsigned long)" (?Open@SFile@@QAEHIK@Z) referenced in function _main

1>serial.obj : error LNK2019: unresolved external symbol "public: void __thiscall SFile::Close(void)" (?Close@SFile@@QAEXXZ) referenced in function "public: virtual __thiscall SFile::~SFile(void)" (??1SFile@@UAE@XZ)

1>C:\~~\~~\~~\Visual Studio 2008\~~\~~\Debug\porta 0x80.exe : fatal error LNK1120: 3 unresolved externals

Alguém pode experimentar para ver se conseguem compilar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.