Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



GSM СССР

Сообщений 91 страница 103 из 103

1

Вопрос прям наболевший за сутки, нужна передача по USB 8 бит, маленький код, дескриптор и т.п. Кто может видел с описанием на нашенском ). А то пробежался и все варианты очень жрут много памяти. Не могу найти по минимум кода и простоты передачи данных. Может я принцип не понял, объясните мне пожалуйста, там каждый раз при приёме и ответе нужно указывать принято и ждать подтверждение?).
Вообщем нужна связь с ПК по USB, софт на ПК можно написать ... интересует как можно принять и отправить 8 бит, с минимум кода в библиотеке.
Может конечно я ря тревожусь и Ва потревожу, но такая ситуация. Есть можем SIM300, контроллер atmega8, хочу сделать себе мобилу знатную и блатную (спортивную). Хватит мне памяти МК, если я экран не буду использовать, только RX/TX общение с модемом и по USB временами СМСить, врятли хватит на чтение голосом СМС.

Приложение для ознакомления:

Телефонный аппарат:
http://cs315219.vk.me/v315219419/7b9a/RdME_AOz5js.jpg
модем, микрофон, динамик:
http://cs315219.vk.me/v315219419/7b7f/7OvpN8Ot9Ps.jpg
Перемотанный в 270 Ом звонок:
http://cs315219.vk.me/v315219419/7b4f/cA7tN5S07FY.jpg
Вытравленная пробая плата, позже весь проект выложу вместе с исходником Lay 6
http://cs315219.vk.me/v315219419/7b88/0glq4LYVGEI.jpg
Девайс в начальной стадии, звонок уже работает, мини инвертор пашет ), всё как в атс 4 сек пауза / 1 сек звонок.
http://cs315219.vk.me/v315219419/7bcb/BP9UY6fZhxw.jpg

0

91

Блин, комп во сней был ночь и пол дня, разбудил и видимо Bascom AVR глюкнул, за всё нормально! за исключением одного мистического момента.

Ну почему такие проблемы?
Всё просто, звоню на модем, снимаю трубку, микрофон работает, но когда происходит исходящий выов - микрофон не работает! Ну ни как.
Вызов принимаю: "ATH"
Номер набираю "ATD..." - не работает микрофон (он просто отключен, может какая команда есть?)
со всех жду подтверждение "ОК", всё отлично.
Камера на готове,  как всё исправлю, останется подтянуть таймер для гудка в трубке, а треск при наборе и если взять трубку во время звонка - уже сделал  :crazyfun:
А да, предпологаю использую выход гарнитуры - AT+CHFA=1

Отредактировано Ev3658 (2013-09-09 15:06:33)

0

92

как понимаю модуль вырван из охранки? если "да", то там в функционале был микрофон (обработка его)? если "нет" - значит прошивка в чипе такая.

0

93

RDW написал(а):

как понимаю модуль вырван из охранки? если "да", то там в функционале был микрофон (обработка его)? если "нет" - значит прошивка в чипе такая.

Онработает в одном направлении,  дело в том, что всё зависит исходящий или входящий звонок. Модуль из охранки Mega SX100 (вроде), врят-ли производили в РФ стали прошивать и так рабочее средство, у них охранка на Atmega165.
Прост оспрашиваю, кто сталкивался с выбором канала микрофона и наушника по отдельности?
Для архивности выложу, вдруг откатываться буду:

Код:
$regfile = "m8def.dat"
$crystal = 14745600
$hwstack = 16
$swstack = 64
$framesize = 32
$baud = 19200

'Config Timer0 = Timer , Prescale = 1024 , Compare A = Set , Clear Timer = 1
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0
'Config Serialin = Buffered                                  , Size = 32

Declare Sub Nokia_init()
Declare Sub Nokia_clear()
Declare Sub Nokia_text(byval Nokia_x As Byte , Byval Nokia_y As Byte , Byval Nokia_text As String , Byval Nokia_inversion As Byte)


Nokia_spi_data Alias Portb.1                                'MOSI       - можно задать любую ножку
Nokia_spi_clock Alias Portb.2                               'SCK        - можно задать любую ножку
Nokia_cs Alias Portb.0                                      'CS         - можно задать любую ножку
Display_reset Alias Portd.7                                 'LCD_RESET  - можно задать любую ножку
Display_reset = 1
Nokia_cs = 1

Dim W As Iram Word At 8 Overlay
Dim Nokia_data_9 As Integer


Dim X As Byte



'порты экрана
Config Portd.7 = Output
Config Portb.0 = Output
Config Portb.2 = Output
Config Portb.1 = Output


