اطلاعیه

Collapse
No announcement yet.

نمونه کد برای ارسال AT Command به مودم

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : نمونه کد برای ارسال AT Command به مودم

    نوشته اصلی توسط ehsan_akbari


    خوب من هم دقیقا میخوام از سیگنالهای DTMF استفاده کنم

    میخواستم یه ماژول معرفی کنید که هم قیمتش مناسب باشه و هم راه اندازیش راحت باشه

    چون فقط قابلیت دیکد و ارسال DTMF رو داشته باشه کافیه
    چیز دیگه ای نمیخوام
    پس اگه دوستان موافق باشن یه پست جدید راه بندازیم
    در مورد این مفصل بحث شده .با میکرو به تنهایی میشه dtmf تولسد مرد یه سرچ بزن دوست عزیز
    علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

    دیدگاه


      #17
      پاسخ : نمونه کد برای ارسال AT Command به مودم

      نوشته اصلی توسط omega_adiban


      خوب من هم دقیقا میخوام از سیگنالهای DTMF استفاده کنم

      میخواستم یه ماژول معرفی کنید که هم قیمتش مناسب باشه و هم راه اندازیش راحت باشه

      چون فقط قابلیت دیکد و ارسال DTMF رو داشته باشه کافیه
      چیز دیگه ای نمیخوام
      پس اگه دوستان موافق باشن یه پست جدید راه بندازیم
      در مورد این مفصل بحث شده .با میکرو به تنهایی میشه dtmf تولسد مرد یه سرچ بزن دوست عزیز
      [/quote]

      نیاز به تولید و دیکد DTMF در شبکه های WLL دارم

      لطفا پست جدیدی که باز کردم رو بخون و کمک کن

      دیدگاه


        #18
        پاسخ : نمونه کد برای ارسال AT Command به مودم

        نوشته اصلی توسط joop
        با سلام
        برای کنترل مودمها و خواندن اطلاعات از آنها می توان ازپورت سریال میکرو کمک گرفت.
        با ارسال دستورات AT می توان با مودم ارتباط برقرار نمود.
        در زیر نمونه ای از کد برای ارتباط با مودم GSM نوشته شده است.
        این مودم، مودم Terinal4 از شرکت Contrive می باشد
        کافی سیم کارت را درون آن گذاشته ، سپس Power را به آن متصل نموده و با ارسال دستورات AT آن را کنترل نمایید
        ' SMS.BAS
        ' (c) 2002 MCS Electronics
        ' This sample shows how to use AT command on a GSM mode
        ' The GSM modems are available from www.mcselec.com
        '------------------------------------------------------------------------------
        'tested on a 2314
        $regfile = "2313def.dat"

        'XTAL = 10 MHZ
        $crystal = 10000000

        'By default the modem works at 9600 baud
        $baud = 9600

        'HW stack 20, SW stack 8 , frame 10

        'some subroutines
        Declare Sub Getline(s As String)
        Declare Sub Flushbuf()
        Declare Sub Showsms(s As String )


        'used variables
        Dim I As Byte , B As Byte
        Dim Sret As String * 66 , Stemp As String * 6

        'we use a serial input buffer
        Config Serialin = Buffered , Size = 12 ' buffer is small a bigger chip would allow a bigger buffer

        'enable the interrupts because the serial input buffer works interrupts driven
        Enable Interrupts

        'define a constant to enable LCD feedback
        Const Uselcd = 1
        Const Senddemo = 1 ' 1= send an sms
        Const Pincode = "AT+CPIN=1234" ' pincode change it into yours!
        Const Phonenumber = "AT+CMGS=+31653123456" ' phonenumber to send sms to

        #if Uselcd = 1
        Cls
        Lcd "SMS Demo"
        #endif

        'wait until the mode is ready after power up
        Waitms 3000

        #if Uselcd = 1
        Lcd "Init modem"
        #endif


        Print "AT" ' send AT command twice to activate the modem
        Print "AT"
        Flushbuf ' flush the buffer
        Print "ATE0"
        #if Uselcd = 1
        Home Lower
        #endif

        Do
        Print "AT" : ' Waitms 100
        Getline Sret ' get data from modem
        #if Uselcd = 1
        Lcd Sret ' feedback on display
        #endif
        Loop Until Sret = "OK" ' modem must send OK
        Flushbuf ' flush the input buffer
        #if Uselcd = 1
        Home Upper : Lcd "Get pin mode"
        #endif
        Print "AT+cpin?" ' get pin status
        Getline Sret
        #if Uselcd = 1
        Home Lower : Lcd Sret
        #endif
        If Sret = "+CPIN: SIM PIN" Then
        Print Pincode ' send pincode
        End If
        Flushbuf
        #if Uselcd = 1
        Home Upper : Lcd "set text mode"
        #endif
        Print "AT+CMGF=1" ' set SMS text mode
        Getline Sret ' get OK status
        #if Uselcd = 1
        Home Lower : Lcd Sret
        #endif

        'sms settings
        Print "AT+CSMP=17,167,0,0"
        Getline Sret
        Print "AT+CNMI=0,1,2,0,0"
        Getline Sret

        #if Senddemo = 1
        #if Uselcd = 1
        Home Upper : Lcd "send sms"
        #endif
        Print Phonenumber
        Waitms 100
        Print "BASCOM AVR SMS" ; Chr(26)
        Getline Sret
        #if Uselcd = 1
        Home Lower : Lcd Sret 'feedback
        #endif
        #endif


        'main loop
        Do
        Getline Sret ' wait for a modem response
        #if Uselcd = 1
        Cls
        Lcd "Msg from modem"
        Home Lower : Lcd Sret
        #endif
        I = Instr(sret , ":&quot ' look for :
        If I > 0 Then 'found it
        Stemp = Left(sret , I)
        Select Case Stemp
        Case "+CMTI:" : Showsms Sret ' we received an SMS
        ' hanle other cases here
        End Select
        End If
        Loop ' for ever


        'subroutine that is called when a sms is received
        's hold the received string
        '+CMTI: "SM",5
        Sub Showsms(s As String )
        #if Uselcd = 1
        Cls
        #endif
        I = Instr(s , ",&quot ' find comma
        I = I + 1
        Stemp = Mid(s , I) ' s now holds the index number
        #if Uselcd = 1
        Lcd "get " ; Stemp
        Waitms 1000 'time to read the lcd
        #endif

        Print "AT+CMGR=" ; Stemp ' get the message
        Getline S ' header +CMGR: "REC READ","+316xxxxxxxx",,"02/04/05,0149+00"
        #if Uselcd = 1
        Lowerline
        Lcd S
        #endif
        Do
        Getline S ' get data from buffer
        Select Case S
        Case "PORT" : 'when you send PORT as sms text, this will be executed
        #if Uselcd = 1
        Cls : Lcd "do something!"
        #endif
        Case "OK" : Exit Do ' end of message
        Case Else
        End Select
        Loop
        #if Uselcd = 1
        Home Lower : Lcd "remove sms"
        #endif
        Print "AT+CMGD=" ; Stemp ' delete the message
        Getline S ' get OK
        #if Uselcd = 1
        Lcd S
        #endif
        End Sub


        'get line of data from buffer
        Sub Getline(s As String)
        S = ""
        Do
        B = Inkey()
        Select Case B
        Case 0 'nothing
        Case 13 ' we do not need this one
        Case 10 : If S <> "" Then Exit Do ' if we have received something
        Case Else
        S = S + Chr(b) ' build string
        End Select
        Loop
        End Sub

        'flush input buffer
        Sub Flushbuf()
        Waitms 100 'give some time to get data if it is there
        Do
        B = Inkey() ' flush buffer
        Loop Until B = 0
        End Sub
        سلام
        کسی میتونه بیسیک این برنامه رو بذاره؟
        یه مقدار تحلیل کردنش مشکله
        اگر کسی در این مورد راهنمایی بکنه ممنون میشم

        دیدگاه

        لطفا صبر کنید...
        X