SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: xcotty en Lunes 21 de Octubre de 2002, 14:21

Título: Re: Puerto Serie
Publicado por: xcotty en Lunes 21 de Octubre de 2002, 14:21
¿Como puedo acceder al puerto serie de Windows? ¿Alguien tiene el código aunque sea en C?
Título: Puerto Serie
Publicado por: blas610 en Viernes 8 de Noviembre de 2002, 02:44
hey checa esta pagina ahí viene algo que te puede servir

http://www2.arnes.si/~sopecrni/ (http://www2.arnes.si/~sopecrni/)
Título: Re: Puerto Serie
Publicado por: Qiqe en Lunes 4 de Julio de 2005, 21:00
hola intente acceder a la pagina pero no me funciono me podeis dar la información para comicar en builder co el puerto serie muchas gracias
Título: Re: Puerto Serie
Publicado por: furiouslogic en Jueves 7 de Julio de 2005, 23:31
Hay varias formas de lograr esto. La primera es haciendo uso de las funciones API propias del sistema operativo.  Es bastante extenso de explicar pero puedes ayudarte descargando Windows Plattform SDK desde el site de Microsoft (es gratis). Alli tienes toda la documentacion necesaria y ejemplos sobre funciones API incluidas las de comunicacion serial.

Una segunda forma es usando llamadas IOCTL que si con cosa seria.  Si mal no recuerdo, Charles Petzold habla sobre eso en su clasico libro de C. Caray ahora hay ue hablar de memoria, eso tambien estaba en el site. (Hey Red, pasate un hosting de 10 GiB man, urgente)

Una tercera forma, la mas viable y facil, es utilizar una dll preparada para tal fin. Eso porque si tu programa corre bajo XP empezaran los dolores de cabeza igual que con el puerto paralelo y generalmente las dll de terceros ya resuelven todo ese lio.  Dejame ver que hay por aqui cerca...

Este es un kit interesante basado en componentes COM:
http://www.activxperts.com/activcomport/ (http://www.activxperts.com/activcomport/)

tambien este otro que nos sirvio para obtener los libros de puertos paralelos (tambien hay serial y USB):
http://www.lvr.com (http://www.lvr.com)

saludos aqui termino este testamento,

FL
Título: Re: Puerto Serie
Publicado por: Eternal Idol en Viernes 8 de Julio de 2005, 00:13
La mejor opcion es la primera que comentas, usar CreateFile, configurar el puerto y despues usar Read/WriteFile.

Para la segunda opcion tambien tenes que usar CreateFile pero esta vez en combinacion con DeviceIoControl y abriendo el driver en cuestion.  :whistling:

La tercera es la mas simple  :hola:
Título: Re: Puerto Serie
Publicado por: juanma en Viernes 29 de Julio de 2005, 13:37
Hola, te envio unas pruebas que hize para escribir en una impresora serie. Creo que esto te puede dar algunas ideas.

//---

  unsigned long nbw;
  HANDLE comhandle;
  DCB newDCB;
  String cDB = "COM1";

  comhandle = CreateFile(cDB.c_str(),
          GENERIC_READ|GENERIC_WRITE,
          0,
          NULL,
          OPEN_EXISTING,
          FILE_ATTRIBUTE_NORMAL,
          NULL);

  if (comhandle == INVALID_HANDLE_VALUE) {
    Application->MessageBox("Error en apertura COM","Error",MB_ICONSTOP);
    }
  else {
//  GetCommState(comhandle, &newDCB);     // Ver valores...

  newDCB.BaudRate = 9600;
  newDCB.ByteSize = 8;
  newDCB.Parity = 0;        
  newDCB.StopBits = 0;  
  SetCommState(comhandle, &newDCB);

  cDB = "Prueba UNO";
  WriteFile(comhandle, cDB.c_str() , cDB.Length() , &nbw, NULL);

  Sleep(1500);

  CloseHandle(comhandle);
  }