Config Portc.3 = Output                                     'подсветка и питание набирателя
Config Portc.4 = Input                                      'начало набора номера

Config Portd.2 = Output                                     ' питание микрофона и звуки
Config Portd.4 = Output                                     ' Таймер Звука Занято И Т.п.



'порт положения трубки
Config Portd.3 = Input
'порты звонка
Config Portd.5 = Output
Config Portd.6 = Output
'алиасы
Faza1 Alias Portd.5
Faza2 Alias Portd.6

Faza2 = 0

Trubka Alias Pind.3
Naborcifri Alias Pinc.2
Pitanienabiratela Alias Portc.3
Prerivanienabiratela Alias Pinc.4
Microfon Alias Portd.2
Dinamik Alias Portd.4
Dinamik = 0

Dim Pause1 As Integer

Dim Kodgoroda As String * 10
Dim Gorodcifri As Byte

'========================================================================================================================
Kodgoroda = "883145"                                        'тут внесите код города
Gorodcifri = Len(kodgoroda) - 1                             ' можно просто приравнять к числу цифр городского местного номера если он меньше 7ми
Pause1 = 16000                                              'подстройка паузы, если набираете 5значный номер, то до продолжения набора другой цифры по истечении этой паузы телефон начинает набор.
'========================================================================================================================
Dim Eror As Byte
Dim P As Byte
Dim O As Byte
Dim N As Byte                                               'переменные для набирателя
Dim N1 As Byte                                              'переменные для набирателя
Dim Buff As Byte
Dim B As Byte
Dim Cifra(11) As Byte
'Dim Trubka As Byte
Dim Nabor As Byte                                           'состояние положена/снята трубка
Dim T As Byte
Dim T1 As Byte
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As Byte
Dim Tbuf As Integer                                         'антизависание в чтение буфера
Dim Zvonok As Byte
' Если Zvonok:
'0-трубка положена
'1-трубка снята без поступления звонка
'2-поступление звонка при положенной трубки
'3-трубка снята в ответ на звонок
'4-трубка положена после ответа на звонок
'5-режим набора номера
'
'
'




Dim Modem As String * 255
Dim S As String * 255
Dim Text1 As String * 16
Call Nokia_init()

Call Nokia_text(1 , 1 , ">Модем АУ" , 1)
Text1 = "AT"
Gosub Inicilizacija
Call Nokia_text(10 , 1 , "-Я тут" , 1)

Call Nokia_text(1 , 2 , "Как состояние-" , 1)
Do
Gosub Sim300

If Left(modem , 1) = "+" Then Exit Do
Loop
Call Nokia_text(15 , 2 , "ОК" , 1)
Call Nokia_clear
Waitms 1
Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
'Disable Urxc


Waitms 270
Print "AT"
Text1 = "AT+CHFA=1"
Call Nokia_text(1 , 2 , ">AT+CHFA=1" , 1)                   '0-телефон, 1-гарнитура (выходы у модема)
Gosub Inicilizacija
Call Nokia_text(1 , 3 , ">OK" , 1)
Text1 = "AT+CLVL=100"
Call Nokia_text(1 , 4 , ">AT+CLVL=100" , 1)

Gosub Inicilizacija
Call Nokia_text(1 , 5 , ">ОК" , 1)
Wait 1

Call Nokia_clear

Goto Programma:
'======================== ПОДПРОГРАММА =====================
'блок, которому в переменную Text1 указать команду можема, он будет ждать ответ ОК и повторять через каждые 25000 циклов комманду в переменной Text1 - пока не дождётся ОК
Inicilizacija:
Modem = ""
Do
Call Nokia_text(1 , 7 , Text1 , 0)
T4 = T4 + 1
Gosub Sim300
If T4 > 250 Then
'      Text1 = Left(s , 16)
     'Text1 = Str(t4)
     'Call Nokia_text(1 , 5 , Text1 , 0)
     Print Text1
     T4 = 0
   End If
If Modem <> "" Then
   If Modem = "OK" Then
      Eror = 0
      Exit Do
   End If

   If Left(modem , 3) = "ERR" Then
      Eror = 1
      Exit Do
   End If
   'Waitms 1

End If
Loop
Return

'Error:
'If Mid(modem , 6 , 12) = ":SIMERR" Then
'      If N > 0 Then
'         For P = 1 To 25
'            Sound Dinamik , 50 , 140
'        Next P
'        Eror = 1
'        End If
'End If

Return

'============================= конец блока мозгоёбной части.


'==================== Звонок ==============================
Zumer:
   Waitms 1                                                 'общая задержка для 4х сек.
   T2 = T2 + 1
   If T2 <= 30 Then
      Faza1 = 1
      Faza2 = 0
      Pitanienabiratela = 0
      Waitms 35                                             'пауза фазы +
      Faza1 = 0
      Faza2 = 1
      Pitanienabiratela = 1
      Waitms 35                                             'пауза фазы -
      Faza2 = 0
   End If
   If T2 = 4000 Then T2 = 0                                 'пауза между звонком (в литре сказано должно 4 сек. но опрос буфера выгребает секунду-две
Return






'======================  ВЫВОД ГРАФИЧЕСКОЙ ИНФОРМАЦИИ =====================
Informacia:
   'Call Nokia_clear()
   Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
   Call Nokia_text(1 , 2 , "Данные с модема:" , 0)
   'Call Nokia_text(1 , 3 , "                " , 0)
   'Text1 = "Zvonok:" + Str(zvonok)
   'Call Nokia_text(1 , 4 , Text1 , 1)
   Call Nokia_text(1 , 8 , "=RADIOKSTOVO.RU=" , 1)
'тех.информация для отладки набора номера /переменные N/N1/порт Ц2/порт Ц4

If Zvonok = 0 Then Call Nokia_text(1 , 4 , "0Ожидание       " , 0)
If Zvonok = 1 Then Call Nokia_text(1 , 4 , "1Ожидан.действия" , 0)
If Zvonok = 2 Then Call Nokia_text(1 , 4 , "2Вам звонят!    " , 0)
If Zvonok = 3 Then Call Nokia_text(1 , 4 , "3Разговор       " , 0)
If Zvonok = 4 Then Call Nokia_text(1 , 4 , "4Трубка положена" , 0)
If Zvonok = 5 Then Call Nokia_text(1 , 4 , "5Набор номера   " , 0)
   Text1 = Left(modem , 16)
   Call Nokia_text(1 , 3 , Text1 , 0)
   Text1 = "T3:" + Str(t3)
   Call Nokia_text(1 , 6 , Text1 , 0)

'===вывод номера
'Call Nokia_text(1 , 4 , "Набранный номер" , 0)
Text1 = ""
Gosub Sbornomera
     Text1 = ">" + Text1
     Call Nokia_text(1 , 5 , Text1 , 0)


Return

'================================ РАБОТА С БУФЕРОМ И ОПРОСОМ МОДЕМА ========================================
Sim300:
'B = Inkey()
'If B > 0 Then

Tbuf = 0
If Ischarwaiting() = 1 Then
Do
   B = Inkey()
   Tbuf = Tbuf + 1
   Select Case B
       Case 10 : If S <> "" Then
                     Modem = S
                     S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
                     Exit Do
                    End If
                  Case Else
         If B > 32 Then
            Tbuf = 0
            S = S + Chr(b) :
         End If
    End Select
    If Tbuf > 25000 Then
           If Len(s) > 30 Then
             S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
             Exit Do
             End If
           Exit Do
            End If

   Loop
End If
Return
'
'End If
Return
'================ Подпрограмма режима ожидания===============================================================
Ozhidanie:

'Text1 = Left(modem , 4)
If Modem = "RING" Or Text1 = "+CLI" Then                    'поступление звонка
Print "AT+CHFA=1"

         If Zvonok = 5 Then Gosub Antitrubka
         If Trubka = 0 Or Zvonok = 4 Then Zvonok = 2
End If


If Zvonok = 1 And N = 1 Then Zvonok = 5





If Zvonok = 3 Then

   If T < 125 Then
      Pitanienabiratela = 0
      Else
      Gosub Pitanie
   End If

End If

If Zvonok = 4 Then Zvonok = 0


If Zvonok = 1 Or Zvonok = 5 Then                            '================= ОЗВУЧКА ГУДОК и Т.П.
    If N = 1 Or N = 0 Then Sound Dinamik , 1 , 220
    If N = 2 And Cifra(1) = 8 Then Sound Dinamik , 1 , 200
End If

Gosub Sim300


If Zvonok = 5 Then                                          ' ========== начало 5го правила "Режим набора номера"

   Gosub Nabornomera

   If N = 11 Then
      Text1 = "ATD"                                         'Если городской 7 значный, то не добавляем
      Gosub Sbornomera
      Text1 = Text1 + ";"
      Print Text1
      Zvonok = 3
   End If

   If Cifra(1) <> 8 And Cifra(1) <> 0 Then
      If N < 3 And N = 6 Then T3 = 0
      If N > 7 Then T3 = 0
      If N = Gorodcifri Or N = 7 Then T3 = T3 + 1
      If N = 3 Then T3 = T3 + 1

         If T3 = Pause1 Then
            Text1 = "ATD"                                   'задержка набора 5ти значного номера
            If N = Gorodcifri Then Text1 = Text1 + Kodgoroda       'Если городской пятизначный, добавляем префикс
               Gosub Sbornomera
               Text1 = Text1 + ";"
                print Text1
               Zvonok = 3                                   'переходим В Режим "трубка снята"
         End If
   End If
