Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/135: Рейтинг темы: голосов - 135, средняя оценка - 4.67
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718

Програмно заставить VBA рассылать SMS через мобильный телефон

21.10.2011, 12:46. Показов 25829. Ответов 103
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть моб. телефон ....., через отдельний браузер можно посалать смс, как подлючить браузер к VBA, или же как работат брузер по отсилке смс.....может есть какие то варианти еть, над етим долблю голову уже 8 дней....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2011, 12:46
Ответы с готовыми решениями:

Отправка SMS на мобильный телефон через USB-Modem
Где ошибка в этом коде ? Совсем не работает????? Public Function SendSMS() As Boolean If SMSPort.IsOpen = True Then ...

Интернет через мобильный телефон.
Привет всем. Помогите пожалуйста с настройкой интернета, используя мобильный телефон как модем. Модель телефона - sony ericsson k610i,...

Интернет через мобильный телефон
Народ подскажите пожалуста, как на Винду 7 (домашняя расширенная) подключить мобильный телефон Samsung L-700, для выхода в интернет, т.е....

103
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
15.05.2012, 02:06
Студворк — интернет-сервис помощи студентам
А что за функция GetDec(SmsBin8Bit) ?
Без неё твой алгоритм перекодировки не работает.
1
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
15.05.2012, 13:38  [ТС]
Aeliot, 'Функция GetDec переводит число из двоичной системы в десятичную. Параметр Bin принимает _
двоичное число и определён как строковая переменная для того, чтобы ему можно было _
передать строку с дополнительными символами.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Function GetDec(Bin As String) As Long
    If InStr(1, Bin, "=") Then GetDec = 64: Exit Function
    If InStr(1, Bin, " ") Then GetDec = 256: Exit Function
    Dim Cnt As Integer
    Cnt = Len(Bin) - 1
    For T = 1 To Len(Bin)
    If Mid(Bin, T, 1) = 1 Then
    GetDec = GetDec + (2 ^ Cnt)
    End If
    Cnt = Cnt - 1
    Next
End Function
 
'Функция GetBin переводит число из десятичной в двоичную систему и возвращает результат -
'как строку, чтобы можно было представить двоичное число в виде "0011010". Параметр _
'cFormat определяет сколько должно быть бит в двоичном числе (cFormat=8, GetBin="00001101")
 
 Function GetBin(Dec As Single, cFormat As Integer) As String
    Dim sFormat As String
    sFormat = String(cFormat, "0")
    If Dec = 64 Then GetBin = "00000 ": Exit Function
    If Dec = 0 Then GetBin = sFormat: Exit Function
    Do While Dec >= 1
    Dec = Int(Dec) / 2
    If Dec = Int(Dec) Then
    GetBin = 0 & GetBin
    Else
    GetBin = 1 & GetBin
    End If
    Loop
    GetBin = Format$(GetBin, sFormat)
End Function
1
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
15.05.2012, 17:08
Пока никак...
Что делает функция SmsDec8Bit = GetDec(SmsBin8Bit)?
Без неё код не работает. А если подоткнуть смс-ку кодированную моим алгоритмом, то всё равно не шлёт.
Да и не работает у меня функция Sleep (1) - говорит, что не знает такой. Но я подоткнул DoEvents, думаю это будет равноценная замена.

Добавлено через 6 минут
О... глюк какой-то....
Загрузил страницу, а на ней не было предыдущих двух постов.
Я уж подумал, что забыл нажать кнопку "опубликовать", посему продублировал свой вопрос.
Но как страница обновилась, то на ней оказалось столько всего интересного...
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
15.05.2012, 17:55  [ТС]
Цитата Сообщение от Aeliot Посмотреть сообщение
SmsDec8Bit = GetDec(SmsBin8Bit)
насколько помню она переводит смс в двоичной кодировке по 8 бит в десяти

Добавлено через 31 секунду
Aeliot,
Цитата Сообщение от Aeliot Посмотреть сообщение
Sleep (1) -
ее нужно создать

Добавлено через 2 минуты
Aeliot, отправить первое смс ото такой кайф.... ггг так что держись
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
15.05.2012, 18:38

Дошла!!! ... SMS дошла!!!
Правда пустая...
Но это мелочи. Главное пилим в правильном направлении.
Осталось понять почему же она всё таки вырвалась из оков моего компа.

Добавлено через 12 минут
Цитата Сообщение от IvanOK Посмотреть сообщение
ее нужно создать
Это цикл на DoEvents?
а в параметре передаёшь число повторений?

Добавлено через 7 минут
Что-то типа такого...
Visual Basic
1
2
3
4
5
Sub Sleep(bytStep As Byte)
For i = 1 to bytStep 
    DoEvents
next i
end Sub
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
15.05.2012, 19:04  [ТС]
Aeliot,
Цитата Сообщение от Aeliot Посмотреть сообщение
Что-то типа такого.
неа... шото тыпа такого

