MSComm и BlueTooth

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

MSComm и BlueTooth

Сообщение tavocer » 12.08.2006 (Сб) 22:20

Необходимо написать приложение для распознования кто звонит.
Мобильный телефон подключен к компу при помощи BlueTooth. Можно ли это сделать при помощи MSComm ? Или нужно через WinApi ?

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 13.08.2006 (Вс) 20:56

Это можно сделать.
После инсталляции BlueTooth необходимо определить видимые устройства (среди которых и будет твой телефон). Затем у тебя появится (например):
Стандартный модем по соединению Bluetooth #7 (COM18)
Далее и работаешь с этим модемом АТ командами.
Для начала рекомендую потренироваться на HyperTerminal. Также рекомендую ознакомиться с АТ командами для используемого мобильного телефона.
Ну а написание кода для MSComm - это самая малая часть задачи =)

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 15.08.2006 (Вт) 21:00

А как получить отклик от телефона ?
Список АТ команд есть.
Порт открывается (СОМ12, как его видно в системе), но при попытке послать на телефон команду (пробовал разные) ничего не происходит.

Код: Выделить всё
Private Sub UserForm_Initialize()
   ' Buffer to hold input string
   Dim Buffer$
   Dim Instring As String
   MSComm1.CommPort = 12
   MSComm1.Settings = "9600,N,8,1"
   MSComm1.InputLen = 0
   MSComm1.PortOpen = True
   MSComm1.Output = "ATV1Q0" & Chr$(13)
   
End Sub


при звонке на телефон событие MSComm1_OnComm() тоже не происходит.

Где-то на форуме читал, что MSComm с BlueTooth "не дружит".
Так ли это? И тогда как можно решить задачу?

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 15.08.2006 (Вт) 22:22

После
Код: Выделить всё
MSComm1.PortOpen = True
нужно немного подождать - порт не открывается мгновенно
По чтению отклика тоже долго мучался, реализовал на таймере, читающем буфер:

Код: Выделить всё
Public Declare Sub sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
Dim str  As String 'Строка в буфере СОМ-порта
Dim strsnd  As String 'Строка отправляемая в СОМ-порт

Private Sub Timer1_Timer()

If MSComm1.InBufferCount Then
       
    sleep 10 'Усыпляем программу на 10мс
       
    str = MSComm1.Input
    str = Replace(Replace(str, Chr(10), ""), Chr(13), "") 'Убираем перевод строки
    str = Replace(str, strsnd, "") 'Убирает отправленную строку
    If Len(str) > 2 And Right(str, 2) = "OK" Then str = Left(str, Len(str) - 2) 'убираем ОК в конце
   
End If

End Sub

На изящность реализации не претендую =)

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 23.08.2006 (Ср) 14:30

после
MSComm1.Output = "ATV1Q0" & Chr$(13)

MSComm1.Input остается равным ""

Это значит, что модем(телефон) не реагирует ? Почему ?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.08.2006 (Ср) 14:33

Подключись каким-нибудь терминалом и отправь "ATV1Q0", будет ли ответ. Если нет, значит дело в команде или телефоне.
Lasciate ogni speranza, voi ch'entrate.

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 23.08.2006 (Ср) 15:15

Все работает.

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 28.08.2006 (Пн) 14:30

Есть способ подключить через один и тот же BlueTooth два телефона?
Я пробовал на форме разместить еще один MSComm, но порт-то один, а он уже занят.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.08.2006 (Пн) 14:37

Через один BT-адаптер одновременно?
Ну это от адаптера зависит.
Скорее всего нет.
Lasciate ogni speranza, voi ch'entrate.

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 28.08.2006 (Пн) 14:52

Значит, нужен адаптер, который поддерживает работу одновременно с несколькими устройствами? А то натыкать в ноут несколько адаптеров как-то неэстетично.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 28.08.2006 (Пн) 14:55

Навряд-ли такой для компов будет.
По идее, это должен быть не BT-адаптер, а BT-хаб. Уж не знаю, производятся ли такие.
Lasciate ogni speranza, voi ch'entrate.

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 28.08.2006 (Пн) 15:35

http://forum.microstar.ru/viewtopic.php?t=3130&sid=7498c1c77fc77a720c3893a0c9a6ff9e

а почему нельзя подключить к обычному BT адаптеру? На нем написано, что поддерживает присоединение одновременно до 7 устройств.

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Сообщение NashRus » 28.08.2006 (Пн) 18:43

ну вот у тебя сколько виртуальных COM-портов получилось при установке BT ? примерно столько видимо и можно...

tavocer
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 24.01.2006 (Вт) 20:58

Сообщение tavocer » 31.08.2006 (Чт) 12:05

Все получилось.
Можно и несколько телефонов на один адаптер.
Всем спасибо.

Romeo
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 09.09.2009 (Ср) 0:06

Re: MSComm и BlueTooth

Сообщение Romeo » 09.09.2009 (Ср) 0:37

Поднимаю тему.
Приобрёл модуль BlueTooth-USART (подключается к микроконтроллеру) и обычный BlueTooth для ПК. Настроил последовательный COM6 порт (9600,8,NO,1,NO). Решил "состряпать" программулину на VB. Поскольку опыт в осуществлении связи между ПК и контроллерами через COM-порты есть, использовал свои старые коды. Порт COM10 определился, но данные "летят" быстро (определил это по BEEP между посылками данных) и ответа от модуля нет, вылетает ошибка "RunTime Error 8020".
Может я чего напортачил с прогой на VB ???
Помогите, я уже в отчаянии!
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
MSComm1.CommPort = 10
MSComm1.Settings = "9600,N,8,1"
MSComm1.InBufferSize = 1
MSComm1.RThreshold = 1
MSComm1.InputLen = 1
MSComm1.PortOpen = True
MSComm1.Output = Chr(10)
End Sub

Private Sub MSComm1_OnComm()
Dim RS As String
If MSComm1.CommEvent = 2 Then
  RS$ = MSComm1.Input 'ОШИБКА ЗДЕСЬ!!!
  MsgBox "!"
End If
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 80

    TopList  
cron