Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 37
  1. #11
    Allora: di certo se non hai impostato un buffer devi mandare un carattere alla volta, altrimenti non hai nessuna garanzia che vada; invece secondo me non hai affatto bisogno di ripetere ogni carattere. secondo me ti confondi con il fatto che il modem risponde con un eco del carattere che gli hai mandato!

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  2. #12
    codice:
    HANDLE hCOM=CreateFile("COM1",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hCOM!=INVALID_HANDLE_VALUE)
    {
    printf("la porta è aperta");
    char buffer[40];
    memset(buffer,0,sizeof(buffer));
    strcpy(buffer,"STRINGA DA SCRIVERE");
    DWORD nb;
    OVERLAPPED ov;
    int fSuccess;
    fSuccess = WriteFile(hCOM, buffer, sizeof(buffer), &nb, 0);
    if (fSuccess != 0)
    {
    FlushFileBuffers (hCOM);
    }
    else printf("Connessione effettuata, ma non riesco a scrivere sulla seriale!");
    
    //WriteFile(hCOM,buffer,sizeof(buffer),&nb,&ov);
    
    CloseHandle(hCOM);
    }
    else printf("Errore apertura porta");
    }


    il codice relat al mio prog è kuesto, per interrogare il modem?
    users quote:
    - "Ovviamente ho lavorato gratis, non farei mai un lavoro così fatto male a pagamento.."
    "..Non per polemizzare ma diciamoci la verita viva i wizzard di Linux.."
    "..Se comprassi la suse potrei anche comperarmi win. Non credete???.."

  3. #13
    Uhm, non mi sembra che ci siano errori grossolani, alcune considerazioni:

    1)Quando parlavo di buffer, non mi riferivo ad un tuo buffer (l'array di char che hai creato tu), ma piuttosto ad un buffer gestito da windows che si imposta con la chiamata alla funzione API SetupComm(handleporta, dimnsionebufferinput, dimensionebufferoutput)

    2)Di solito io la porta seriale la apro così:
    CreateFile("COM1",GENERIC_ALL,0,0,OPEN_EXISTING,0, 0) cioè la apro sempre in lettura e scrittura.

    3)Non hai affatto impostato la velocità, i bit e tutte le altre caratteristiche; per farlo hai due metodi: o ti costruisci tu una truttura di tipo DCB, la riempi e poi chiami SetCommState(handle,DCB), oppure prima costruisci una stringa con i parametri di configurazione fatta così "COM1:9600,N,8,1" (dove nell'ordine metti la porta, i baud, la parità, i bit e gli stop bit) e poi chiami BuildCommDCB("COM1:9600,N,8,1",unDCB) che ti costruisce il DCB, dopodichè usi sempre SetCommState(handle, unDCB) per impostare la configurazione.

    4)Prima di usare la WriteFile ti conviene usare anche la ClearCommError che ti sblocca la porta dovesse essersi piantata:
    ClearCommError(handle, errors, lpStat)
    Che oltre che sbloccare la porta ti resituisce anche eventuali errori nel long integer errors, e lo stato della porta in lpStat che è una struttura di tipo COMSTAT.

    Ciao!

    Se hai ancora bisogno chiedimi pure!

    P.S.: Ma il tuo scopo è solo quello di far comporre al modem un numero di telefono? Se è così dimmelo, perchè ci sono metodi MOOOOOOLTO più semplici che impelagarsi con la porta seriale... :gren:

    RiCiao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #14
    si il mio scopo è inizializzare il modem e fargli comporre un numero, se sai modi + semplici sono tutto orecchie!!!! tnx per il resto
    users quote:
    - "Ovviamente ho lavorato gratis, non farei mai un lavoro così fatto male a pagamento.."
    "..Non per polemizzare ma diciamoci la verita viva i wizzard di Linux.."
    "..Se comprassi la suse potrei anche comperarmi win. Non credete???.."

  5. #15
    ok per i,settaggi della port me la sono cavata kosì:

    DCB dcbCommPort;
    GetCommState(hCOM, &dcbCommPort);
    BuildCommDCB("9600,N,8,1", &dcbCommPort);
    SetCommState(hCOM, &dcbCommPort);

    ho anche impostato i timeouts
    e in effetti le impostazioni vengono accettate,

    Attendo fiducioso una tua rispoosta sulla composizione del numero.ciao!!!!:adhone:
    users quote:
    - "Ovviamente ho lavorato gratis, non farei mai un lavoro così fatto male a pagamento.."
    "..Non per polemizzare ma diciamoci la verita viva i wizzard di Linux.."
    "..Se comprassi la suse potrei anche comperarmi win. Non credete???.."

  6. #16
    Beh, allora puoi usare la funzione

    tapiRequestMakeCall( destinazione, applicazione, gruppo, commento)

    a cui puoi passare il numero di tel da comporre nella prima stringa, e tre stringhe nulle negli altri parametri.
    Fa parte della DLL TAPI32.DLL e restituisce un long integer con il quale puoi sapere se la chiamata è riuscita, confrontandolo con 0.

    Ciao!

    (nota che NON HAI NESSUN BISOGNO DI APRIRE LA PORTA NE' DI FARE NULL'ALTRO, è suffciente chiamare la tapiRequestMakeCall!)
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #17
    quindi #include <Tapi.h> giusto???
    Adesso provo!
    users quote:
    - "Ovviamente ho lavorato gratis, non farei mai un lavoro così fatto male a pagamento.."
    "..Non per polemizzare ma diciamoci la verita viva i wizzard di Linux.."
    "..Se comprassi la suse potrei anche comperarmi win. Non credete???.."

  8. #18
    Giusto!

    Come sta andando?

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  9. #19
    ehm , allora, ho fatto kosì

    codice:
    char cPhone[10]="0332311015";
    x = tapiRequestMakeCall(cPhone, "", "", "");
    funzia però devo poter configurare la connessione, cioè devo dirgli che è 1 connessione telefonica e nn ad internet, in + il numero di telefono appare (giustamente) con la /n finale, ovvio è 1 stringa^^

    Sbaglio qualcosa mi sa

    Illuminami!!! eheheh tnx
    users quote:
    - "Ovviamente ho lavorato gratis, non farei mai un lavoro così fatto male a pagamento.."
    "..Non per polemizzare ma diciamoci la verita viva i wizzard di Linux.."
    "..Se comprassi la suse potrei anche comperarmi win. Non credete???.."

  10. #20
    A quello che so è sufficiente che la stringa che contiene il numero sia ZeroTeminated, null'altro.

    Questa funzione non è una funzione di Acesso Remoto; in altri termini, l'UNICA cosa che fa è fare il numero, NIENT'ALTRO: se hai bisogno poi di trasmettere qualcosa sulla seriale allora devi assolutamente procedere per la strada di rima, quella di controllare la seriale per i fatti tuoi...

    In realtà non ci hai ancora detto cosa vuoi ottenere!

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

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 © 2026 vBulletin Solutions, Inc. All rights reserved.