Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C++] Variabile handle

  1. #1

    [C++] Variabile handel

    Ciao ragazzi ho questo problema..
    nella documentazione delle dll di un prodotto che s interfaccia alla porta seriale, c'è scritto che per aprire la porta seriale devo usare questa funzione:

    BOOL SappSPOpen(
    BYTE bPort,
    DWORD dwBaudRate,
    BYTE bTimeoutConst,
    HANDLE* lphPort,
    );


    Valori passati
    bPort Porta seriale da aprire (valori ammessi: min 1 max 16)
    dwBaudRate Baudrate da impostare alla porta seriale.
    bTimeoutConst Valore di timeout. (valori ammessi: min 0 max 255 raccomandato 3).
    lphPort Puntatore ad una variabile di tipo HANDLE che andrà a ricevere l'handle del sistema di comunicazione aperto.


    Valori ritornati

    La funzione ritorna TRUE se è andato a buon fine, FALSE se si è verificato un errore.
    Ora io sto scrivendo il mio programma in c++ e x la Dword ho messo un unsigned long,per il byte un int ma per il parametro lphPort cosa devo mettere??? secondo voi come andrebbe inzializzato?
    GRAZIE

  2. #2
    ho dichiarato la varibile come HANDLE * ..ma secondo voi come la dovrei inizializzare?

  3. #3

    Re: [C++] Variabile handel

    Originariamente inviato da heavy&blues
    Ciao ragazzi ho questo problema..
    nella documentazione delle dll di un prodotto che s interfaccia alla porta seriale, c'è scritto che per aprire la porta seriale devo usare questa funzione:

    BOOL SappSPOpen(
    BYTE bPort,
    DWORD dwBaudRate,
    BYTE bTimeoutConst,
    HANDLE* lphPort,
    );


    Valori passati
    bPort Porta seriale da aprire (valori ammessi: min 1 max 16)
    dwBaudRate Baudrate da impostare alla porta seriale.
    bTimeoutConst Valore di timeout. (valori ammessi: min 0 max 255 raccomandato 3).
    lphPort Puntatore ad una variabile di tipo HANDLE che andrà a ricevere l'handle del sistema di comunicazione aperto.


    Valori ritornati

    La funzione ritorna TRUE se è andato a buon fine, FALSE se si è verificato un errore.
    Ora io sto scrivendo il mio programma in c++ e x la Dword ho messo un unsigned long,per il byte un int ma per il parametro lphPort cosa devo mettere??? secondo voi come andrebbe inzializzato?
    GRAZIE
    Da quello che hai scritto mi pare di capire che si tratta di un parametro che funge da valore di ritorno, lo dichiari, lo inizializzi a NULL (o lo lasci senza inizializzare tanto è uguale) e la funzione te lo riempie con l'HANDLE (che di fatto è un identificatore numerico corrispondente ad un intero) della comunicazione aperta così tu lo puoi usare per fare altre cose (tipo usare il canale di comunicazione con altre funzioni). Questi parametri usati come valori di ritorno ovviano al fatto che il valore di ritorno di una funzione è unico, quindi in questo caso si è scelto di ritornare come valore un booleano indicativo del successo dell'operazione ed
    il valore di ritorno effettivo con questo stratagemma. Le API di windows fanno largo uso di tale tecnica
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  4. #4
    ho provato appunto a metterlo a NULL ma mi esce il tipico errore "invia segnalazione a mirrosoft" e poi questo:
    has exited with code -1073741819 (0xC0000005)

  5. #5
    Originariamente inviato da heavy&blues
    ho provato appunto a metterlo a NULL ma mi esce il tipico errore "invia segnalazione a mirrosoft" e poi questo:
    has exited with code -1073741819 (0xC0000005)
    Prova a dichiararlo così
    codice:
     HANDLE por
    Ed a passarlo così
    codice:
    &por
    Cioè non lo dichiari come puntatore e ne passi l'indirizzo, fammi sapere
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    ok grande...cosi non mi da errori!!!
    ora io nn sono molto pratico del c++...ma cmq so il c!!!
    // Masapr.cpp : Defines the entry point for the application.
    //

    #include "stdafx.h"
    #include "PICTypes.h"
    #include "SappExp.h"
    #include "stdio.h"
    #include "iostream.h"


    int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
    {
    BOOL ret;
    HANDLE * masa=NULL;
    BYTE nCom=1;
    DWORD dwBaudRate=38499;
    BYTE bTimeoutConst=3;
    HANDLE lphPort=NULL;
    ret=SappSPOpen(nCom,dwBaudRate,bTimeoutConst,&lphP ort);
    return 1;
    }

    come faccio a stampare il valore di ret a video???
    con il debug vedo il valore...ho provato cn la buon vecchia printf ma nn vedo niente!!!
    cmq grazie mille..nn sapevo come uscirne!

  7. #7
    Potesti usare una MessageBox o una setWindowText su un controllo di testo statico. Leggi la MSDN per la doc su queste API
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    ok..
    ti ringrazio mille..ho provato ad aprire e chiudere la seriale e funzia!!!!!

  9. #9
    Originariamente inviato da heavy&blues
    ok..
    ti ringrazio mille..ho provato ad aprire e chiudere la seriale e funzia!!!!!
    Bene! Di niente ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.