Visual Basic
1
2
3
4
5
6
7
8
9
Function Sleep(TimeSleep As Integer)
 
 Chas = Timer()
 z = Chas + TimeSleep
1:
   T = Timer()
   If T < z Then GoTo 1
    
End Function
но ее можно усовершенствовать я над етим пока не думал ,
мой код для преобразования смс работает у тебя.... или ты создал свой....
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
16.05.2012, 01:58
IvanOK,
Спасибо, работает.
Благодаря ему нашёл в чем проблема.
Каким-то образом мой алгоритм потерял последний байт смс-ки. Наверно потому они и не отправлялись. Сейчас разбираюсь в чём дело. Как пойму почему так произошло или запутаюсь в конец, то отпишусь.

Добавлено через 2 часа 25 минут
С кодировкой у меня оказалось всё правильно.
Проблема была в другом. Я каким-то образом умудрился перед каждой отправляемой командой отправлять в модем 27-й символ. Естественно у меня ничего не получалось.

Что же касается (пере)кодирования.
Никаких байт я не терял. Алгоритм работает правильно.
Похоже IvanOK, что у тебя ошибка в формуле SmsHex8BitCode - в её результатах закрался лишний байт. Из восьми символов должно получиться семь байт, а у тебя их ажно восемь.

Кстати, в моём алгоритме при перекодировке идёт прямое преобразование номера символа в байты и биты. Тогда нет необходимости шарить по дополнительным таблицам. Вот код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Public Function String7To8(str As String) As String
    Dim arr() As Byte           ' массив байт символов строки
    Dim i As Integer            ' текущий байт
    Dim c As Long               ' номер 7-битного цикла
    Dim lngLen As Long          ' длинна строки
    Dim lngLocal As Long        ' число бит, используемых от бита текущего байта
    Dim strAlien As String      ' используемые биты байта следующего байта
    Dim strLocal As String      ' используемые биты байта текущего байта
    Dim strResult As String     ' 16-ричное представление 8-битной строки
    
    lngLen = Len(str)
    strResult = ""
    
    ReDim arr(1 To lngLen) As Byte
    
    ' получаем массив байт из строки
    For i = 1 To lngLen
        arr(i) = AscW(Mid(str, i, 1))
    Next i
    
    c = 0
    lngLocal = 7
    
    ' перекодируем 7-битную строку в 8-битную
    ' Делаем 7 шагов из 8-ми и сразу переходим на 9-й ... и т.д.
    ' 8-й пропускаем из-за упаковки (смещение на один бит в каждом шаге)
    
    ' поскольку из 8-ми бит каждого байта используется только 7,
    ' то в функции Dec2Bin() в качестве параметра задаём возвращать только 7 бит
    ' и это не вызовет проблем, зато в отпадает надобность
    ' в следующей конструкции Right(Dec2Bin(numb), 7)
    
    For i = 1 To lngLen
        ' получаем биты текущего символа, не использовавшиеся на предидущем шаге
        strLocal = Left(Dec2Bin(arr(i + c), 7), lngLocal)
        
        ' получаем необходимое число бит следующего символа, чтоб дополнить текущий байт
        If ((i + c + 1) <= lngLen) Then strAlien = Dec2Bin(arr(i + c + 1), 7) Else strAlien = Dec2Bin(0, 7)
        strAlien = Right(strAlien, 8 - lngLocal)
        
        ' преобразовываем полученный составной байт в 16-ричную систему счисления
        ' и формируем строку байт
        strResult = strResult & LidingZero(Hex(Bin2Dec(Right(strAlien & strLocal, 8))), 2)
        
        ' задаём число переносимых Бит на следующем шаге
        lngLocal = IIf((lngLocal > 1), lngLocal - 1, 7)
        
        ' задаём смещение на байт (начало нового 7/8-битного цикла)
        If (lngLocal = 7) Then c = c + 1
        
        ' проверка выхода за пределы массива
        If (i + c + 1) > lngLen Then Exit For
    Next i
    
    String7To8 = strResult
End Function
 
Function Dec2Bin( _
        ByVal DecimalIn As Variant _
        , Optional NumberOfBits As Variant _
        ) As String
 
'Decimal To Binary
' [url]http://www.devhut.net/2010/06/22/vba-converting-between-decimal-and-binary/[/url]
' =================
' Source:   [url]http://groups.google.ca/group/comp.lang.visual.basic/browse_thread/thread/28affecddaca98b4/979c5e918fad7e63[/url]
' Author:   Randy Birch (MVP Visual Basic)
' NOTE:     You can limit the size of the returned answer by specifying the number of bits
 
    Dec2Bin = ""
    DecimalIn = Int(CDec(DecimalIn))
    
    Do While DecimalIn <> 0
        Dec2Bin = Format$(DecimalIn - 2 * Int(DecimalIn / 2)) & Dec2Bin
        DecimalIn = Int(DecimalIn / 2)
    Loop
    
    If Not IsMissing(NumberOfBits) Then
       If Len(Dec2Bin) > NumberOfBits Then
          Dec2Bin = "Error - Number exceeds specified bit size"
       Else
          Dec2Bin = Right$(String$(NumberOfBits, _
                    "0") & Dec2Bin, NumberOfBits)
       End If
    End If
