Newsgroup: it.comp.lang.c++
Titolo: Porta seriale

Qualcuno potrebbe darmi qualche dritta su come gestire una comunicazione
sulla porta seriale ???
Grazie
-- 
EvilB...@UNPODIROBAhotmail.com
//------------------------------------------------------------------------
Per rispondere togli UNPODIROBA dall' indirizzo
//------------------------------------------------------------------------

--
Se lavori con Win95/NT ed usi  MFC, puoi usare un componente che si chiama
+o-
mscomm.ocx
il quale é lo stesso che useresti in VB
Se invece vuoi fare di tutto sappi che la seriale sotto win32 viene vista
come un file e pertanto si  tratta di aprire il file ( che si chiamerà
"COM2" ), di leggere i parametri della porta, di sostituire i tuoi, usarla e
alla fine chiudere il file.
Prova a cercare la funzione SetCom qualcosa e da li  puoi trovare tutto
quello che ti manca ed esempi di utilizzo ( se hai VC 5.0  sicuramente, con
altri ambienti nin so !).
Ciao
Mat

sulla porta seriale ???
Ciao
mi accodo a quest'argomento, avrei bisogno anch'io di qualche dritta
sull'utilizzo della porta seriale.....
Magari qualcosa di piú di "usa CreateFile" eh ?!?!
Ciao
--
Roberto "Loba" Corti
Amministratore di rete
rco...@NOSPPAMONItinet.ch

rco...@NOSPPAMONItinet.ch
vedo che l' argomento é molto popolare ... e allora sarò più prolisso
 forse meno stringato ?! ):
Mi pare inoltre di capire che ci sia un certo interesse intorno all'
utilizzo in ambiente Win32.
Dico subito che ci sono delle differenze di comportamento in Win32 tra Win95
e WinNT 4.0 per cui non si deve dare per scontato che le cose vadano nello
stesso identico modo. ( provare per credere )
La seriale viene vista da Win32 come un file e pertanto vi scrivo qualche
linea di codice fittizia, il resto ( poco ) ve lo fate voi:
#include <windows.h>
HANDLE  hCom;
DCB         dcb;
COMMTIMEOUTS  commtimeouts;
hCom = CreateFile( "COM2", GENERIC_READ | GENERIC_WRITE,
                                    0, /* esclusiva */
                                    NULL,
                                    OPEN_EXISTING,  /*   !!!!  */
                                    0,  /*  io non sovrapposto */
                                    NULL  /* !!!! */   );
  if( INVALID_HANDLE_VALUE == hCom )
  {
      dwerror = GetLastError();
      /*   gestire l' errore !!! */
  }
  flag = GetCommState( hCom, &dcb );
  if( flag )
  {
      dwerror = GetLastError();
      /*   gestire l' errore !!! */
  }
  dcb.BaudRate = 1200;
  ecc...
 flag = SetCommState( hCom, &dcb )
  if( flag )
  {
      dwerror = GetLastError();
      /*   gestire l' errore !!! */
  }
flag =  GetCommTimeouts( hCom, &commtimeouts );
  if( flag )
  {
      dwerror = GetLastError();
      /*   gestire l' errore !!! */
  }
 commtimeouts.ReadIntervalTimeout = MAXDWORD;
 ecc...
flag =  GetCommTimeouts( hCom, &commtimeouts );
  if( flag )
  {
      dwerror = GetLastError();
      /*   gestire l' errore !!! */
  }
  PurgeComm( hCom, PURGE_TXCLEAR |  PURGE_RXCLEAR );
 .....
  TransmitCommChar( hCom, 'M' );  /*   ad esempio: bypassa la coda di Tx */
  WriteFile( hCom, eccc   );
  ReadFile( hCom, ecc  ........  );
 CloseHandle( (HANDLE)hCom );
Con questa traccio ed aiutandovi con l' help di win32 dovreste essere in
grado di fare anche il caffè con la seriale !!!!
Ciao
Mat