Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #18927
| From | SB <stNOOObenevSPAM@tin.it> |
|---|---|
| Newsgroups | it.comp.lang.visual-basic |
| Subject | Re: MSComm e USB |
| Date | 2016-11-29 11:26 +0100 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <qbiq3cp6hqfnega3lc6kmds7g7s1teoja2@4ax.com> (permalink) |
| References | <nuncmf$1otd$1@gioia.aioe.org> <lohu0c1qav6e68qkhmh0cnsop8tp75lpj2@4ax.com> <nunjk3$63r$1@gioia.aioe.org> <5emu0c5r4q498dco9fdql8vaverfc86rn2@4ax.com> <o1ic6f$16pn$1@gioia.aioe.org> |
Il giorno Mon, 28 Nov 2016 23:47:46 +0100, Gulp® <gulp@hotmail.it> ha scritto:
>Il 25/10/16 15:19, SB ha scritto:
>> Il giorno Tue, 25 Oct 2016 14:36:21 +0200, Gulp® <gulp@hotmail.it> ha scritto:
>>
>> Potresti avere usato i comandi di sincronismo, RTS\ CTS\, o potrebbe essere il
>> protocollo di handshake, il convertitore potrebbe anche mandare la risposta
>> quando non lo leggi, devi indagare.
>
>Allora, funziona, o meglio non è sordo come pensavo.
>All'arrivo dello squillo si apre la finestra che dovrebbe visualizzarmi
>la scritta con l' ID del chiamante...ma la stringa, a quanto pare,
>risulta uguale a zero e la finestra rimane vuota. Mah.
>
>Questo il "cuore" del codice:
>
>Private Sub CallerID()
>On Error GoTo errore
>If COM1.PortOpen = True Then Exit Sub
>COM1.CommPort = PortaModem
>COM1.InputMode = comInputModeBinary
>COM1.PortOpen = True
>COM1.Output = "ATV1Q0" & vbCr
>Wait 1
>COM1.Output = "AT#CID=1" & vbCr
>Wait 1
>COM1.PortOpen = False 'per svuotare il buffer
>COM1.PortOpen = True
>Exit Sub
>errore:
>ErrTelef
>End Sub
Qualche osservazione:
Non specifichi nell'apertura della porta la proprietà
Handshaking, che dovrebbe essere comNone o com RTS
a seconda del modem.
Meglio sempre specificare tutti i parametri all'apertura della porta.
Inoltre prima di ricevere sempre meglio assicurarsi che .RTSEnable
sia nella giusta condizione indipendentemente dal protocollo di
Handshaking selezionato, perchè comanda direttamente il filo RTS,
e se il modem non vede il suo CTS corretto non invia nulla.
Normalmente ci vuole .RTSEnable = True
Poi, invece di verificare se il modem ti risponde "OK" tu metti
un'attesa di 1 secondo, così non sai se il modem ha capito e ha risposto.
Infine, dal momento che l'evento comEvRing dipende solo
dallo stato logico del filo Ring che il modem varia comunque quando squilla,
non hai modo di sapere se il modem ha ricevuto i comandi e risponderà.
Quindi, meglio fare un loop di attesa della risposta prima di andare avanti,
una cosa così,
Declare Function GetTickCount Lib "kernel32" () As Long
Declare Sub Sleep Lib "kernel32" (ByVal n As Long)
Fine = GetTickCount + 5000 '5 sec TEMPO LIMITE RISPOSTA
Do: DoEvents: Sleep 1
If Comm1.InBufferCount > 0 Then
[....] 'verifica OK, poi Exit Do
End If
If GetTickCount > Fine Then
Msgbox "ERROR" : Exit Do
End If
Loop
Ho Usato due API perchè si controlla meglio l'overtime e si evita
la CPU al 100% durante il loop.
Se non risponde prova a variare Il protocollo e .RTSEnable
Se il modem risponde OK guarderemo anche il resto del codice,
che così ad occhio potrebbe anche funzionare.
>Private Sub COM1_OnComm()
>'Evento sulla porta
>If COM1.CommEvent = comEvRing Then
>Suona App.Path & "\ringin.wav", 1
>End If
>AscoltaPorta 'legge i dati in arrivo alla porta
>frmCaller.Attesa 'mantiene aperto il form finchè squilla il telefono
>End Sub
>
>Private Sub AscoltaPorta()
> Dim buffer As Variant
> Dim arr() As Byte
> Dim dato As String
> Dim n As Long
> Dim tsyn As Single
>
> dato$ = ""
> tsyn = Timer + 10
> While dato$ = "" And Timer < tsyn
> ' Controlla la presenza di dati.
> If COM1.InBufferCount Then
> ' Legge i dati.
> COM1.InputLen = 0 'COM1.InBufferCount
> buffer = COM1.Input
> COM1.InputLen = 0
> arr = buffer
> ' Converte i dati letti in una stringa
> For n = 0 To UBound(arr)
> dato$ = dato$ + Chr$(arr(n))
> Next n
> End If
> Wend
>stringas = dato$
>If InStr(stringas, "DATE") > 0 Then
>Dati
>End If
>End Sub
>
>
>
>--
>Gulp®
--
ciao
Stefano
Back to it.comp.lang.visual-basic | Previous | Next — Previous in thread | Next in thread | Find similar
MSComm e USB Gulp® <gulp@hotmail.it> - 2016-10-25 12:38 +0200
Re: MSComm e USB SB <stNOOObenevSPAM@tin.it> - 2016-10-25 14:03 +0200
Re: MSComm e USB Gulp® <gulp@hotmail.it> - 2016-10-25 14:36 +0200
Re: MSComm e USB SB <stNOOObenevSPAM@tin.it> - 2016-10-25 15:19 +0200
Re: MSComm e USB Gulp® <gulp@hotmail.it> - 2016-11-28 23:47 +0100
Re: MSComm e USB SB <stNOOObenevSPAM@tin.it> - 2016-11-29 11:26 +0100
Re: MSComm e USB Gulp® <gulp@hotmail.it> - 2016-12-01 16:22 +0100
Re: MSComm e USB SB <stNOOObenevSPAM@tin.it> - 2016-12-01 17:45 +0100
Re: MSComm e USB SB <stNOOObenevSPAM@tin.it> - 2016-12-02 19:28 +0100
Re: MSComm e USB Gulp® <gulp@hotmail.it> - 2016-12-01 16:28 +0100
Re: MSComm e USB SB <stNOOObenevSPAM@tin.it> - 2016-12-01 17:35 +0100
Re: MSComm e USB Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2016-12-02 17:45 +0100
csiph-web