Newsgroup: it.comp.appl.access
Titolo: invio SMS con GSM

Salve a tutti, ho già cercato in post precedenti ma sono molto vecchi
e vorrei capire se qualcuno ha trovato una soluzione migliore.....
Da tempo ho creato un software gestionale in ACCESS a cui ho
implementato la funzione "invio SMS".
Premetto che il cliente non voleva utilizzare i vari gateway web,
quindi l'unica soluzione alla mia portata è stata quella di pilotare
da access il software del telefono per l'invio degli SMS. So che
questa è una soluzione empirica... ma per qualche SMS al giorno
funziona.
Ora c'è la necessità di un invio massivo di SMS, quindi quella
soluzione non mi piace per niente...
Varie postazioni di access riempiranno i dati di una tabella
posizionata su server sulla quale sarà collegato il cellulare GSM che
dovrà processare tutti gli invii automaticamente.
Per processarli utilizzerò un ciclo in VBA ma, quale software freeware
mi permetterà di inviare gli SMS con riga di comando?
Ho provato con SMSSENDER della Microsoft e funzionerebbe bene... se
per ogni SMS inviato non mi uscisse fuori una finestrella dove bisogna
premere OK (ed utilizzare la funzione sendkeys-ENTER- non mi sembra
tanto sicuro.
Mi rivolgo a voi sperando che in questi anni abbiate trovato qualcosa
di interessante. fatemi sapere grazie!!

 ha scritto nel messaggio 
news:61380710-bad3-40a3...@p4g2000yqm.googlegroups.com...
Salve a tutti, ho gi� cercato in post precedenti ma sono molto vecchi
e vorrei capire se qualcuno ha trovato una soluzione migliore.....
Da tempo ho creato un software gestionale in ACCESS a cui ho
implementato la funzione "invio SMS".
Premetto che il cliente non voleva utilizzare i vari gateway web,
quindi l'unica soluzione alla mia portata � stata quella di pilotare
da access il software del telefono per l'invio degli SMS. So che
questa � una soluzione empirica... ma per qualche SMS al giorno
funziona.
Ora c'� la necessit� di un invio massivo di SMS, quindi quella
soluzione non mi piace per niente...
Varie postazioni di access riempiranno i dati di una tabella
posizionata su server sulla quale sar� collegato il cellulare GSM che
dovr� processare tutti gli invii automaticamente.
Per processarli utilizzer� un ciclo in VBA ma, quale software freeware
mi permetter� di inviare gli SMS con riga di comando?
Ho provato con SMSSENDER della Microsoft e funzionerebbe bene... se
per ogni SMS inviato non mi uscisse fuori una finestrella dove bisogna
premere OK (ed utilizzare la funzione sendkeys-ENTER- non mi sembra
tanto sicuro.
Mi rivolgo a voi sperando che in questi anni abbiate trovato qualcosa
di interessante. fatemi sapere grazie!!
----------------------------------------
E perche' cerchi un software aggiuntivo ?
Non puoi pilotare il modem gsm direttamente da vba ?
basta che tu riesca a pilotare una porta seriale ed il gioco e' fatto
Ciao
RobertoA

 RobertoA
In effetti Roberto, riesco a pilotare il modem del cellulare tramite
seriale bluetooth...
ma ho difiicoltà a mettere in fila i comandi AT (per telefonare basta
fare ATD e n.telefono) ma per l'invio di sms non sono risucito a
scoprirlo. Poi ho letto in giro che i comandi AT non li prende sempre,
quindi bisogna impostare vari loop. E poi dovrei pilotare la seriale
nelle sia in trasmissione ma anche in ricezione e comincia ad essere
impegnativo...
Se poi darmi qualche dritta ti ringrazio (le notti ultimamente non
sono così tanto lunghe!.....)
Ciao
Emiliano

 
spendi qualcosa in un componente dedicato e semplificati la vita...
se il tipo di progetto lo giustifica, magari potrebbe essere 
utile/conveniente sviluppare il tutto in proprio, ma imho, vale comunque 
la pena di pensare a componenti di terze parti gia' pronti.
tanto per fare un nome, io uso smslibx.
supporta un buon numero di cellulari, e' utilizzabile da vb/vba, c'e' una 
versione demo (limitata, ovviamente) e con 100 euro te la cavi.
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 RobertoA
In effetti Roberto, riesco a pilotare il modem del cellulare tramite
seriale bluetooth...
ma ho difiicolt� a mettere in fila i comandi AT (per telefonare basta
fare ATD e n.telefono) ma per l'invio di sms non sono risucito a
scoprirlo. Poi ho letto in giro che i comandi AT non li prende sempre,
quindi bisogna impostare vari loop. E poi dovrei pilotare la seriale
nelle sia in trasmissione ma anche in ricezione e comincia ad essere
impegnativo...
Se poi darmi qualche dritta ti ringrazio (le notti ultimamente non
sono cos� tanto lunghe!.....)
Ciao
Emiliano
-------------------------------------
Non riesco ancora a vedere dove sta la difficolta'
AT+CMGS="91234567"<CR>Sending text messages is easy.<Ctrl+z>
Poi bisogna vedere che comandi recepisce il modem che stai usando
Certo che sarebbe auspicabile attivare la ricezione per vedere se vengono 
restituiti errori o messaggi che possono essere utili
E per questo basta cercare un po' in rete per trovare delle routine per 
comunicare con la seriale
Ciao
RobertoA

 RobertoA
Per me è difficile, è vero che riesco a comandare la seriale, ma
riciclando qualche codice trovato in rete qua e la... non ho
assolutamente dimestichezza con seriale e comandi AT....
Quindi una soluzione tipo quella di Paolo Opg potrebbe essere più
opportuna! (parlo per me.....)
Se avete altre soluzioni fatevi avanti!!!!

qui scrivo il messaggio
e qui premo ctrl-z
Questa procedura mi funziona con l'iper terminal.
Ma con la seriale, come glielo invio il comando ctrl-z???? (non dirmi
con sendkeys...non funzia...)
Sarebbe bello utilizzare un'unica linea come avevi scritto tu ma non
mi funziona (AT+CMGS="91234567"<CR>Sending text messages is easy.<Ctrl
+z>)
Potresti delucidarmi un pochino? Grazieeeee!!!
Emiliano

Dopo varie ore, riesco a mandare 1 msg correttamente...
ma se faccio un loop di piu messaggi, anche se intervallati di 10
secondi ciascuno ecco la sorpresa:
dal secondo messaggio in poi, non prende tutti i comandi che gli
invio. Praticamente mi tronca alcune stringhe!!
Premetto che ad ogni messaggio, prima di inviarlo, gli imposto il
timer della ricezione a 0 in maniera che non possa interferire (non so
se c'entra).
Una volta inviato reimposto il timer a 300 per leggere la seriale e
controllare su Me.TXTULTIMO se il modem mi da OK.
il msgbox"tutto bene" è una prova che poi sostituirò con un -1 sul
record spedito correttamente.
Come faccio ad essere sicuro che tutte siano inviate interamente?????
(lo sapevo che non dovevo addentrarmi troppo in questa cosa...)
posto il codice qui sotto per spedire 2 messaggi di seguito.
Private Sub Comando19_Click()
Dim PauseTime, Start, Finish, TotalTime
Me.TimerInterval = 0
Comm.Tx "AT" & vbCrLf
Comm.Tx "AT+CMGF = 1" & vbCrLf
Comm.Tx "AT+CMGS = ""329xxxxx""" & vbCrLf
Comm.Tx "CIAO1" & vbCrLf
Me.TXTULTIMO = ""
Comm.Tx " " & """" & vbCrLf
Me.TimerInterval = 300
 PauseTime = 10    ' Imposta la durata.
    Start = Timer    ' Imposta l'ora di inizio.
    Do While Timer < Start + PauseTime
        DoEvents        ' Passa il controllo ad altri processi.
    Loop
    'If TXTULTIMO Like ("*OK*") Then
    '  MsgBox "TUTTO BENE"
    ' End If
Me.TimerInterval = 0
Comm.Tx "AT" & vbCrLf
Comm.Tx "AT+CMGF = 1" & vbCrLf
Comm.Tx "AT+CMGS = ""329xxxxx""" & vbCrLf
Comm.Tx "CIAO2" & vbCrLf
Me.TXTULTIMO = ""
Comm.Tx " " & """" & vbCrLf
Me.TimerInterval = 300
 PauseTime = 10    ' Imposta la durata.
    Start = Timer    ' Imposta l'ora di inizio.
    Do While Timer < Start + PauseTime
        DoEvents        ' Passa il controllo ad altri processi.
    Loop
    'If TXTULTIMO Like ("*OK*") Then
    '  MsgBox "TUTTO BENE"
    ' End If
End Sub

Che modem usi ?

 Dopo varie ore, riesco a mandare 1 msg correttamente...
[cut]
...non so quanto venga pagato il tuo lavoro, ma... sicuro che non ti 
convenga investire qualche euro in un componente?


Il mio lavoro viene pagato sicuramente molto molto meno....
però ormai si tratta di una sfida personale...come tutte le altre
sfide in ACCESS d'altronde... per crescere bisogna investire sul
tempo.
Come modem uso un NOKIA N70 agganciato col bluetooth sulla com2
virtuale.

x paolo.
Eventualmente avresti qualche "componente da consigliarmi"?

 ha scritto nel messaggio 
news:a0b3ed45-b81a-42f7...@p4g2000yqm.googlegroups.com...
Dopo varie ore, riesco a mandare 1 msg correttamente...
ma se faccio un loop di piu messaggi, anche se intervallati di 10
secondi ciascuno ecco la sorpresa:
dal secondo messaggio in poi, non prende tutti i comandi che gli
invio. Praticamente mi tronca alcune stringhe!!
Premetto che ad ogni messaggio, prima di inviarlo, gli imposto il
timer della ricezione a 0 in maniera che non possa interferire (non so
se c'entra).
Una volta inviato reimposto il timer a 300 per leggere la seriale e
controllare su Me.TXTULTIMO se il modem mi da OK.
il msgbox"tutto bene" � una prova che poi sostituir� con un -1 sul
record spedito correttamente.



End Sub
__________________________________________________
Cos'� quel comm?

 Cos'è quel comm?
Ciao Massimiliano, ho cercato di adattare il codice di Giorgio Rancati
trovato sul sitocomune sez. General 6.159 (che poi dovrebbe essere
un'elaborazione tratta direttamente dalla microsoft (http://
support.microsoft.com/default.aspx?scid=kb;it;639415
). Spero che tu
possa aiutarmi!!!!
comm è praticamente il nome della sub del modulo di classe a cui fa
riferimento.
Ti posto per praticità ciò che corrisponde a comm.tx:
Public Sub Tx(txtString As String)
   ' trasmette una stringa (txtString) sulla porta seriale, dopo
   ' averla impacchettata in un buffer di byte
   Dim BytesToBeSend As Long 'Numero Byte da inviare
   Dim SentBytes As Long     'Numero Byte inviati
   Dim Buffer() As Byte      'Buffer da inviare
   Dim fSuccess As Integer
   Dim ferror As Integer
   If hCom < 1 Then
      MsgBox "Porta non aperta"
      Exit Sub
   End If
   If txtString = "" Then Exit Sub
   BytesToBeSend = Len(txtString)
   'Converto la stringa unicode in un array di byte
   Buffer = StrConv(txtString, vbFromUnicode)
   ' scrive sulla porta seriale; in particolare, imposta a 0 (NULL)
   ' l'ultimo parametro della WriteFile, poiche' la comunicazione
   ' sara' sincrona (non overlapped)
   fSuccess = WriteFile(hCom, Buffer(0), BytesToBeSend, SentBytes, 0)
   If (fSuccess <> 0) And (SentBytes = BytesToBeSend) Then
      FlushFileBuffers (hCom)
   Else
      ferror = Err.LastDllError
      MsgBox "TX - Errore " & ferror
   End If
End Sub

 Cos'� quel comm?
Ciao Massimiliano, ho cercato di adattare il codice di Giorgio Rancati
trovato sul sitocomune sez. General 6.159 (che poi dovrebbe essere
un'elaborazione tratta direttamente dalla microsoft (http://
support.microsoft.com/default.aspx?scid=kb;it;639415
). Spero che tu
possa aiutarmi!!!!
comm � praticamente il nome della sub del modulo di classe a cui fa
riferimento.
Ti posto per praticit� ci� che corrisponde a comm.tx:






End Sub
Risposta:
Andava detto per completezza del thread