End Function
 
Function Bin2Dec( _
        BinaryString As String _
        ) As Variant
 
'Binary To Decimal
' [url]http://www.devhut.net/2010/06/22/vba-converting-between-decimal-and-binary/[/url]
' =================
    
    Dim X As Integer
    For X = 0 To Len(BinaryString) - 1
        Bin2Dec = CDec(Bin2Dec) + Val(Mid(BinaryString, _
                  Len(BinaryString) - X, 1)) * 2 ^ X
    Next
End Function
Добавлено через 12 минут
Применять так же как и твою SmsHex8BitCode
Visual Basic
1
TP_UD = String7To8(Text_SMS)
1
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
16.05.2012, 11:14  [ТС]
Aeliot, ты отправил по моему коду или по своему.....
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
16.05.2012, 23:20
Цитата Сообщение от IvanOK Посмотреть сообщение
Aeliot, ты отправил по моему коду или по своему.....
И тот и тот сработали
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
17.05.2012, 10:28  [ТС]
Aeliot, значит по етой теме можно полностю отправить смс ггг

Добавлено через 1 минуту
:dance3:
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
17.05.2012, 18:34

Спасибо, очень помог.

Добавлено через 3 минуты
Я вот ещё озадачился каким вопросом.
на HUAWEI E1550 всё работает отлично, а ZTE MF 180 даже не дрыпается...
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
17.05.2012, 18:57  [ТС]
Aeliot,
ГЛЯНЬ МОЖЕТ ТАМ ДРУГАЯ АТ КОМАНДА
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
18.05.2012, 12:11
Цитата Сообщение от IvanOK Посмотреть сообщение
ГЛЯНЬ МОЖЕТ ТАМ ДРУГАЯ АТ КОМАНДА
Как такое может быть?
Я думаю они стандартные для всех
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
18.05.2012, 13:06  [ТС]
Aeliot, тя нужно взять инструкцию о модеме и глянуть че почем......или же может при отправке ты сделал не те настроки... ты просто проверь его состояние...... с помощю ат команд..... я полностю тестировал на se c702 и настройками его зарубил воооопще смс не отправлял пришлось полностю прошить его
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
21.05.2012, 23:31
Цитата Сообщение от IvanOK Посмотреть сообщение
я полностю тестировал на se c702 и настройками его зарубил воооопще смс не отправлял

бывает...

Пока отложил эту тему. Главное, что смс хоть как-то ходят. Будет больше времени - разберусь.
0
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 2
10.02.2013, 11:23
Что за функция LidingZero
Visual Basic
1
 strResult = strResult & LidingZero(Hex(Bin2Dec(Right(strAlien & strLocal, 8))), 2)
без нее код не работает
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
10.02.2013, 14:08
Вероятно UDF.
А не дешевле рассылать через сервисы? Есть за 15 копеек штука (я не знаю Вашу ситуацию, у нас правда есть тарифы с безлимитными СМС и разговорами).
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.02.2013, 16:55
Судя по названию (LidingZero -> Leading Zero), функция добавляет ведущие нули.
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
11.02.2013, 11:04  [ТС]
Казанский, да вы правы, она добавляет нули в недостающем количестве символов, что бы был полноценных 8-м бит
0
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
12.02.2013, 01:27
вот она
Visual Basic
1
2
3
4
5
Public Function LidingZero(ByVal strNum As String, ByVal lngNumLen As Long) As String
    Dim lngLen As Long
    lngLen = Len(strNum)
    LidingZero = IIf((lngLen < lngNumLen), String((lngNumLen - lngLen), "0"), "") & strNum
End Function
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.02.2013, 01:27
Помогаю со студенческими работами здесь

Подключение к VPN-серверу через мобильный телефон
Добрый день! Поднял VPN-сервер и сервер RADIUS, подключение локальных и удаленных компьютеров с помощью VPN происходит нормально! Но...

Когда я захожу на свой сайт через мобильный телефон
Когда я захожу на свой сайт через мобилник то он открывает совершенно другой сайт. Пишеш http://vau.uz/ и он перенаправляет на другой сайт....

Отправка sms на телефон через свой сайт
доброго времени суток. собственно вопрос: можно ли осуществить отправку смс на указанный номер через свой веб сайт и можно ли это...

Как раздавать интернет с ноутбука на мобильный телефон через Bluetooth ?
Мне нужен интернет на телефоне, который есть на ноутбуке. Nokia Asha 300 Wi-Fi НЕТ! Платформа: Series 40 6th Edition ...

Прямоугольный мобильный телефон
Подскажите, а есть ли идеально прямоугольные телефоны? Без закруглений? Обычная звонилка подойдет


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru