FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Componente puerto serie Embarcadero c++ Builder
Hola y saludos a todos los del foro. Cuando programaba en C++ Builder6 utilizaba los componentes ComPort para comunicarme por el puerto serie (de eso hace ya tiempo). Ahora utilizo el el Embarcadero XE y por más que he buscado, no encuentro estos componentes para el Builder XE5. ¿Sabéis si existen para este compilador?, ¿Sabéis si hay otros componentes que pueda utilizar?... Muchas gracias.
|
#2
|
||||
|
||||
Revisa este link:
https://winsoft.sk/comport.htm El precio es muy asequible. También puedes revisar esta lista a ver si hay algún otro interesante: https://torry.net/pages.php?s=89
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 28-06-2021 a las 13:40:40. |
#3
|
|||
|
|||
Muchas gracias Neftali, echaré un vistazo a los link.
|
#4
|
|||
|
|||
El usuario CWBudde de GitHub dice que hizo un fork de la versión 4.10 alojada en SourceForge.
https://github.com/CWBudde/ComPort-Library Espero te sea util. Saludos |
#5
|
|||
|
|||
API de Windows
Cita:
Te paso un ejemplo que tengo para comunicar con una pesa, ReadFile y WriteFile se encargan de leer o grabar en el puerto: Código:
HANDLE hComm; DCB dcbCommPort; COMMTIMEOUTS ctmoNew = {0}; DWORD dwBytesRead, dwBytesWrite; char chBuf[50], chEnvia[32], chEnvia2[3]; chBuf[0] = '\0'; double dPesada = 0; char *cPuerto = getenv("CFPUERTO"); String ASPuerto = cPuerto; hComm = CreateFile(ASPuerto.w_str(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); if(hComm == INVALID_HANDLE_VALUE) { ShowMessage("Error abiendo el puerto de comunicaciones"); return 0; } ctmoNew.ReadTotalTimeoutConstant = 100; ctmoNew.ReadTotalTimeoutMultiplier = 0; ctmoNew.WriteTotalTimeoutConstant = 100; ctmoNew.WriteTotalTimeoutMultiplier = 0; SetCommTimeouts(hComm, &ctmoNew); dcbCommPort.DCBlength = sizeof(dcbCommPort); GetCommState(hComm, &dcbCommPort); BuildCommDCB(L"9600,o,7,1", &dcbCommPort); SetCommState(hComm, &dcbCommPort); char cRedondeo[25], chPeso[10]; sprintf(cRedondeo, "%06.f", Form1->PN(EPVP->Text) * 100); unsigned int ui; for(ui=0;ui<strlen(cRedondeo);ui++) chEnvia[ui+5] = cRedondeo[ui]; sprintf(cRedondeo, "%13s", ENomArticulo->Text.c_str()); for(ui=0;ui<strlen(cRedondeo);ui++) chEnvia[ui+17] = cRedondeo[ui]; chEnvia[0] = '\x04'; chEnvia[1] = '\x02'; chEnvia[2] = '0'; chEnvia[3] = '5'; chEnvia[4] = '\x1b'; chEnvia[11] = '\x1b'; chEnvia[12] = '0'; chEnvia[13] = '0'; chEnvia[14] = '0'; chEnvia[15] = '0'; chEnvia[16] = '\x1b'; chEnvia[30] = '\x03'; chEnvia[31] = '\0'; WriteFile(hComm, chEnvia, strlen(chEnvia), &dwBytesWrite, NULL); ReadFile(hComm, chBuf, 45, &dwBytesRead, NULL); if(dwBytesRead == 1) { if(chBuf[0] == '\x06') { chEnvia2[0] = '\04'; chEnvia2[1] = '\05'; chEnvia2[2] = '\0'; Sleep(500); WriteFile(hComm, chEnvia2, strlen(chEnvia2), &dwBytesWrite, NULL); Sleep(500); ReadFile(hComm, chBuf, 45, &dwBytesRead, NULL); if(dwBytesRead == 26) { if(chBuf[0] == '\x02') { chPeso[0] = chBuf[6]; chPeso[1] = chBuf[7]; chPeso[2] = chBuf[8]; chPeso[3] = chBuf[9]; chPeso[4] = chBuf[10]; chPeso[5] = '\0'; cRedondeo[0] = chPeso[0]; cRedondeo[1] = chPeso[1]; cRedondeo[2] = '.'; cRedondeo[3] = chPeso[2]; cRedondeo[4] = chPeso[3]; cRedondeo[5] = chPeso[4]; cRedondeo[6] = '\0'; try { dPesada = atof(cRedondeo); } catch (...) { dPesada = 0; } } else ShowMessage("Error en la lectura de la cabecera de la pesa"); } else ShowMessage("Error en los dígitos devueltos de la pesa"); } else ShowMessage("No se recibe ACK de la pesa"); } else ShowMessage("No se recibe respuesta de la pesa"); PurgeComm(hComm, PURGE_RXABORT); CloseHandle(hComm); Última edición por chenech fecha: 07-04-2022 a las 00:11:12. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Componente puerto serie | REHome | Varios | 0 | 25-03-2017 07:45:53 |
Componente Cportlib (puerto serie) Duda | tulio | Varios | 11 | 08-03-2011 00:28:17 |
Programar puerto serie con Builder C++ | zairillo | C++ Builder | 4 | 07-10-2008 16:40:49 |
Componente para puerto Serie en C++ Builder 5 | lu9eui | C++ Builder | 2 | 05-08-2007 23:13:13 |
comunicacion con el puerto serie de la PC en C++ Builder 5 | RobeCarl | C++ Builder | 2 | 09-01-2007 23:36:06 |
|