2013-12-09 3 views
4

В настоящее время я работаю над приложением Windows Phone 8, которое (надеюсь) будет иметь возможность подключаться к автомобилю через Bluetooth с помощью адаптера bluetooth OBD-II. Я довольно новичок в программировании для WP8, хотя я пытаюсь не пытаться обратиться за помощью, но я как бы попал в ту часть, где я просто не могу думать и не понимать, куда идти или что делать.Как я могу читать/записывать данные на и с адаптера OBD-II с помощью Windows Phone 8?

Кроме того, если кто-то хочет знать устройство я тестирование с для подключения к машине он этот парень here

EDIT :: До сих пор я установил мой код, чтобы обнаружить, если адаптер Bluetooth включен , Я в настоящее время изучаю (или пытаюсь понять), как я могу показать пользователю сопряженные устройства, чтобы они могли выбрать один. Но мой основной блок мозга на данный момент, как я могу читать (или тянуть) данные с адаптера OBD-II? В документации по программному обеспечению указывается следующее:

Чтобы показать, что Kiwi Wifi или Kiwi Bluetooth готов к обработке команд, устройство выдаст знак больше (>).

Так что, если я понял это правильно, мне нужно было бы проверить>, правильно? Но как? Я проверил множество источников, но никто не объясняет, как это сделать. Я наткнулся на такие вещи, как IBuffer, но я вообще не понимаю этого.

Если то, что я сказал, не имеет смысла, тогда просто положите.

  • чтения данных из БД addapter
  • Запись данных в адаптере БД (документация программного обеспечения говорит, мне нужно отправить код ASCII, у меня есть те)

Если я могу понять, как читать/напишите на него, тогда я думаю, что я должен быть способен манипулировать данными обратно пользователю; Я надеюсь.

EDIT 2 ::

private async void checkBluetooth() 
    { 
     SolidColorBrush statuscolor = new SolidColorBrush(); 
     try 
     { 
      PeerFinder.AlternateIdentities["Bluetooth:Paired"] = ""; 
      var devices = await PeerFinder.FindAllPeersAsync(); 
      bluetoothStatus.Text = "Online"; 
      statuscolor.Color = Colors.Green; 
      bluetoothStatus.Foreground = statuscolor; 

      if (devices.Count == 0) 
      { 
       MessageBox.Show("No paired bluetooth devices have been found, please pair your OBD adapter first!"); 
       await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:")); 
      } 

      PeerInformation peerInfo = devices.FirstOrDefault(c => c.DisplayName.Contains("PLX")); 
      if (peerInfo == null) 
      { 
       MessageBox.Show("No paired PLX adapter found, please pair the PLX OBD adapter!"); 
       await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-bluetooth:")); 
      } 

      StreamSocket socket = new StreamSocket(); 
      await socket.ConnectAsync(peerInfo.HostName, "1"); 

      await socket.ConnectAsync(peerInfo.HostName, peerInfo.ServiceName); 
     } 
     catch (Exception ex) 
     { 
      if ((uint)ex.HResult == 0x8007048F) 
      { 
       bluetoothStatus.Text = "Offline"; 
       statuscolor.Color = Colors.Red; 
       bluetoothStatus.Foreground = statuscolor; 
      } 
     } 
    } 
+1

Вопросы, предлагающие нам рекомендовать или находить инструмент, библиотеку или любимый ресурс вне сайта, не относятся к теме для переполнения стека, поскольку они склонны привлекать упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. – gunr2171

+0

Спасибо, я отредактировал свое оригинальное сообщение. Я надеюсь, что это помогает. – MattVon

+0

Чего вы точно хотите знать? Я считаю, что есть примеры для связи с Bluetooth, поэтому вы можете попробовать это. У меня такая же идея в течение нескольких месяцев, но у меня нет телефона WP8, чтобы проверить ее. У меня есть знания OBD, но что вы действительно хотите знать? –

ответ

