Problema con comunicacion puerto serie y comandos at

Iniciado por rod00x3, 10 Enero 2013, 17:01 PM

0 Miembros y 1 Visitante están viendo este tema.

rod00x3

La razon por la cual solicito su ayuda es la siguiente, tengo un pequeño modem capas de enviar y resivir SMS, claro se comunica con datos AT, cree una pequeña aplicacion en visual basic 6, para enviarle y resivir parametros con el modem, las pruebas iniciales se realizaron con un dispositivo diferente, y fueron exitosas, el problema se da cuando coloco el moden real, la aplicacion tiene un comportamiento muy extraño, ejemplo
cuando envio un comando no me responde nada, pero al resetear el equipo veo su arranque, en la aplicacion aproposito no sierro el puerto, abro una hiperterminal y se ejecutan los comandos que he enviado, los comandos los ejecuto desde la hiperterminal y todo funciona perfectamente, el ejemplo en el que me base para trabajar es de este link http://www.youtube.com/results?search_query=visual+basic+6.0+%2B+comunicaci%C3%B3n+serial+rs485&oq=Visual+Basic+6.0+%2B+Comunicaci%C3%B3n+Serial+rs4&gs_l=youtube-reduced.1.0.33i21.2335223.2346498.0.2348326.14.12.2.0.0.0.365.1792.8j2j0j2.12.0...0.0...1ac.1.P7skQUPC7Vs

Pero ya no se que mas hacer o que puede ser el problema?? alguien tiene alguna idea??

BlackZeroX

#1
Este es un código pequeño:

La clase clsComm: http://pastebin.com/4djTCJyf

http://foro.elhacker.net/programacion_visual_basic/mscomm_manejar_el_celular_desde_la_pc-t320786.0.html;msg1586274#msg1586274

Código (vb) [Seleccionar]


Option Explicit

Private WithEvents obj_clscom           As clsCom

'
'   /////////////////////////////////////////////////////////////
'   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
'   //                                                         //
'   // Web:     http://InfrAngeluX.Sytes.Net/                  //
'   //                                                         //
'   //    |-> Pueden Distribuir Este codigo siempre y cuando   //
'   // no se eliminen los creditos originales de este codigo   //
'   // No importando que sea modificado/editado o engrandecido //
'   // o achicado, si es en base a este codigo                 //
'   /////////////////////////////////////////////////////////////
'   // http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=6:artwait&catid=2:catprocmanager&Itemid=8
'   /////////////////////////////////////////////////////////////

Private Declare Function WaitMessage Lib "user32" () As Long

Enum eTime
    Horas = 3600
    Minutos = 60
    Segundos = 1
End Enum

Public Sub Wait(ByVal vToWait&, Optional ByVal ThisWait As eTime = Segundos, Optional ByVal UseAllProc As Boolean = False)
Dim vDateE      As Date
    vDateE = DateAdd("s", vToWait& * (ThisWait + 0), Time)
    Do While vDateE > Time
        Call WaitMessage
        If Not UseAllProc Then DoEvents
    Loop
End Sub
Private Sub Form_Load()
    Set obj_clscom = New clsCom
    With obj_clscom
        .ComPort = 4
        .ComSettings = "57600,N,8,1"    ' 57600 bps, sin paridad, 8 bits de data, 1 bit de stop
        .TimerDelay = 1000              ' 1000ms = 1 Segundo para chequear si entro data
        .TimerEnabled = True
        If .InitCom Then
            Call .WriteCom("AT" & vbCr)
' wait()
            Call .WriteCom("AT+CMGF=1" & vbCr)
' wait()
            Call .WriteCom("AT+CMGS=" & Chr(34) & "0445526651140" & Chr(34) & vbCr) ' // Segun el protocolo lo que nos retorna es +CMGS: <Num. Identificador>
' wait()
            Call .WriteCom("Espero una jalada en mi cel, aun que ya no tengo credito xP" & Chr(26))    ' 26 = Ctrl+Z ( Segun el protocolo AT )
        End If
    End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set obj_clscom = Nothing
End Sub

Private Sub obj_clscom_DataReceived(ByVal strData As String)
    Debug.Print strData
    If InStr(1, strData, "+CMGS:") > 0 Then
        If InStr(1, strData, "OK") > 0 Then
            Dim str_Ret()       As String
            str_Ret() = Split(Replace(Replace(strData, vbCr, ""), "OK", ""), " ")
            Call obj_clscom.WriteCom("AT+CMSS=" & Val(str_Ret(1)) & vbCr)
        End If
    End If
End Sub



Dulces Lunas!¡.
The Dark Shadow is my passion.

rod00x3

Gracias siempre me respondes y te lo agradezco.