Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-06-2021
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 19
chinchan Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 28-06-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #3  
Antiguo 28-06-2021
chinchan chinchan is offline
Miembro
 
Registrado: abr 2006
Posts: 109
Poder: 19
chinchan Va por buen camino
Muchas gracias Neftali, echaré un vistazo a los link.
Responder Con Cita
  #4  
Antiguo 28-06-2021
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 74
Poder: 16
lucho6007 Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 07-04-2022
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 72
Poder: 11
chenech Va por buen camino
API de Windows

Cita:
Empezado por chinchan Ver Mensaje
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.
Yo lo he echo siempre con llamadas al API de Windows, así no dependo de terceros y complia en cualquier versión desde la 1 hasta la 11.
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 13:04:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi