Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

VB2008 - Di nuovo MODEM... il Siemens ES75 mi fa impazzire!

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

VB2008 - Di nuovo MODEM... il Siemens ES75 mi fa impazzire!

Postdi maxmula » 27/02/09 00:14

Ciao a tutti,
Qualche tempo fa ho realizzato un programma che mi permette di pilotare un modem tramite comandi AT.
Fino alla settimana scorsa ho vissuto felice coi miei Siemens MC35 ed i cellulari Nokia: il programma non è velocisimo ma funziona in maniera accettabile. Ma poi...
Lunedì mi hanno "regalato" un Siemens ES75, chiedendomi di adattare il programma a funzionare *anche* con questo modello.
Cerco di descrivere brevemente il casino che sto vivendo:

L'MC35 lo piloto tranquillamente così:
Codice: Seleziona tutto
    Function SCRIVI_COMANDO(ByVal PORTA  As String, ByVal  COMANDO As String)
        Dim com1 As IO.Ports.SerialPort
        (...)
        com1= My.Computer.Ports.OpenSerialPort(PORTA, VELOCITA, IO.Ports.Parity.None, 8, 1)   
                ' VELOCITA=115200, SETTABILE DALL'UTENTE
        com1.Write(COMANDO & vbCrLf)
               ' a questo punto, sulla porta arrivano i byte della risposta
        WAIT_MS(500)     'routine che attende 500 millisecondi
       
        While com1.BytesToRead > 0
           RISPOSTA= com1.ReadExisting
           Wait_MS(500)
        End While

        com1.Dispose

        SCRIVI_COMANDO = RISPOSTA
    End Function


Con l'ES75 le cose cambiano... se lo gestisco con la routine qui sopra... ogni volta mi dà la risposta relativa al comando precedente. Il modem reagisce nel modo corretto solo se cambio lo stato del pin DTR.
Il mio codice quindi è diventato:
Codice: Seleziona tutto
    Function SCRIVI_COMANDO(ByVal PORTA  As String, ByVal  COMANDO As String)
        Dim com1 As IO.Ports.SerialPort
        (...)
     
    Try
       com1= My.Computer.Ports.OpenSerialPort(PORTA, VELOCITA, IO.Ports.Parity.None, 8, 1)   
                ' VELOCITA=115200, SETTABILE DALL'UTENTE

        com1.Write(COMANDO & vbCrLf)
               ' a questo punto, sulla porta arrivano i byte della risposta

        com1.DtrEnable = True       'questo perchè se metto a true il pin DTR prima di scrivere il comando...
        Wait_MS(100)                    ' ... il vecchio MC35 non risponde più
        com1.DtrEnable = False      '

        WAIT_MS(500)     'routine che attende 500 millisecondi
       
        While com1.BytesToRead > 0
           RISPOSTA= com1.ReadExisting
           Wait_MS(500)
        End While
        com1.Dispose

   Catch ex as Exception
         [...]                 ' Codice che gestisce le eccezioni
   End Try

        SCRIVI_COMANDO = RISPOSTA
    End Function


I problemi inziano quando questa funzione viene chiamata ripetutamente perchè devo eseguire delle sequenze di comandi (ad esempio: inviare un SMS): dopo 2-3 comandi iniziano a generarsi eccezioni tipo "a device attached to the port is not functioning" oppure "Port COM4 does not exist".
In questi casi, dopo circa 10-15 secondi, il modem comunica "^SYSSTART" e risponde al primo comando, dopodiché la sequenza ricomincia. Altre volte, invece, la porta COM4 (USB) non viene più elencata tra quelle disponibili finché non spengo e riaccendo il terminale.

Domanda 1: Dove sbaglio?
Domanda 2: C'è un modo per capire che il terminale non è pronto a ricevere il comando successivo?

A complicare ulteriormente le cose c'è il fatto che il cliente vorrebbe usare un hub USB autoalimentato per comandare 4 modem di questo tipo (per ora, però, sto provando un solo terminale, senza hub). Secondo voi cosa dovrei aspettarmi?

Ogni suggerimento è il benvenuto...

Grazie in anticipo,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Sponsor
 

Torna a Programmazione


Topic correlati a "VB2008 - Di nuovo MODEM... il Siemens ES75 mi fa impazzire!":

Nuovo user
Autore: djbrake1977
Forum: Forum off-topic
Risposte: 0
Nuovo Pc
Autore: Kamui
Forum: Assistenza Hardware
Risposte: 32
Nuovo iscritto
Autore: briscola
Forum: Forum off-topic
Risposte: 0

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti