Ayuda URGENTE- con puerto serial virtual USB

Ayuda URGENTE- con puerto serial virtual USB

Postby carito » Fri Nov 03, 2023 3: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
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby karinha » Fri Nov 03, 2023 4:10 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby carito » Fri Nov 03, 2023 5: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
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby karinha » Fri Nov 03, 2023 6:31 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby cmsoft » Sat Nov 04, 2023 1: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: Select all  Expand view  RUN

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
 
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby carito » 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.
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby carito » 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
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm


Re: Ayuda URGENTE- con puerto serial virtual USB

Postby carito » Mon Nov 06, 2023 11:06 pm

Hola Karinha:

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

Saludos,
Carito
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby Marc Venken » Sun Feb 25, 2024 9: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.04 with Harbour
User avatar
Marc Venken
 
Posts: 1439
Joined: Tue Jun 14, 2016 7:51 am
Location: Belgium

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby carito » Mon Feb 26, 2024 9: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
carito
 
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby Danielmaximiliano » 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....
Danielmaximiliano
 
Posts: 24
Joined: Tue Mar 20, 2012 11:06 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby VictorCasajuana » Tue Feb 27, 2024 5: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 ?
User avatar
VictorCasajuana
 
Posts: 265
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby Marc Venken » Tue Feb 27, 2024 7: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.04 with Harbour
User avatar
Marc Venken
 
Posts: 1439
Joined: Tue Jun 14, 2016 7:51 am
Location: Belgium

Re: Ayuda URGENTE- con puerto serial virtual USB

Postby Antonio Linares » Wed Feb 28, 2024 7:29 am

Dear Marc,

Have you tested the code that I emailed you ?
Code: Select all  Expand view  RUN
#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
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: SantaCroya and 55 guests