• Viernes 8 de Noviembre de 2024, 23:13

Autor Tema:  Re: Puerto Serie  (Leído 3359 veces)

xcotty

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Puerto Serie
« en: Lunes 21 de Octubre de 2002, 14:21 »
0
¿Como puedo acceder al puerto serie de Windows? ¿Alguien tiene el código aunque sea en C?

blas610

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Puerto Serie
« Respuesta #1 en: Viernes 8 de Noviembre de 2002, 02:44 »
0
hey checa esta pagina ahí viene algo que te puede servir

http://www2.arnes.si/~sopecrni/

Qiqe

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
    • http://www.16f877.tk
Re: Puerto Serie
« Respuesta #2 en: Lunes 4 de Julio de 2005, 21:00 »
0
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

furiouslogic

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
    • http://www.arc666.com
Re: Puerto Serie
« Respuesta #3 en: Jueves 7 de Julio de 2005, 23:31 »
0
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/

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

saludos aqui termino este testamento,

FL

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Puerto Serie
« Respuesta #4 en: Viernes 8 de Julio de 2005, 00:13 »
0
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:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

juanma

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Puerto Serie
« Respuesta #5 en: Viernes 29 de Julio de 2005, 13:37 »
0
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);
  }