Ayuda URGENTE- con puerto serial virtual USB

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

Ayuda URGENTE- con puerto serial virtual USB

Post 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
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Ayuda URGENTE- con puerto serial virtual USB

Post by karinha »

Mira se ayuda ó use el HBCOMM.LIB

https://forums.fivetechsupport.com/view ... a6#p170261

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
carito
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Ayuda URGENTE- con puerto serial virtual USB

Post by karinha »

Cual és la marca de la Balanza?

http://fivewin.com.br/index.php?/topic/ ... ent-296754

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
cmsoft
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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

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

Re: Ayuda URGENTE- con puerto serial virtual USB

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

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Ayuda URGENTE- con puerto serial virtual USB

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
carito
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Post by carito »

Hola Karinha:

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

Saludos,
Carito
User avatar
Marc Venken
Posts: 1481
Joined: Tue Jun 14, 2016 7:51 am
Location: Belgium

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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 ?
Marc Venken
Using: FWH 23.08 with Harbour
carito
Posts: 86
Joined: Sat Dec 03, 2016 2:49 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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
Danielmaximiliano
Posts: 26
Joined: Tue Mar 20, 2012 11:06 pm

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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....
User avatar
VictorCasajuana
Posts: 268
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs
Contact:

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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
--------
¿ Y porque no ?
¿ And why not ?
User avatar
Marc Venken
Posts: 1481
Joined: Tue Jun 14, 2016 7:51 am
Location: Belgium

Re: Ayuda URGENTE- con puerto serial virtual USB

Post 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.
Marc Venken
Using: FWH 23.08 with Harbour
User avatar
Antonio Linares
Site Admin
Posts: 42259
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Ayuda URGENTE- con puerto serial virtual USB

Post by Antonio Linares »

Dear Marc,

Have you tested the code that I emailed you ?

Code: Select all | Expand

#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
Post Reply