End If


Return

'=================== Подрограмма набора номера (заранее лучше обнулить N - номер ячейки массива N1 - кол-во тактов набирателя Nabor - шаг набора цифры/номера, запоминает 11 цифр в Cifra(n)
'==== Подпрограмма сбора номера из массива, желательно переменную Text1 обнулить=======================================================
Sbornomera:
For P = 1 To N
   Text1 = Text1 + Str(cifra(p))
   B = Cifra(p) * 10
   B = B + 150
Next P
Return


Sbros:
   For P = 1 To 11
      Cifra(p) = 0
   Next P
   N = 0
   N1 = 0
   Eror = 0
   T3 = 0
   Call Nokia_clear
Return                                                      '========================================================================


Antitrubka:                                                 'положить вызов
   Text1 = "ATH"
   Gosub Inicilizacija
Return



Nabornomera:
Pitanienabiratela = 1                                       'включение питания номеронабирателя
If Nabor = 0 And Naborcifri = 1 Then
   If Prerivanienabiratela = 0 Then
      N1 = N1 + 1
      Sound Dinamik , 150 , 40                              'украшение
     Nabor = 1
   Waitms 20
   End If
End If

If Prerivanienabiratela = 1 And Nabor = 1 Then

   Nabor = 2
   Waitms 20
End If

If Nabor = 2 And Naborcifri = 1 Then Nabor = 0


If N1 <> 0 And Naborcifri = 0 Then
   If Prerivanienabiratela = 1 Then
      If N1 = 10 Then N1 = 0

         N = N + 1
         Cifra(n) = N1
         If N = 12 Then
            N = 1
            For P = 1 To 11
            Cifra(p) = 0
            Next P
         End If
         Gosub Informacia
         Nabor = 0
         N1 = 0
   End If
End If

Return

Pitanie:
If Trubka = 1 Then
   Microfon = 1
   Pitanienabiratela = 1
      Else
         Microfon = 0
         Pitanienabiratela = 0
End If

Return


'================ Подпрограмма режима разговора===========================================================
Razgovor:

Return

'========================================================================================
'========================================================================================
'========================================================================================
'========================================================================================





Programma:
Do


If Trubka = 1 Then
   If Zvonok = 0 Then
      Gosub Pitanie
      Zvonok = 1
   End If
   If Zvonok = 2 Then
      Gosub Pitanie
      Zvonok = 3
      Text1 = "ATA"
      Gosub Inicilizacija
      If T2 <= 30 Then                                      'Украшение
        For P = 1 To 20
         Sound Dinamik , 50 , 25
         Waitms 40
        Next P
      End If
   End If
End If

If Trubka = 0 Then
         If Zvonok = 3 Or Zvonok = 5 Or Zvonok = 1 Then
            Gosub Pitanie
            Gosub Antitrubka
            Gosub Sbros
            Zvonok = 0
         End If


End If
If Zvonok = 2 Or Zvonok = 4 Then Gosub Zumer

                          'Getline Modem




If Zvonok = 1 Or Zvonok = 5 Then Gosub Nabornomera

'If Zvonok = 3 Then Gosub Ozhidanie 'на всякий случай.


If Zvonok = 0 Then Gosub Sim300
If Naborcifri = 0 Then
   Gosub Ozhidanie
   T = T + 1
   If T = 255 Then                                          'испоняем то, что нужно исполнять редко с периодичностью
      T = 0
      If Ischarwaiting() = 0 Then                           'если буфер пуст, то вывести на экран (иначе задержка будет начительная)
         Gosub Informacia
            Else
               Gosub Sim300
      End If
   End If
End If



'СТРОГОЕ ПРАВИЛО ТРУБКИ==================









'Waitms 1

Loop




$include "Nokia-1100 Library.inc"
End

Пока использую старую библиотеку LCD Nokia 1110, спасибо за это чудо! Позже переведу на новую.

Отредактировано Ev3658 (2013-09-09 17:36:17)

0

94

Плюнул я на всё... вот видео:

исходный код:

Код:
$regfile = "m8def.dat"
$crystal = 14745600
$hwstack = 16
$swstack = 64
$framesize = 32
$baud = 19200

'Config Timer0 = Timer , Prescale = 1024 , Compare A = Set , Clear Timer = 1
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 0
'Config Serialin = Buffered                                  , Size = 32

Declare Sub Nokia_init()
Declare Sub Nokia_clear()
Declare Sub Nokia_text(byval Nokia_x As Byte , Byval Nokia_y As Byte , Byval Nokia_text As String , Byval Nokia_inversion As Byte)


Nokia_spi_data Alias Portb.1                                'MOSI       - можно задать любую ножку
Nokia_spi_clock Alias Portb.2                               'SCK        - можно задать любую ножку
Nokia_cs Alias Portb.0                                      'CS         - можно задать любую ножку
Display_reset Alias Portd.7                                 'LCD_RESET  - можно задать любую ножку
Display_reset = 1
Nokia_cs = 1

Dim W As Iram Word At 8 Overlay
Dim Nokia_data_9 As Integer


Dim X As Byte



'порты экрана
Config Portd.7 = Output
Config Portb.0 = Output
Config Portb.2 = Output
Config Portb.1 = Output


Config Portc.3 = Output                                     'подсветка и питание набирателя
Config Portc.4 = Input                                      'начало набора номера

Config Portd.2 = Output                                     ' питание микрофона и звуки
Config Portd.4 = Output                                     ' Таймер Звука Занято И Т.п.



'порт положения трубки
Config Portd.3 = Input
'порты звонка
Config Portd.5 = Output
Config Portd.6 = Output
'алиасы
Faza1 Alias Portd.5
Faza2 Alias Portd.6

Faza2 = 0

Trubka Alias Pind.3
Naborcifri Alias Pinc.2
Pitanienabiratela Alias Portc.3
Prerivanienabiratela Alias Pinc.4
Microfon Alias Portd.2
Dinamik Alias Portd.4
Dinamik = 0

Dim Pause1 As Integer

Dim Kodgoroda As String * 10
Dim Gorodcifri As Byte

'========================================================================================================================
Kodgoroda = "883145"                                        'тут внесите код города
Gorodcifri = Len(kodgoroda) - 1                             ' можно просто приравнять к числу цифр городского местного номера если он меньше 7ми
Pause1 = 16000                                              'подстройка паузы, если набираете 5значный номер, то до продолжения набора другой цифры по истечении этой паузы телефон начинает набор.
'========================================================================================================================
Dim Eror As Byte
Dim P As Byte
Dim O As Byte
Dim N As Byte                                               'переменные для набирателя
Dim N1 As Byte                                              'переменные для набирателя
Dim Buff As Byte
Dim B As Byte
Dim Cifra(11) As Byte
'Dim Trubka As Byte
Dim Nabor As Byte                                           'состояние положена/снята трубка
Dim T As Byte
Dim T1 As Byte
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As Byte
Dim Tbuf As Integer                                         'антизависание в чтение буфера
Dim Zvonok As Byte
' Если Zvonok:
'0-трубка положена
'1-трубка снята без поступления звонка
'2-поступление звонка при положенной трубки
'3-трубка снята в ответ на звонок
'4-трубка положена после ответа на звонок
'5-режим набора номера
'
'
'




Dim Modem As String * 255
Dim S As String * 255
Dim Text1 As String * 16
Call Nokia_init()

Call Nokia_text(1 , 1 , ">Модем АУ" , 1)
Text1 = "AT"
Gosub Inicilizacija
Call Nokia_text(10 , 1 , "-Я тут" , 1)

Call Nokia_text(1 , 2 , "Как состояние-" , 1)
Do
Gosub Sim300

If Left(modem , 1) = "+" Then Exit Do
Loop
Call Nokia_text(15 , 2 , "ОК" , 1)
Call Nokia_clear
Waitms 1
Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
'Disable Urxc


Waitms 270
Print "AT"
Text1 = "AT+CHFA=1"
Call Nokia_text(1 , 2 , ">AT+CHFA=1" , 1)                   '0-телефон, 1-гарнитура (выходы у модема)
Gosub Inicilizacija
Call Nokia_text(1 , 3 , ">OK" , 1)
Text1 = "AT+CLVL=100"
Call Nokia_text(1 , 4 , ">AT+CLVL=100" , 1)

Gosub Inicilizacija
Call Nokia_text(1 , 5 , ">ОК" , 1)
Wait 1

Call Nokia_clear

Goto Programma:
'======================== ПОДПРОГРАММА =====================
'блок, которому в переменную Text1 указать команду можема, он будет ждать ответ ОК и повторять через каждые 25000 циклов комманду в переменной Text1 - пока не дождётся ОК
Inicilizacija:
Modem = ""
Do
Call Nokia_text(1 , 7 , Text1 , 0)
T4 = T4 + 1
Gosub Sim300
If T4 > 250 Then
'      Text1 = Left(s , 16)
     'Text1 = Str(t4)
     'Call Nokia_text(1 , 5 , Text1 , 0)
     Print Text1
     T4 = 0
   End If
If Modem <> "" Then
   If Modem = "OK" Then
      Eror = 0
      Exit Do
   End If

   If Left(modem , 3) = "ERR" Then
      Eror = 1
      Exit Do
   End If
   'Waitms 1

End If
Loop
Return

'Error:
'If Mid(modem , 6 , 12) = ":SIMERR" Then
'      If N > 0 Then
'         For P = 1 To 25
'            Sound Dinamik , 50 , 140
'        Next P
'        Eror = 1
'        End If
'End If

Return

'============================= конец блока мозгоёбной части.


'==================== Звонок ==============================
Zumer:
   Waitms 1                                                 'общая задержка для 4х сек.
   T2 = T2 + 1
   If T2 <= 30 Then
      Faza1 = 1
      Faza2 = 0
      Pitanienabiratela = 0
      Waitms 35                                             'пауза фазы +
      Faza1 = 0
      Faza2 = 1
      Pitanienabiratela = 1
      Waitms 35                                             'пауза фазы -
      Faza2 = 0
   End If
   If T2 = 4000 Then T2 = 0                                 'пауза между звонком (в литре сказано должно 4 сек. но опрос буфера выгребает секунду-две
Return






'======================  ВЫВОД ГРАФИЧЕСКОЙ ИНФОРМАЦИИ =====================
Informacia:
   'Call Nokia_clear()
   Call Nokia_text(1 , 1 , "-==[GSM СССР]==-" , 1)
   Call Nokia_text(1 , 2 , "Данные с модема:" , 0)
   'Call Nokia_text(1 , 3 , "                " , 0)
   'Text1 = "Zvonok:" + Str(zvonok)
   'Call Nokia_text(1 , 4 , Text1 , 1)
   Call Nokia_text(1 , 8 , "=RADIOKSTOVO.RU=" , 1)
'тех.информация для отладки набора номера /переменные N/N1/порт Ц2/порт Ц4

If Zvonok = 0 Then Call Nokia_text(1 , 4 , "0Ожидание       " , 0)
If Zvonok = 1 Then Call Nokia_text(1 , 4 , "1Ожидан.действия" , 0)
If Zvonok = 2 Then Call Nokia_text(1 , 4 , "2Вам звонят!    " , 0)
If Zvonok = 3 Then Call Nokia_text(1 , 4 , "3Разговор       " , 0)
If Zvonok = 4 Then Call Nokia_text(1 , 4 , "4Трубка положена" , 0)
If Zvonok = 5 Then Call Nokia_text(1 , 4 , "5Набор номера   " , 0)
   Text1 = Left(modem , 16)
   Call Nokia_text(1 , 3 , Text1 , 0)
   Text1 = "T3:" + Str(t3)
   Call Nokia_text(1 , 6 , Text1 , 0)

'===вывод номера
'Call Nokia_text(1 , 4 , "Набранный номер" , 0)
Text1 = ""
Gosub Sbornomera
     Text1 = ">" + Text1
     Call Nokia_text(1 , 5 , Text1 , 0)


Return

'================================ РАБОТА С БУФЕРОМ И ОПРОСОМ МОДЕМА ========================================
Sim300:
'B = Inkey()
'If B > 0 Then

Tbuf = 0
If Ischarwaiting() = 1 Then
Do
   B = Inkey()
   Tbuf = Tbuf + 1
   Select Case B
       Case 10 : If S <> "" Then
                     Modem = S
                     S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
                     Exit Do
                    End If
                  Case Else
         If B > 32 Then
            Tbuf = 0
            S = S + Chr(b) :
         End If
    End Select
    If Tbuf > 25000 Then
           If Len(s) > 30 Then
             S = ""
                     Do
                        B = Inkey()
                     Loop Until B = 0
             Exit Do
             End If
           Exit Do
            End If

   Loop
End If
Return
'
'End If
Return
'================ Подпрограмма режима ожидания===============================================================
Ozhidanie:

'Text1 = Left(modem , 4)
If Modem = "RING" Or Text1 = "+CLI" Then                    'поступление звонка
Print "AT+CHFA=1"

         If Zvonok = 5 Then Gosub Antitrubka
         If Trubka = 0 Or Zvonok = 4 Then Zvonok = 2
End If


If Zvonok = 1 And N = 1 Then Zvonok = 5





If Zvonok = 3 Then

   If T < 125 Then
      Pitanienabiratela = 0
      Else
      Gosub Pitanie
   End If

End If

If Zvonok = 4 Then Zvonok = 0


If Zvonok = 1 Or Zvonok = 5 Then                            '================= ОЗВУЧКА ГУДОК и Т.П.
    If N = 1 Or N = 0 Then Sound Dinamik , 1 , 220
    If N = 2 And Cifra(1) = 8 Then Sound Dinamik , 1 , 200
End If

Gosub Sim300


If Zvonok = 5 Then                                          ' ========== начало 5го правила "Режим набора номера"

   Gosub Nabornomera

   If N = 11 Then
      Text1 = "ATD"                                         'Если городской 7 значный, то не добавляем
      Gosub Sbornomera
      Text1 = Text1 + ";"
      Print Text1
      Zvonok = 3
   End If

   If Cifra(1) <> 8 And Cifra(1) <> 0 Then
      If N < 3 And N = 6 Then T3 = 0
      If N > 7 Then T3 = 0
      If N = Gorodcifri Or N = 7 Then T3 = T3 + 1
      If N = 3 Then T3 = T3 + 1

         If T3 = Pause1 Then
            Text1 = "ATD"                                   'задержка набора 5ти значного номера
            If N = Gorodcifri Then Text1 = Text1 + Kodgoroda       'Если городской пятизначный, добавляем префикс
               Gosub Sbornomera
               Text1 = Text1 + ";"
                print Text1
               Zvonok = 3                                   'переходим В Режим "трубка снята"
         End If
   End If
End If


Return

'=================== Подрограмма набора номера (заранее лучше обнулить N - номер ячейки массива N1 - кол-во тактов набирателя Nabor - шаг набора цифры/номера, запоминает 11 цифр в Cifra(n)
'==== Подпрограмма сбора номера из массива, желательно переменную Text1 обнулить=======================================================
Sbornomera:
For P = 1 To N
   Text1 = Text1 + Str(cifra(p))
   B = Cifra(p) * 10
   B = B + 150
Next P
Return


Sbros:
   For P = 1 To 11
      Cifra(p) = 0
   Next P
   N = 0
   N1 = 0
   Eror = 0
   T3 = 0
   Call Nokia_clear
Return                                                      '========================================================================


Antitrubka:                                                 'положить вызов
   Text1 = "ATH"
   Gosub Inicilizacija
Return



Nabornomera:
Pitanienabiratela = 1                                       'включение питания номеронабирателя
If Nabor = 0 And Naborcifri = 1 Then
   If Prerivanienabiratela = 0 Then
      N1 = N1 + 1
      Sound Dinamik , 150 , 40                              'украшение
     Nabor = 1
   Waitms 20
   End If
End If

If Prerivanienabiratela = 1 And Nabor = 1 Then

   Nabor = 2
   Waitms 20
End If

If Nabor = 2 And Naborcifri = 1 Then Nabor = 0


If N1 <> 0 And Naborcifri = 0 Then
   If Prerivanienabiratela = 1 Then
      If N1 = 10 Then N1 = 0

         N = N + 1
         Cifra(n) = N1
         If N = 12 Then
            N = 1
            For P = 1 To 11
            Cifra(p) = 0
            Next P
         End If
         Gosub Informacia
         Nabor = 0
         N1 = 0
   End If
End If

Return

Pitanie:
If Trubka = 1 Then
   Microfon = 1
   Pitanienabiratela = 1
      Else
         Microfon = 0
         Pitanienabiratela = 0
End If

Return


'================ Подпрограмма режима разговора===========================================================
Razgovor:

Return

'========================================================================================
'========================================================================================
'========================================================================================
'========================================================================================





Programma:
Do


If Trubka = 1 Then
   If Zvonok = 0 Then
      Gosub Pitanie
      Zvonok = 1
   End If
   If Zvonok = 2 Then
      Gosub Pitanie
      Zvonok = 3
      Text1 = "ATA"
      Gosub Inicilizacija
      If T2 <= 30 Then                                      'Украшение
        For P = 1 To 20
         Sound Dinamik , 50 , 25
         Waitms 40
        Next P
      End If
   End If
End If

If Trubka = 0 Then
         If Zvonok = 3 Or Zvonok = 5 Or Zvonok = 1 Then
            Gosub Pitanie
            Gosub Antitrubka
            Gosub Sbros
            Zvonok = 0
         End If


End If
If Zvonok = 2 Or Zvonok = 4 Then Gosub Zumer

                          'Getline Modem




If Zvonok = 1 Or Zvonok = 5 Then Gosub Nabornomera

'If Zvonok = 3 Then Gosub Ozhidanie 'на всякий случай.


If Zvonok = 0 Then Gosub Sim300
If Naborcifri = 0 Then
   Gosub Ozhidanie
   T = T + 1
   If T = 255 Then                                          'испоняем то, что нужно исполнять редко с периодичностью
      T = 0
      If Ischarwaiting() = 0 Then                           'если буфер пуст, то вывести на экран (иначе задержка будет начительная)
         Gosub Informacia
            Else
               Gosub Sim300
      End If
   End If
End If



'СТРОГОЕ ПРАВИЛО ТРУБКИ==================









'Waitms 1

Loop




$include "Nokia-1100 Library.inc"
End

Отредактировано Ev3658 (2013-09-17 23:59:03)

0

95

Поздравляю!
Такого телефона точно ни у кого нет!

0

96

А схема исправленная есть?

0

97

Сил нет доделывать, не пойму, почему на исходящем вызове с телефона не работает микрофон, а на входящем он работает чётко, питание микрофона в норме.
Вот ссылка на печатку - http://radiokstovo.ru/images/cccpgsm/cc … mega8.lay6

Отредактировано Ev3658 (2013-09-18 13:22:57)

0

98

Ev3658 написал(а):

Сил нет доделывать, не пойму, почему на исходящем вызове с телефона не работает микрофон, а на входящем он работает чётко, питание микрофона в норме.
Вот ссылка на печатку - http://radiokstovo.ru/images/cccpgsm/cc … mega8.lay6

Отредактировано Ev3658 (Сегодня 14:22:57)

Сталкивался с такой бякой, GSM модуль возможно регистрируется в сети как устройство передачи данных, а не голоса и база просто не принимает от него голосовых данных.  Я пишу с объяснений, данных мне когда то оператором мобильной связи. Заменил модуль на телефонный от старого Сименса, все заработало сразу как надо.

0

99

IgorL написал(а):

Сталкивался с такой бякой, GSM модуль возможно регистрируется в сети как устройство передачи данных, а не голоса и база просто не принимает от него голосовых данных.  Я пишу с объяснений, данных мне когда то оператором мобильной связи. Заменил модуль на телефонный от старого Сименса, все заработало сразу как надо.


Всё-же голосовые функции работают как надо, за исключением в исходящих вызовах. Может какая иницилизация есть? Использую гарнитуру.

0

100

Так, для забавы, сооружал в детстве )

0

101

Mrshilov написал(а):

Я переписал библиотеку для Nokia1100, если есть желание потестировать - она здесь
Теперь поддерживаются стандартные баскомовские шрифты и картинки "bgf". Подключение на выбор: по 4, 3 или 2 проводам. При этом освобождается CS и можно подключить несколько дисплеев. Здесь пример подключения двух дисплеев.
Сделана обрезка символов и картинки, вылезающих за край экрана.
Это бета-версия, поэтому - название ног нужно задавать как в примере (используются имеющиеся в компиляторе пины), конфиг не соответствует разрешению - не обращайте внимания.

С LCD Nokia 1202 есть какие шаманства? Ща такие ещё есть в продаже в гринспаре по 40р.

0

102

Друзья, может не в тему, но тоже про модули (sim900). У меня стоит проблема отправки данных на сервер.
Работаю с gprs так (если грубо):
Print "AT+CIPSTART=" ; Chr(34) ; "TCP" ; Chr(34) ; "," ; Chr(34) ; Host ; Chr(34) ; "," ; Chr(34) ; "80" ; Chr(34) ' соединяюсь с сервером host.com после прихода CONNECT OK отправляю:
Print "AT+CIPSEND"  ' команда отправки, жду > и отправляю данные методом GET
Print "GET /" ; Putch ; "?" ; "device_id=1235&device_pass=123&T1=35" ; " HTTP/1.0"
Waitms 100
Print "Host: " ; Host ; " HTTP/1.0"
Waitms 10
Print Chr(10) '
Waitms 10
Print Chr(13) '
Waitms 10
Print Chr(26) 'отправка
Wait 5
Print "AT+CIPCLOSE" ' закрыть соединение

После этих манипуляций всегда приходит ответ SEND OK, но на сервер данные не передаются.
Если же приходит ответ
SEND OK
HTTP/1.0 200 OK, то тогда данные на сервере

причем железо раз в 10сек передает данные на сервер и посылка приходит с вероятностью 50 на 50
Кто сталкивался, что я не так делаю, подскажите, пож?

Отредактировано kostr (2013-12-03 14:54:11)

0

103

Решение отправки нашлось? Делись )

0