FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda URGENTE- con puerto serial virtual USB
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Ayuda URGENTE- con puerto serial virtual USB
Posted: Fri Nov 03, 2023 03:38 PM

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

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Fri Nov 03, 2023 04:10 PM
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Fri Nov 03, 2023 05:40 PM

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

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Fri Nov 03, 2023 06:31 PM
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Sat Nov 04, 2023 01:41 PM
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 (fw): Select all Collapse
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
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Mon Nov 06, 2023 12:11 AM

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.

Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Mon Nov 06, 2023 12:14 AM

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

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Mon Nov 06, 2023 11:06 PM

Hola Karinha:

Muchas gracias por tus link, los miro , pruebo y te cuento.

Saludos,

Carito

Posts: 1487
Joined: Tue Jun 14, 2016 07:51 AM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Sun Feb 25, 2024 09:08 AM

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 ?

Marc Venken

Using: FWH 23.08 with Harbour
Posts: 98
Joined: Sat Dec 03, 2016 02:49 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Mon Feb 26, 2024 09:57 PM

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

Posts: 34
Joined: Tue Mar 20, 2012 11:06 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Mon Feb 26, 2024 10:52 PM
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....
Posts: 309
Joined: Wed Mar 28, 2018 04:38 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Tue Feb 27, 2024 05:12 AM

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

--------

驴 Y porque no ?

驴 And why not ?
Posts: 1487
Joined: Tue Jun 14, 2016 07:51 AM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Tue Feb 27, 2024 07:38 PM

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.

Marc Venken

Using: FWH 23.08 with Harbour
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ayuda URGENTE- con puerto serial virtual USB
Posted: Wed Feb 28, 2024 07:29 AM
Dear Marc,

Have you tested the code that I emailed you ?
Code (fw): Select all Collapse
#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
regards, saludos

Antonio Linares
www.fivetechsoft.com