Newsgroup: it.comp.lang.c++
Titolo: Builder 3 seriale e modem: Aiuto!

Ciao a Tutti !!!
Per fare dei test sulle porte seriale e poi dialogare
col modem ho scritto il tipico programmino composto
da 2 componenti memo in uno ci scrivo i caratteri da
inviare alla seriale e nell'altro i caratteri ricevuti.
Ho usato naturalmente CreateFile, ReadFile e
WriteFile e tutto sembra funzionare normalmente:
ogni carattere inviato il modem me lo restituisce ma,
quando scrivo AT[enter] o altro comando il modem
non lo esegue in questo caso non mi restituisce OK,
o se provo ATX1DT12345 mi restituisce la stringa
nel componente memo e Non esegue il comando in
questo caso comporre il numero.
Il modem funziona correttamente provato e
riprovato con un terminale.
Per favore se potete datemi una dritta per sbloccarmi.
Grazie a Tutti!!!
    Francesco:  
met...@rosenet.it

 non lo esegue in questo caso non mi restituisce OK,
Sei sicuro di aver inviato al modem anche il carattere 0x0D che sarebbe
INVIO?
EMG

Io uso dei componenti per le seriali di pubblico domino: vai a vedere su
//
www.protogene.com/people/giles/builder.html
ho fatto alcuni esperimenti con le serali (non con il modem) e pare che
tutto funzioni bene.
--
Saluti
Geppo.
email: 
mote...@tin.it
http://www.geppo.com
ICQ UIN 18406959
AOL Instant Message: Geppo12

Si!!!
Quando premo enter nel componente memo
invio il carattere 0x0D al modem.
Ho anche provato ad inviare la stringa "AT\n"
o  "AT\x0D"  ma niente,  mi restituisce solo AT.
Grazie !!
    Francesco


 o  "AT\x0D"  ma niente,  mi restituisce solo AT.
Ma le spie del modem lampeggiano quando gli invii i dati?
EMG

Ciao!!!
Ho il modem interno, niente spie.
Perň sono sicuro che č il modem
che tramite ReadFile mi restituisce
ogni carattere inviato con WriteFile.
Comunque al piů presto farň una
prova da un amico.
Intanto altre idee?
  Grazie ancora per l'aiuto.
      Francesco


 Intanto altre idee?
Si, una: la baud rate della seriale a quanto l'hai impostata? Può darsi
che non sia compatibile con la massima supportata in modo comandi dal
modem?
EMG

 ...............................  ...


 Un grazie particolare a Enrico Maria Giordano !!!
Non c'è di che.
EMG

Ciao!!!
Per il momento riporto le linee di codice più importanti,
poi tra qualche giorno avrò modo di provare il programmino
su un altro modem (con le spie), a questo punto se vedo che
il modem risponde allora ridurrò il codice all'osso e lo invierò
a chiunque vorrà provare per capire il problema.
//
// Premo dal menu Apri per aprire la pora seriale e configurarla
//
void fastcall TFP::menuapriClick(TObject *Sender)
{
  hcomm=CreateFile("COM4:", GENERIC_READ | GENERIC_WRITE,
                   0, NULL, OPEN_EXISTING,  FILE_FLAG_OVERLAPPED, NULL);
  if(!hcomm){
                     char buff[100];
                     wsprintf(buf, "Errore!!! impossibbile aprire porta
seriale");
                     ShowMessage(buf);
                    }
   else {
           static DCB dcb;                      // configurazione della
COM
           dcb.DCBlength = sizeof dcb;
           GetCommState(hcomm, &dcb);
            dcb.BaubRate = BAUD_38400;
            dcb.Parity = NOPARITY;
            dcb.fBinary = 1;
            dcb.ByteSite = 8;
            dcb.StopBits = ONESTOPBIT;
            SetCommState(hcomm, &dcb);
            Tm->Enabled = True;       // attivo il timer per controllare
regolarmente
            Tm->Interval = 500;         //  se ci sono caratteri in
arrivo dalla COM
            }
}
//
// trasmetto il carattere premuto nel componente Memo
//
void fastcall TFP::MemoKeyPress(TObject *Sender, char &Key)
{
  char ch=Key;
  DWORD nScritti;
  WriteFile(hcomm, &ch, 1, &nScritti, lpOverlapped);
 }
//
// controllo e stampo i caratteri ricevuti nella cache
//
void fastcall TFP::TmTimer(TObject *Sender)
{
   char buf[10000];
   DWORD ErrorMask;
   COMSTAT comstat;
   DWORD nLetti;
   ClearCommError(hcomm, &ErrorMask, &comstat);
   ReadFile(hcomm, buff, comstat.cbInQue, &nLetti, lpOverlapped);
   for(unsigned int i=0; i < nLetti; i++)
                 SendMessage(Memoric->Handle, WM_CHAR, buf[i], 0);
}
Anche in modo syncrono cioè NULL invece di usare LPOVERLAPPED
lpOverlapped;
ottengo lo stesso risultato (fenomeno strano).
Grazie ancora una volta.
==========> Francesco: 
met...@rosenet.it


 Per il momento riporto le linee di codice piů importanti,
Mi dispiace ma su WIN32 non sono in grado di aiutarti. Mi limito a DOS e
WIN16.
EMG

 > Per il momento riporto le linee di codice più importanti,
