Page 1 of 2
Ayuda URGENTE- con puerto serial virtual USB
Posted:
Fri Nov 03, 2023 3:38 pm
by carito
Hola a todos,
Necesito una ayuda u orientacion urgente:
Tengo que leer el peso de una bascula (PESA) , que se conecta al pc mediante un cable adaptador SERIAL a puerto USB.
El drive de instalacion de la pesa me crea un puerto virtual COM4 por conexion USB. ( este puerto no existe fisicamente en el PC)
Mi problema es que no logro reconocer con las funciones de Harbour 3.2 ese puerto virtual, estoy medio angustiado, pues no
conozco otra forma. Si alguien sabe como configurar o reconocer esos puertos, se lo agradeceria mucho.
Se que la rutina funciona, pues si le doy un puerto serial COM1 verdadero ( no virtual ), es capaz de abrir y conectarse.
Mi rutina es la siguiente:
FUNCTION Balanza1( cPortName )
Local nComPort := 4 //COM3
Local nTimeOut := 100 //ms
Local lIsOpened := FALSE
Local lIsInit := FALSE
Local nBytesSended := 0
Local nBytesReceived := 0
Local cReceiveBuffer := SPACE(512)
Local cStringToSend := "W<CR>" // este comando le indica a la balzan que devuelva el peso detectado
//To receive
Local cReceivedString := ""
//to COM open
lIsOpened := HB_comOpen( nComPort )
//to Com Initialize
lIsInit := HB_ComInit( nComPort, 9600 , "N", 8, 1 )
//To send
nBytesSended := HB_ComSend( nComPort, cStringToSend , , nTimeOut )
//To receive
nBytesReceived := HB_ComRecv( nComPort, @cReceiveBuffer, , nTimeOut )
cReceivedString := Left( cReceiveBuffer, nBytesReceived )
? cReceivedString
return nil
Quedo a al espera y gracias,
Carito
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Fri Nov 03, 2023 4:10 pm
by karinha
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Fri Nov 03, 2023 5:40 pm
by carito
Hola Karinha;
Como siempre eres muy amable, gracias por tu respuesta.
La probe y modifique, pero me da error de memoria no funciona y se cae.
Existira alguna otra forma o tilizar alguna otra libreria externa, acepto ideas o sugerencias.
Quedo a la espera y gracias nuevamente, saludos
Carito
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Fri Nov 03, 2023 6:31 pm
by karinha
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Sat Nov 04, 2023 1:41 pm
by cmsoft
En alguna oportunidad usé estas funciones para conectarme por un puerto COM, tal vez te puedan ser de ayuda. Son las mismas que te pasó Jao, adaptadas a tu código
Espero que al menos te de una luz
- Code: Select all Expand view
FUNCTION Balanza1( cPortName )
Local idPort , cDcb
Local nComPort := 4 //COM3
Local nTimeOut := 100 //ms
Local lIsOpened := FALSE
Local lIsInit := FALSE
Local nBytesSended := 0
Local nBytesReceived := 0
Local cReceiveBuffer := SPACE(512)
Local cStringToSend := "W<CR>" // este comando le indica a la balzan que devuelva el peso detectado
//To receive
Local cReceivedString := ""
//to COM open
IdPort := OpenComm("COM"+STR(nComPort,1),1024,256)
lIsOpened := (idPort>0)
//to Com Initialize
//lIsInit := HB_ComInit( nComPort, 9600 , "N", 8, 1 )
lIsInit := BuildCommDcb("COM"+STR(nComPort,1)+":9600,n,8,1" , @cDcb)
//Set Port
SetCommState( IdPort, cDcb )
//To send
//nBytesSended := HB_ComSend( nComPort, cStringToSend , , nTimeOut )
nBytesSended := WriteComm( IdPort,cStringToSend) )
//To receive
//nBytesReceived := HB_ComRecv( nComPort, @cReceiveBuffer, , nTimeOut )
nBytesReceived := ReadComm( IdPort,@cReceiveBuffer)
cReceivedString := Left( cReceiveBuffer, nBytesReceived )
? cReceivedString
return nil
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Mon Nov 06, 2023 12:11 am
by carito
Hola Karinha:
Es de marca METTLER TOLEDO , tiene conexion serial via adaptador con cable USB.
La documentacion es mala, nula que proporciona el proveedor. Asi que he estado
con prueba y error, y no hay caso, no lo logro comunicarme con ella.
Gracias por tu consulta.
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Mon Nov 06, 2023 12:14 am
by carito
Hola Cesar, muchas gracias por tu mensaje.
Tambien buscando encontre tu rutina, la probe, pero no me funciono.
Muchas gracias de todas formas.
Tenia la esperanza de que exista una DLL o algun ejemplo con este modelo,
sigo buscando, pero nada aun.
Saludos,
Carito
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Mon Nov 06, 2023 11:53 am
by karinha
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Mon Nov 06, 2023 11:06 pm
by carito
Hola Karinha:
Muchas gracias por tus link, los miro , pruebo y te cuento.
Saludos,
Carito
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Sun Feb 25, 2024 9:08 am
by Marc Venken
Tuviste éxito en la conexión a un USB virtual? Y con código de bruja?
Did you succeed in connection to a Virtual USB ? And with witch code ?
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Mon Feb 26, 2024 9:57 pm
by carito
Hola lamentable NO, por un lado muy mala documentacion y ayuda del proveedor de la pesa.
Asi que ha sido solo prueba y error.
Si descubro algo, les informare.
Saludos
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Mon Feb 26, 2024 10:52 pm
by Danielmaximiliano
carito wrote:Hola Karinha:
Es de marca METTLER TOLEDO , tiene conexion serial via adaptador con cable USB.
La documentacion es mala, nula que proporciona el proveedor. Asi que he estado
con prueba y error, y no hay caso, no lo logro comunicarme con ella.
Gracias por tu consulta.
Hola
que modelo en exacto es....
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Tue Feb 27, 2024 5:12 am
by VictorCasajuana
Has probado de conectar con el hiper terminal de Windows? A veces nos volvemos locos con algo y realmente no funciona.
Enviado desde mi motorola edge 20 mediante Tapatalk
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Tue Feb 27, 2024 7:38 pm
by Marc Venken
I wonder, did you connect to a virtual USB and where able to recieve data ?
Me pregunto, ¿te conectaste a un USB virtual y dónde pudiste recibir datos?
I found no code in the forum for virtual usb
No encontré código en el foro para usb virtual.
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted:
Wed Feb 28, 2024 7:29 am
by Antonio Linares
Dear Marc,
Have you tested the code that I emailed you ?
- Code: Select all Expand view
#pragma BEGINDUMP
#include <windows.h>
#include <stdio.h>
#include <hbapi.h>
HB_FUNC( TEST )
{
HANDLE hSerial;
DCB dcbSerialParams = {0};
COMMTIMEOUTS timeouts = {0};
const char data_to_send[] = "Hello Arduino!";
DWORD bytes_written;
char buffer[256];
DWORD bytes_read;
// Replace "COM3" with the correct port name for your Arduino
hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hSerial == INVALID_HANDLE_VALUE) {
MessageBox( 0, "Error opening serial port", "Error", 0 );
hb_retnl( 1 );
return;
}
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
MessageBox( 0, " Error getting serial port state", "Error", 0 );
CloseHandle(hSerial);
hb_retnl( 1 );
return;
}
dcbSerialParams.BaudRate = CBR_9600; // Set your baud rate
dcbSerialParams.ByteSize = 8; // 8 data bits
dcbSerialParams.StopBits = ONESTOPBIT; // 1 stop bit
dcbSerialParams.Parity = NOPARITY; // No parity
if (!SetCommState(hSerial, &dcbSerialParams)) {
MessageBox( 0, " Error setting serial port state", "Error", 0 );
CloseHandle(hSerial);
hb_retnl( 1 );
return;
}
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 50;
timeouts.WriteTotalTimeoutMultiplier = 10;
if (!SetCommTimeouts(hSerial, &timeouts)) {
MessageBox( 0, " Error setting timeouts", "Error", 0 );
CloseHandle(hSerial);
hb_retnl( 1 );
return;
}
// Example: Write data to Arduino
if (!WriteFile(hSerial, data_to_send, sizeof(data_to_send) - 1, &bytes_written, NULL)) {
MessageBox( 0, " Error writing to serial port", "Error", 0 );
} else {
MessageBox( 0, "Bytes sent to Arduino", "Error", 0 );
}
// Example: Read data from Arduino
if (!ReadFile(hSerial, buffer, sizeof(buffer) - 1, &bytes_read, NULL)) {
MessageBox( 0, "Error reading from serial port", "Error", 0 );
} else {
buffer[bytes_read] = '\0';
// printf("Received %lu bytes from Arduino: %s\n", bytes_read, buffer);
}
CloseHandle(hSerial);
hb_retnl( 0 );
}
#pragma ENDDUMP