9

Я только объяснить, как вы можете получить данные из устройства OBD-II, отправляя данные на него, потому что в моем понимании того, что проблема вы боретесь с.

OBD-II никогда не будет отправлять данные самостоятельно, он прослушивает команду, которую вы отправляете, и на основании этой команды он отправит ответ. Поэтому в основном вы должны делать две вещи, если у вас есть работающее соединение:

  • Отправьте правильные команды на устройство OBD-II.
  • Разбирайте ответы в удобные для восприятия данные.

ELM327-bluetooth-connector вы переводите команды ASCII в напряжения. Итак, все, что вам нужно сделать, это отправить некоторые команды ASCII, и вы получите ASCII-значения.

Протокол OBD знает несколько режимов и параметров, но я объясню, как получить данные в реальном времени. Это режим 1.

Режим 1 Отправка
режим 1 '01'. После этой части вам необходимо отправить идентификатор параметра.0C для RPM, 0D - для скорости. И после каждой команды вы должны отправить Возврат каретки. (CR = '\ r') Таким образом, соединитель знает, когда запрос будет завершен.

Так в основном, для скорости, вы должны отправить:

'010D\r' 

Прием Режим 1
Ответ вы получите обратно из запроса Mode 1, начинается с '41'. После этого возвращается идентификатор параметра, а затем значение. Значение в большинстве случаев в шестнадцатеричном формате. Вам нужно будет сделать некоторое преобразование, чтобы прочитать удобочитаемое значение для человека. Для получения дополнительной информации см. Ссылку, поскольку формулы для конвертации также предоставляются.

Пример:

'410D17' 

Так 17 это значение текущей скорости в шестнадцатеричном формате. 17 до десятичного - 23, поэтому вы едете со скоростью 23 км/ч.

Эта википедия страница содержит полезную информацию о нем:
OBD-II Parameters

И для Bluetooth- части:

ШАГ 1: Подключение к требуемому устройству через RFCOMM

PeerFinder.AlternateIdentities["Bluetooth:PAIRED"] = ""; 
var available_devices = await PeerFinder.FindAllPeersAsync(); 
if (available_devices.Count == 0) 
{ 
     return false;    
} 
else 
{    
     PeerInformation pi= // Get the required device using 
          // index or searching for the device name 
} 
StreamSocket socket = new StreamSocket(); 
await socket.ConnectAsync(pi.HostName, "1"); 

ШАГ 2: Прямой winsock для выполнения поиска SPP

await socket.ConnectAsync(pi.HostName, pi.ServiceName); 

Источник: Windows Phone 8 Bluetooth SSP

Я надеюсь, что это поможет, я волнуюсь об этом. ^^ Если вам нужна помощь, дайте мне знать.

+2

Ваше сообщение, безусловно, пролило некоторый свет на мою ситуацию, и я чувствую себя более уверенно в том, что вы сказали. На данный момент я не могу сэкономить время, чтобы сделать некоторые тесты, но я сделаю это завтра. У меня есть некоторые дополнительные вопросы, связанные с тем, что вы сказали, но я хочу посмотреть, как далеко я могу получить то, что вы мне дали. Я высоко ценю вашу помощь. Я дам вам знать, как я буду продолжать это завтра. – MattVon

+0

И вы что-то пробовали? :) –

+0

Извинения за поздний ответ, я протестировал код и немного изменил его с тем, что я видел на видео Channel9. Я не уверен на 100%, как это может помочь, и как я читаю/записываю данные назад и четвертое. Кроме того, я заметил, что BT-связь продолжала снижаться и проводила некоторые исследования, и я прав, говоря, что BT-соединение по умолчанию не является постоянным? Я обновляю свой основной пост кодом, который у меня есть (касающийся проверки статуса BT и кода, который вы мне дали). Теперь мне нужно понять/понять, как отправить (я думаю) некоторый код ASCII и прочитать его обратно. – MattVon