Набор номера Bluetooth с 32feet.net и c #

Я пытаюсь предоставить кому-то решение "щелчок для набора" для устройства Bluetooth, такого как мобильный телефон. Я пытался сделать это с помощью 32feet.net bluetooth api.

На самом деле я ничего не делал с bluetooth (со времен команд at через последовательный порт bluetooth), но я подключил рассматриваемое устройство, которое поддерживает услугу громкой связи с компьютером. У меня есть следующий код, чтобы попытаться подключиться и отправить команду набора номера.

String deviceAddr = "11:11:11:11:11:11";
BluetoothAddress addr = BluetoothAddress.Parse(deviceAddr);
BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);
BluetoothClient cli = new BluetoothClient();
cli.Connect(rep);
Stream peerStream = cli.GetStream();

String dialCmd = "ATD 0000000000\r\n";
Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd);
peerStream.Write(dcB, 0, dcB.Length);

// Begin Edit ------------------------------------------------------------
Byte[] sResponse = new Byte[100];
peerStream.Read(sResponse, 0, 99);
TextBox1.Text = System.Text.Encoding.ASCII.GetString(sResponse);
// End Edit --------------------------------------------------------------

peerStream.Close();
cli.Close();
MessageBox.Show("Done");

Поскольку кажется, что он проходит через эти строки кода, требуется подходящее время для подключения в соответствующем месте или сбой, если адрес устройства неверен и он не могу подключиться. Очевидно, AT-команда не подходит для ее отправки.

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

Begin Edit - -----------------------------------------

Решил прочитать из stream и посмотрите, был ли какой-либо ответ после отправки AT-команды. Поскольку я просто проверяю, смогу ли я заставить его работать, я просто выгружаю ответ в текстовое поле.

Ответ, который я прочитал из потока:

ERROR

Кажется, нет кодов ошибок или чего-то еще .

Конец редактирования -------------------------------------------- -

Редактировать --------------------------------------------- -----

Отправлена ​​команда: AT + CMER \ r

Результат: OK

, затем

Отправлена ​​команда: AT + CIND =? \ R

Результат: + CIND: ("сервис", (0-1)), ("звонок", (0-1)), ("callsetup", (0-3)), ("battchg", (0-5)) , ("сигнал", (0-5)), ("роуминг", (0-1)), ("callheld", (0-2))

затем

Отправить команду: ATD 0000000000 \ r

Результат: Хорошо D: ("служба", (0-1)), ("вызов", (0-1)), ("callsetup", (0-3)), ("battchg", (0-5)), ("signal", (0-5)), ("roam", (0-1)), ("callheld", (0-2))

На самом деле он не набирает номер: (

Конец редактирования ----------------------------------------------

Решение ----------------------------------------------

Следующий код теперь работает для набора номера через мой iPhone. На данный момент это действительно грубо, так как я только что тестировал, смогу ли я заставить его работать. Этого достаточно, чтобы начать, если кто-то еще хочет сделать то же самое.

String deviceAddr = "00:00:00:00:00:00"; 
        BluetoothAddress addr = BluetoothAddress.Parse(deviceAddr);
        BluetoothEndPoint rep = new BluetoothEndPoint(addr, BluetoothService.Handsfree);

        BluetoothClient cli = new BluetoothClient();
        cli.Connect(rep);
        Stream peerStream = cli.GetStream();

        String dialCmd1 = "AT+CMER\r";
        String dialCmd2 = "AT+CIND=?\r";
        String dialCmd3 = "AT+BRSF=\r";
        String dialCmd4 = "ATD 0000000000;\r";

        Byte[] dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd1);
        peerStream.Write(dcB, 0, dcB.Length);

        Byte[] sRes = new Byte[200];
        peerStream.Read(sRes, 0, 199);
        textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

        dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd2);
        peerStream.Write(dcB, 0, dcB.Length);

        peerStream.Read(sRes, 0, 199);
        textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

        dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd3);
        peerStream.Write(dcB, 0, dcB.Length);

        peerStream.Read(sRes, 0, 199);
        textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

        dcB = System.Text.Encoding.ASCII.GetBytes(dialCmd4);
        peerStream.Write(dcB, 0, dcB.Length);

        peerStream.Read(sRes, 0, 199);
        textBox1.Text = textBox1.Text + "\n\r----------\n\r" + System.Text.Encoding.ASCII.GetString(sRes);

        peerStream.Close();
        cli.Close();
7
задан Tim 25 May 2011 в 04:55
поделиться