Newsgroup: it.comp.hardware.modem
Titolo: Script per Line Quality

Un ciao a tutti. Vi espongo questa idea:
come esplicitamente spiegato nelle oramai ufficiali FAQ di Lorenzo
Colò, quando si chiedono informazioni sulla Line Quality ai modem con
chipset Rockwell, viene restituito il byte più significativo dell'EQM.
Il guaio in questa misura, è che è puntuale, ovvero viene restituito
il valore di detto byte nell'istante in cui si invia il comando.
Purtroppo però ciò non è sufficiente per valutare la qualità della
linea.
Lo stesso modem, per stabilire a che velocità connettersi, osserva
tale byte per un certo periodo di tempo, e ne fa la media. Decide
rispetto a questo valore medio, che varia nel tempo molto più
lentamente di quanto non faccia il valore del byte in questione.
Per ottenere tale media non c'è verso, se non quello di collegarsi
all'ISP con un programma tipo Hyperterminal, e dare il comando una
cinquantina di volte e calcolarsi la media a mano.
Peccato che tale misura (oltre a richiedere un sacco di tempo e
denaro) non sia molto significativa, perchè la Line Quality dipende
dal protocollo utilizzato. Chissà quindi qual'è la vera Line Quality
che avremmo ottenuto collegandoci con Accesso Remoto (l'unico
programma sotto Win95 in grado di negoziare con il protocollo TCP/IP).
Mi è venuta quindi questa idea, ovvero sfruttare la capacità di
Accesso Remoto di lanciare degli script. Vorrei scriverne uno in grado
di dare al modem il comando per avere la qualità della linea per un
numero N prefissato di volte, quindi di farne la media, e di
presentare in qualche modo il risultato.
Dopodiché tale script dovrebbe passare al modem le istruzioni per
realizzare una normale connessione ad Internet.
Chi mi vuole dare una mano?
Ciao, Piero.



 Chi mi vuole dare una mano?
Disponibilissimo non appena tornero` a mettere le mani sul mio PC a casa
(week-end).
 
Ciao,
Lorenzo Colò.

Lorenzo Colò.
Ciao, Piero.

 mi accontenterò di quella piccolina...
Ciao,
Lorenzo Colò.

Che cosa ha in PLUS! ? 
Il documento che mi hai mandato dice che esistono due versioni del
Dial-up Scripting Tool. La prima, quella del CD di Windows95, in grado
di eseguire un set ridotto di istruzioni; la seconda, quella da me
detta 'completa', che non ha questa limitazione e che si trova nel
PLUS!



Ho l'indole dell'archiviatore: raccolgo documenti che potrebbero risultare
utili in futuro senza poi leggerli.
A questo punto sono curioso: c'é qualcuno in questo gruppo che ha Plus!
e la sua utility per il dial-up scripting?
Ciao,
Lorenzo Colò.

Chi mi vuole dare una mano?
Mi piacerebbe, ma credo di non esserne all'altezza... 
Comunque ho un buon compilatore di Visual C++ per Windows che rischia
di atrofizzarsi se continuo a non usarlo! ;)
Quali funzioni potrei cominciare a guardarmi, quelle che ritieni
fondamentali per lo scopo?
Se si tratta di usare poche funzioni, senza dover necessariamente
capire tutto quello che c'è dietro si potrebbe provare, magari è più
semplice di quel che sembra... ma non credo.
Ciao!

semplice di quel che sembra... ma non credo.
Non credo che ci sia bisogno di tirare in ballo il C++. Dovremmo
riuscire a fare tutto da uno script, anche se per il momento mi manca
il manuale delle istruzioni per lo SCRIPT LANGUAGE della Microsoft.
Ciao, Piero.

piacimento?
Mentre è attivo il TCP/IP non credo proprio  :(
Ciao,
Lorenzo Colò.

Un saluto a tutti.
Il progetto dello script per la Line Quality è andato in porto. E'
effettivamente possibile ottenere una misura sensata della Line
Quality subito dopo la connessione del proprio modem al modem remoto,
il tutto senza dover fare assolutamente nulla... bhè, a parte leggere
il risultato. ;)
Ciò che ho fatto funziona con il mio modem, e con tutti i chipset
Rockwell che ho visto in giro, quindi forse non proprio tutti. Nulla
so di altri modem.  Scusate se mi dilungo, ma spiegherò ogni cosa in
modo che tutto sia chiaro.
Cominciamo tutto dall'inizio. Windows95 prevede un solo programma per
accedere ad Internet: trattasi di Accesso Remoto, o Dial-Up
Networking, a seconda della lingua usata. Gli altri programmi di
connessione facenti parte di Windows95 non possono essere utilizzati
per Internet.
Ora: tempo fa non tutti gli Internet Service Provider (ISP) avevano la
possibilità di comprendere ciò che Accesso Remoto diceva loro, e per
stabilire la connessione era necessario inviare all'ISP delle
informazioni 'aggiuntive'. Per permettere di fare ciò la Microsoft ha
incluso in Accesso Remoto l'opzione "Visualizza la finestra del
terminale dopo la connessione", in maniera tale da poter scrivere a
mano le informazioni da inviare all'ISP.
Tutto ciò suonerà molto strano ai più, in quanto da qualche anno a
questa parte Windows95 ha praticamente il monopolio dei PC, e quindi
gli ISP hanno pensato bene di far si che la connessione possa essere
stabilita senza bisogno di informazioni supplementari, e quindi senza
bisogno di usare quella simpatica finestra del terminale.
Questa però è la situazione attuale; 3 anni fa, però,  la Microsoft
dovette risolvere il problema di non far stressare quegli sfortunati
utenti di Windows95 che dovevano collegarsi ad ISP che necessitavano
informazioni aggiuntive, e per giunta ogni volta sempre le stesse. 
Inventò così un programmino, che si chiama SCRIPTER, che serviva per
gestire degli script, ovvero dei piccoli file di testo nei quali
l'utente inseriva tutte le informazioni necessarie all'ISP una volta
per tutte, e diceva poi al programma di inserirle automaticamente
nella finestra del terminale dopo la connessione.
Col passare del tempo la Microsoft ha rilasciato nuove versioni di
Accesso Remoto, e precisamente la 1.1, la 1.2, e la 1.3. Vi dico tutto
questo perchè ora il mio Accesso remoto (versione 1.3) supporta gli
script senza bisogno del programmino SCRIPTER. Non ho informazioni sul
funzionamento delle versioni intermedie di Accesso Remoto (la 1.1 e la
1.2), e quindi non so dirvi se in quel caso ci sia bisogno del
programmino a parte o meno. Inoltre io ho Win95A, in cui Accesso
Remoto ha la sua versione base, mentre in altre versioni di Windows95
forse ci sono altre versioni.
Vi posso solamente dire che io ho installato l'ultima versione, che
però è in inglese, e che realizza uno strano miscuglio tra le due
lingue; non ci sono però altri effetti collaterali. Per chi fosse
interessato a reperirla il file si chiama MSDUN13.EXE ed è lungo
2.355.976 byte.
Insomma, prima di poter applicare questo metodo per la misura della
Line Quality dovete scoprire se il vostro Accesso Remoto supporta gli
script. Se sì, bene; se no, dovete o upgradarlo con una delle versioni
successive, oppure procurarvi il programmino SCRIPTER.
Per chi avesse bisogno del programmino, esso esiste in due versioni.
Una è quella contenuta nel CD di Windows95A, in una directory di cui
ora non ricordo il nome; ma non serve a nulla, perchè non è in grado
di eseguire alcuni dei comandi contenuti nello script che vi allego.
Dovete procurarvi l'altra versione, che si trova nel PLUS!. Io non ce
l'ho, e quindi non so dirvi né come si installa, né esattamente dove
si trova. So solo che nel PLUS! c'è!
Per capire se la vostra versione di Accesso Remoto supporta gli script
dovete chiedere le proprietà di una connessione. Se oltre alle due
linguette "Generale" e "Tipi di server" ne appare anche un'altra (a me
si chiama "Scripting", in italiano non so) per gli script è bene. Se
non c'è, provate a cercare il programma SCRIPTER sul vostro hard disk.
Se non c'è manco lui dovete fare qualcosa, perchè altrimenti non
potrete usare gli script, e quindi neanche quello che vi allego.
Se la linguetta non c'è ma avete il programmino non so come fare a
capire se la versione è quella giusta. Forse basta procedere con i
punti successivi; se durante l'esecuzione dello script vi manda a quel
paese, avete la versione sbagliata.
Andiamo avanti... Lo script che vi allego potete metterlo dove vi pare
sui vostri hard disk. Dopodiché dovete dire ad Accesso Remoto di
usarlo per una data connessione. Questo si fa in due modi diversi, a
seconda che abbiate SCRIPTER oppure il supporto degli script
all'interno di Accesso Remoto.
Nel primo caso dovete far partire il programma (di solito si installa
in C:\PROGRAMMI\ACCESSORI), selezionare sulla sinistra la connessione
alla quale collegare lo script, e quindi sulla destra indicargli dove
si trova lo script da eseguire.
Nel secondo caso aprite Accesso Remoto e chiedete le proprietà della
connessione che vi interessa, andate nella 3 linguetta (quella per lo
scripting), e indicate dove si trova lo script da eseguire.
In entrambi i casi dovete lasciare in bianco le due opzioni presenti,
perchè la prima serve per eseguire lo script una riga alla volta (e se
faceste così lo script non funzionerebbe più), e la seconda per
nascondere la finestra del terminale che si apre subito dopo la
connessione (e così non potreste leggere la Line Quality).
Attenzione: è molto importante che in Accesso
Remoto/Proprietà/Configura/Opzioni non sia selezionata nessuna delle
prime due opzioni riguardanti la finestra del terminale, altrimenti lo
script non funzionerà.
Andiamo avanti... Ora che avete associato lo script alla connessione
la vostra vita si svolge così: quando fate partire la connessione,
tutto procede come al solito finché i due modem non stabiliscono i
vari protocolli (compressione, correzione degli errori, comunicazione)
e la velocità da utilizzare all'interno del protocollo di
comunicazione scelto (V34bis, K56flex, V90, o altro).
A questo punto si apre una finestra, simile a quella che otterreste
selezionando l'opzione "Visualizza la finestra del terminale", in cui
vedrete scorrere velocemente del testo. Alla fine il tutto si ferma, e
vedrete scritto: "Line Quality: xxx", oltre ad altre varie
informazioni a seconda del modem.
A me compare anche un "PROTOCOL XXX" con il protocollo d'errore
utilizzato, un "COMPRESSION XXX" con il protocollo di compressione dei
dati utilizzato, e un "CONNECT XXX" con la velocità di connessione
DCE. Non garantisco che compaiano le stesse informazioni anche ad
altri. Non so...
Che fa il mio script? Semplice. Chiede la Line Quality al modem per 50
volte consecutive, quindi fa la media e ve la presenta.
Perchè fare tutto ciò? Perchè i due modem si mettono d'accordo sulla
velocità da utilizzare all'interno di un certo protocollo proprio in
base ad una misura del genere. Ovvero fanno la media su un certo
numero di misure della Line Quality, e quindi decidono la velocità da
usare in base ad una tabella memorizzata della loro EEPROM.
Potete cambiare il numero di misure da mediare modificando lo script
con un qualsiasi editor di testo; dove c'è scritto "integer N=50", al
terzo rigo, potete correggere con un N a piacere. Tenete conto che se
non ne fate almeno 20 il risultato non è molto attendibile, e che se
ne fate troppe, per fare la media aspetterete un bel po' di più.
Possibili problemi noti: uno solo, almeno al momento. La velocità del
vostro computer. Per come è stato ideato lo scripting language, è
stato necessario scrivere un programma un po' al di fuori della norma,
non avendo altro che pochi comandi a disposizione. A causa di ciò ogni
tanto lo script si perde qualche risposta del modem. In questo caso è
stato istruito ad attendere un secondo prima di riprovare.
Può quindi capitare di vedere il testo che mentre scorre si blocca per
un po'. Abbiate fiducia, dovrebbe riprendersi entro un secondo. Il
programma comunque si accorge di aver perso una risposta del modem, e
non considera quella riposta nel fare la media.
L'unico problema (teorico) è che su un computer sufficientemente lento
lo script potrebbe perdersi una lunghissima sfilza di risposte del
modem, bloccandosi in una noiosa serie di attese di 1 secondo, senza
riuscire a portare a termine il suo compito. Il numero di misure da
effettuare, infatti (il valore iniziale di N) va inteso come misure
andate a buon fine (ovvero risposta del modem letta e compresa dallo
script). Finché lo script non ottiene N misure valide non la smette
più di girare.
Se tutto ciò dovesse accadere (è solo teoria, la mia, visto che ho un
200 MHz) non sperate di sbloccare la situazione premendo "Continua
(F3)" infatti in questo modo ridate il comando ad Accesso remoto, che
però rimane scioccato dal non trovare il modem locale collegato con
quello remoto. Per inviare al modem locale i vari comandi AT, infatti,
lo script provvede all'avvio a porlo in modalità comandi. Per
ritornare alla normale connessione lo script provvede a fornire
l'apposito comando AT, ma solo al termine della sua statistica.
Se quindi lo script si blocca, non arriverà mai a dare al modem il
fatidico comando, e quindi quando voi premete su "Continua" Accesso
Remoto non ci capisce più nulla. Risultato: rimane bloccato in attesa
di collegarsi con l'ISP senza mai riuscirci.
Per uscire da questa situazione o premete su "Annulla" e rinunciate
alla connessione, oppure battete sulla tastiera un bel "ato0"
(attenzione, dopo at c'è una o di Otranto, ed uno zero) e andate a
capo. Se il modem vi risponde, potete cliccare su "Continua" e tutto
procederà come al solito, senza buttar via uno scatto.
Per ulteriori informazioni scrivete pure. Buona fortuna...
Ciao a tutti, Piero.

Dimenticavo... Se la line quality che il vostro modem riporta allo
script è maggior di 99 (ammazza se siete sfigati, però...), lo script
non capisce la risposta, ed è convinto di essersela persa. In questo
caso ritenta, ma se la vostra linea è effettivamente così rovinata,
per le ragioni che vi ho già detto nell'altro messaggio, lo script si
inloopa. Provvederò a risolvere il problema in una seconda versione.
Ho anche notato che ogni tanto anzichè "Line Quality: xxx" qualche
carattere viene sostituito da altri caratteri a caso. Provvederò anche
a questo, sebbene il problema non sia grave. Datemi solo il tempo...
Ho postato questo secondo messaggio così se qualcuno mi risponde via
e-mail ha il mio nuovo indirizzo. Quello del messaggio di sopra
evitatelo perfavore...
Ciao, Piero.

Content-Disposition: attachment; filename="Line Quality.scp"
ciao Piero;
io ho W95 Osr2 e le mie connessioni hanno la terza tab: penso che
"procedura" sia l'equivalente del tuo "scripting", visto che chiede
quale file utilizzare;
col mio Athena/Rockwell 33.6 ho provato due volte lo script, con
scarso successo: W95 mi ha segnalato (vado a memoria) qualcosa come
[4] "integer: errore di sintassi"
ciao
Massimo
men...@iol.it_XXX

[4] "integer: errore di sintassi"
Effettivamente devo dire che anche a me ha dato ripetutamente
quell'errore, a causa di una correzione fatta all'ultimo istante, poco
prima di fare l'attachment. Credevo di aggiungere una riga utile ed
innocua, ed invece genera quell'errore incomprensibile. E' stata colpa
mia. Ho fatto una modifica senza testarla...
La riga incriminata dovrebbe servire a disabilitare l'input da
tastiera durante lo script, e l'avevo messa con l'idea che lo script
sarebbe stato eseguito più in fretta in questo modo. Invece deve
esserci un bug, perchè se si disabilita l'input della tastiera,
Windows95 non riconosce più l'istruzione "integer" e la segnala come
errore. Tra parentesi ho scoperto che l'input da tastiera è
disabilitato per default.
Posto qui di seguito la versione corretta, in cui ho anche apportato
una modifica per risolvere un possibile problema. In questa nuova
versione, se accade per più di 30 volte che lo script si perde una
risposta del modem (o equivalentemente che la Line Quality supera 99),
lo script si blocca (compare il messaggio "Script error!"), e la
connessione continua per i fatti suoi.
Per male che vada, quindi, lo script gira per circa 30 secondi e non
di più...
Vi informo che ho scoperto che come effetto secondario dell'utilizzo
di uno script, il file ModemLog.txt non viene più aggiornato, ed al
suo posto vi compare un PPPLog.txt, che contiene altre informazioni
rispetto a quelle che c'erano di solito nel ModemLog.txt, e secondo me
molto meno utili.
Mi dispiace, ma non posso farci assolutamente nulla, visto che è un
comportamento voluto dalla Microsoft. Comunque le informazioni che
riguardavano la velocità di connessione, ed i protocolli di correzione
e compressione dovreste trovarle alla fine dello script nella finestra
del terminale, subito dopo la Line Quality.
Ah, inoltre adesso la Line Quality riportata viene arrotondata (è una
media, è quasi sempre il risultato è con la virgola), e non troncata
come accadeva prima. Insomma un 33,8 adesso diventa 34, prima era
33...
Provatelo e buona fortuna....
Ciao a tutti, Piero.

script?
No, io non ho avuto problemi in quanto non ho bisogno di script per
connettermi. Se tu ne avevi uno credo che basti tagliarlo e incollarlo
alla fine del mio... o no?
Se lo script esegue prima le istruzioni del mio script e poi le tue
dal punto di vista logico tutto dovrebbe funzionare normalmente.
L'unica cosa che non so è cosa succede esattamente con il comando
"transmit". Io so che dovrebbe inviare la stringa che lo segue
all'ISP, ma ho notato che se si scrive transmit "+++" questo comando
finisce al tuo modem, come tutti i transmit "at..." successivi.
Se è così il tuo provider non dovrebbe ricevere né il "+++" e né tutti
i comandi AT successivi, almeno in teoria...
E' chiaro che se tu hai bisogno di uno script, e glielo togli per
eseguire il mio, il tuo non viene più eseguito, e quindi niente più
accesso ad Internet...
Prova un po' a metterli uno in coda all'altro. Visto che hai risolto
brillantemente il problema del Sytax Error di cui a prima non dovresti
avere problemi ad inserire le righe del tuo script al punto giusto,
non ti do ulteriori spiegazioni. (Se servono chiedi pure, ovviamente)
Ciao, Piero.

script?
Stesso problemino anche per me :))
Sono graditi eventuali consigli.
Saluti a tutti.
mirko.s...@mips.it
        (eliminare NOSPAM).