Newsgroup: it.comp.programmare.win32
Titolo: Gestione seriale Win2k/Win98

Premetto che ho gia' letto i thread sull'argomento e non ho trovato la
risposta che cerco.
Ho scritto un programma per interfacciarmi direttamente con la seriale in
C++, usando varie procedure. Il programma gira perfettamente sotto win2000 e
XP, ma si rifiuta di partire in win 95 e win 98.
Ho compilato il programma con Borland C++ 5.5, con cygwin-gcc e con
mingw-gcc, non ho altri compilatori a disposizione, a parte il C++ Builder
3.0, che probabilmente non sara' diverso dal BC++.
Per accedere alle seriali ho usato la "libserial" di Antonio Mazzeo, che e'
un wrapper delle API di Win32, DCB e simili. Con cygwin ho provato ad
utilizzare anche l'approccio "unix", aprendo il file /dev/com1 e scrivendo
su quello. Prima che me lo chiediate: TUTTI questi sistemi funzionano sotto
windows 2000, ma NESSUNO di questi funziona su Win98.
A questo punto mi rimangono poche alternative. Pensavo di scaricare un Turbo
C++ (ho visto che e' disponibile dal "museum" di Borland), e compilare il
programma in DOS, oppure di tentare la strada di Delphi (ma non credo possa
avere piu' successo, in quando si basa sulle stesse API).
Pensavo anche al compilatore Watcom, ma non mi risulta che sia uscita (per
ora) la tanto attesa versione 'open'...
Ogni suggerimento sara' opportunamente valutato, ricchi premi al migliore.
:-) Fatevi avanti...

windows 2000, ma NESSUNO di questi funziona su Win98.
Sentendomi chiamato in causa :) purtroppo ti posso dire soltanto una
cosa... io la uso tutt'ora su win98 e precisamente su quasi 25 pc
installati presso i clienti in un POS per comunicare con i
registratori fiscali .... e nessuno si e' mai lamentato che non
funziona :)
Se mi invii il codice vedo di aiutarti
ciao
Antonio

 ha scritto nel messaggio
news:vsh5pug0spn38543t...@4ax.com...

Ok. Invece di inviartelo direttamente, lo posto sul NG, cosi' magari quacun
altro mi puo' aiutare.
Ovviamente non intendevo accusare la tua libreria, probabilmente c'e'
qualche particolare che mi sfugge. Ad esempio: come faccio ad impostare il
controllo di flusso?
Ecco il codice:
int main (int argc, char **argv)
{
 char rdbyte[237];
 char wrbyte[172];
 cSerial serport (SERIAL, "2400,n,8,1");
 int bytes;
 int stx = 2;
 int etx = 3;
 ifstream infile;
 ofstream outfile;
 outfile.open("smplfile.dat");
 for (infile.open("testfile.dat"); infile >> wrbyte; !infile.eof ())
 {
  bytes = 0;
  do {
   int rdcount = serport.read (rdbyte + bytes, 1);
   bytes += rdcount;
  } while (rdbyte[bytes-1] != etx);
  cout << rdbyte << endl;
  rdbyte[bytes-1] = 0;
  outfile << rdbyte+1 << endl;
  bytes = 0;
 }
 serport.close ();
 infile.close ();
 outfile.close ();
}
In pratica:
infile serve come contatore, per il momento. In futuro ci sara' una
corrispondenza tra ogni elemento di infile e una riga di testo letta dalla
seriale.
ribadisco che il codice "as-is" funziona senza il minimo problema con
win2000, compilato con i compilatori Borland, Cygwin e Mingw. La macchina
che dialoga con il PC dice "off-line" se cerco di connettermi con Win98. Ho
fatto il test con HyperTerminal e funziona tutto.
Se compilo con Borland, il programma parte, ma le stringhe che legge sono di
pura fantasia. Se compilo con gcc in qualsiasi forma il programma da' errore
in partenza.

fatto il test con HyperTerminal e funziona tutto.
ho il vago presentimento che la macchina con la quale tu stia cercando
di dialogare sia una Epson FP-210 o EPSON FP-285 ... il xche'?
Semplice :) scrive sul display OFF-LINE se sbagli la sequenza di
trasmissione ? Ho azzeccato? se si fammelo sapere
a dopo
Antonio
p.s. credo che tu dovresti usare 24,n,8,1,x se vuoi il controllo di
flusso hardware

 flusso hardware
Domandona idiota: e se imposto il controllo di flusso dalla gestione
risorse, Windows se ne sbatte beatamente?

risorse, Windows se ne sbatte beatamente?
yes .. xche' poi quand reimposti i parametri non lo hai specificato...
e quindi nel DCB non ci sta...
antonio