Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    [C] Comunicazione Seriale

    Ciao a tutti,

    volevo sapere quali librerie scaricare per gestire le comunicazioni seriali, al link

    http://msdn.microsoft.com/library/de...sdn_serial.asp

    e tutto spiegato molto bene pero ehm dove si prendono queste comodissime funzioni di gestione?

    Premetto che uso il Dev C++ 4.9.9.2. Forse devo linkare qualche libreria gia esistente?

    Fatemi sapere please! Saluti!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] Comunicazione Seriale

    Originariamente inviato da UltraBeginner
    Ciao a tutti,

    volevo sapere quali librerie scaricare per gestire le comunicazioni seriali, al link

    http://msdn.microsoft.com/library/de...sdn_serial.asp

    e tutto spiegato molto bene pero ehm dove si prendono queste comodissime funzioni di gestione?

    Premetto che uso il Dev C++ 4.9.9.2. Forse devo linkare qualche libreria gia esistente?

    Fatemi sapere please! Saluti!
    Le funzioni spiegate in quella pagina che hai linkato sono funzioni Win32: CreateFile, ReadFile, WriteFile, ecc...
    Leggi la documentazione per queste funzioni!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Includi il file windows.h e le librerie di windows linkate da devcpp dovrebbero fare il resto ...

  4. #4

    eh

    ma ehm la documentazione l ho letta ma non riesco a capire dove andare a prendere queste funzioni, cioe in ke file sono incluse....

    Per es l altro giorno stavo trafficando con la scheda sonora, sono andato su audiere e li c era il download della API.

    Ma per queste funzioni che gestiscono la seriale non riesco a capire se ci sia qualcosa da scaricare oppure siano gia presenti negli header windows.h etc....

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma hai letto la mia risposta? Hai fatto una prova?

  6. #6
    scusa non avevo letto, non avevo aggiornato... :rollo: :rollo: :rollo: provo subito e ti dico

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: eh

    Originariamente inviato da UltraBeginner
    Ma per queste funzioni che gestiscono la seriale non riesco a capire se ci sia qualcosa da scaricare oppure siano gia presenti negli header windows.h etc....
    Lo spiega chiaramente MSDN per ogni funzione. Ad esempio per CreateFile:

    Header: Declared in Winbase.h; include Windows.h.
    Library: Use Kernel32.lib.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8

    Ok

    1) Per Oregon:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>

    int main()

    {
    HANDLE m_hCommPort = ::CreateFile("COM1",
    GENERIC_READ|GENERIC_WRITE,//access ( read and write)
    0, //(share) 0:cannot share the COM port
    0, //security (None)
    OPEN_EXISTING,// creation : open_existing
    FILE_FLAG_OVERLAPPED,// we want overlapped operation
    0// no templates file for COM port...
    );

    }

    Funziona

    2) Per AndBin: Hai ragione, sara che sono le 1730 e sto fondendo...ora leggo con calma


    Thanks!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Ok

    La morale e': scrivi di meno nel forum e leggi di piu' ...

  10. #10

    [C] Ricezione Dati da Seriale

    ciao a tutti,

    sono riuscito finalmente a parlare con la seriale ma ho un problema. Per prima cosa vi spiego come provo la comunicazione seriale: ho un cavo NULL modem collegato da una parte alla seriale del pc e dall altra a un adattatore USB/Seriale che non fa altro che far vedere una porta USB come una porta seriale.

    lo schema e questo di principio e questo

    Seriale PC(COM1)<---->Seriale PC(COM3)

    Dalla parte della COM3 uso hyperterminal di windows mentre COM1 e gestita con il software C.
    Ora per la trasmissione da COM1 a COM3 nessun problema, il programma invia correttamente cio che io gli dico di mandare ( e infatti lo visualizzo correttamente su hyperterminal)...se invece cerco di ricevere qualcosa da COM3 non ce verso...o almeno e tutto il giorno che ci provo senza alcun risultato....vi riporto il codice qui sotto:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <winbase.h>

    int main()
    {

    OVERLAPPED osWrite = {0};
    DCB PortDCB;
    DWORD dwBytesTransferred=0,timeout=10000;
    HANDLE hComm,Rx;
    COMMTIMEOUTS CommTimeouts;
    int i;
    char *porta="COM1:\0";
    char *pippo;
    char prova;


    // Creazione dell handle relativo all apertura della porta in lettura(COM1)
    Rx = CreateFile(porta,
    GENERIC_READ | GENERIC_WRITE,
    0,
    0,
    OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED,
    0);
    if (Rx == INVALID_HANDLE_VALUE)
    {exit(0);}// error opening port; abort

    GetCommState(Rx,&PortDCB); // Preleva i setting attuali della porta

    // setting dei paramentri (9600 8N1)
    PortDCB.BaudRate = 9600; // Current baud
    PortDCB.fBinary = FALSE; // Binary mode; no EOF check
    PortDCB.fParity = FALSE; // Enable parity checking
    PortDCB.fOutxCtsFlow = FALSE; // No CTS output flow control
    PortDCB.fOutxDsrFlow = FALSE; // No DSR output flow control
    PortDCB.fDtrControl = DTR_CONTROL_DISABLE;
    // DTR flow control type
    PortDCB.fDsrSensitivity = FALSE; // DSR sensitivity
    PortDCB.fTXContinueOnXoff = FALSE; // XOFF continues Tx
    PortDCB.fOutX = FALSE; // No XON/XOFF out flow control
    PortDCB.fInX = FALSE; // No XON/XOFF in flow control
    PortDCB.fErrorChar = FALSE; // Disable error replacement
    PortDCB.fNull = FALSE; // Disable null stripping
    PortDCB.fRtsControl = RTS_CONTROL_DISABLE;
    // RTS flow control
    PortDCB.fAbortOnError = FALSE; // Do not abort reads/writes on
    // error
    PortDCB.ByteSize = 1; // Number of bits/byte, 4-8
    PortDCB.Parity = NOPARITY; // 0-4=no,odd,even,mark,space
    PortDCB.StopBits = ONESTOPBIT; // 0,1,2 = 1, 1.5, 2

    SetCommState(Rx,&PortDCB); // Setting della porta

    GetCommTimeouts(Rx,&CommTimeouts);// rivela i paramentri di timeout della porta

    CommTimeouts.ReadIntervalTimeout = timeout; // imposto i paramentri di timeout a mio piacimento
    CommTimeouts.ReadTotalTimeoutMultiplier = 0;
    CommTimeouts.ReadTotalTimeoutConstant = 0;
    CommTimeouts.WriteTotalTimeoutMultiplier = 10;
    CommTimeouts.WriteTotalTimeoutConstant = 1000;

    SetCommTimeouts(Rx,&CommTimeouts); // setting dei paramentri di timeout su COM1

    while(dwBytesTransferred==0)
    {ReadFile (Rx, // Port handle
    &prova, // Pointer to data to read
    1, // Number of bytes to read
    &dwBytesTransferred, // Pointer to number of bytes
    // read
    NULL // Must be NULL for Windows CE
    );
    }

    CloseHandle(Rx);
    system("pause");
    }

    In pratica lui non esce dal ciclo finche il numero di byte trasferito non diventi diverso da 0, cosa che avviene quando l input buffer della seriale si riempe. Avviato il programma si puo scrivere cosa si vuole su hyperterminal ma dall altra parte continua a non uscire dal ciclo, e come se non ricevesse niente........

    2) Inoltre avrei un altra questione:

    ho notato che la seriale (in scrittura) si puo gestire anche con questo codice

    FILE *fp;
    char *c="sce";
    char pippo;
    fp=fopen("COM1:","w");
    fprintf(fp,"%s",c);
    fclose(fp);

    cioe con del C puro...pero in questo modo come si possono cambiare i parametri della porta?

    Grazie a tutti per le rispo! Saluti!

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