Comment puis-je lire/écrire des données vers et à partir d'un système OBD II adaptateur avec Windows Phone 8?
Je suis actuellement en train de travailler sur un Windows Phone 8 application, qui sera (je l'espère) ont les capacités pour se connecter à un véhicule via bluetooth à l'aide d'un bluetooth OBD-II adaptateur. Je suis relativement nouveau à la programmation pour WP8, même si je suis d'essayer de ne pas essayer et de demander de l'aide mais j'ai sorte de frapper une partie où je ne peux pas penser ni de comprendre où aller, ou quoi faire.
En outre, si quelqu'un veut connaître le dispositif que je teste avec pour vous connecter à la voiture, c'est ce mec ici
EDIT::
Pour l'instant j'ai mis mon code pour détecter si l'adaptateur Bluetooth est activé, je suis actuellement à la recherche (ou d'essayer de comprendre) comment puis-je afficher à l'utilisateur des appareils reliés, de sorte qu'ils peuvent en sélectionner un. Mais mon principal cerveau de bloc est à l'heure actuelle, comment je peux lire (ou extraire) les données de l'OBD-II adaptateur? Il est dit dans la documentation du logiciel ceci:
Pour signifier que le Kiwi Wifi ou Kiwi Bluetooth est prêt à traiter les commandes, l'appareil affichera un signe supérieur à (>).
Donc, si je comprends bien, j'aurais besoin de vérifier pour > , à droite? Mais comment? J'ai vérifié les charges de sources mais pas vraiment expliquer comment. Je suis tombé sur des trucs comme IBuffer, mais je n'ai aucune compréhension de ce.
Si ce que j'ai dit n'a aucun sens, alors tout simplement.
- Lire les données à partir du système OBD addapter
- Écrire des données à l'OBD (adaptateur de La documentation du logiciel me dit que je dois envoyer le code ASCII, j'ai obtenu ces)
Si je peux comprendre comment lire/écrire, alors je pense que je devrais être capable de manipuler les données à l'utilisateur; j'espère.
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;
}
}
}
Merci, j'ai édité mon post original. J'espère que cela aide.
Que faites-vous exactement vous voulez savoir? Je crois qu'il y a des échantillons pour une communication bluetooth, de sorte que vous pouvez essayer. J'ai la même idée pendant des mois, mais n'ont pas un WP8 téléphone pour le tester. J'ai les connaissances de l'OBD, mais que voulez-vous vraiment savoir?
J'espère édité mon post aurait effacé une partie de l'air, je suppose que je n'ai toujours pas fait compréhensible. Je veux savoir comment je peux lire/écrire des données sur le bluetooth OBD carte afin que je puisse lire les véhicules de l'état, etc.
Je vais l'expliquer dans une réponse plus tard dans la journée quand j'ai le temps pour cela.
OriginalL'auteur MattVon | 2013-12-09
Vous devez vous connecter pour publier un commentaire.
Je suis le seul à en expliquant comment vous pouvez récupérer des données à partir de l'OBD-II de l'appareil par l'envoi des données, parce que dans ma compréhension c'est le problème que vous êtes aux prises avec de.
OBD-II ne sera jamais envoyer des données sur son propre, il est à l'écoute pour une commande que vous avez envoyé et en fonction de la commande, il va envoyer une réponse. Donc, fondamentalement, vous devez faire deux choses si vous utilisez une connexion:
Le ELM327-bluetooth-connecteur que vous avez traduit des commandes ASCII à des tensions. Donc tout ce que vous avez à faire, c'est d'envoyer certaines commandes ASCII, et vous obtenez de l'ASCII des valeurs de retour.
Le protocole OBD connaît plusieurs modes et les paramètres, mais je vais vous expliquer à obtenir des données en temps réel. C'est le mode 1.
Mode 1 Envoi
Le Mode 1 est '01'.
Après la partie, vous devez envoyer un ID de paramètre. 0C pour RPM, 0D est pour la vitesse.
Et après chaque commande, vous devez envoyer un Retour Chariot. (CR = '\r') de Sorte que le connecteur sait quand une demande est complète.
Donc en gros, pour la vitesse, vous devez envoyer:
Mode De Réception 1
La réponse que vous obtiendrez à partir d'un Mode 1 de la requête, commence par '41'.
Après que le paramètre ID est retourné, puis la valeur.
La valeur est la plupart du temps dans l'hex. Vous aurez à faire certains de conversion pour lire un lisible par l'homme de valeur. Pour plus d'informations, voir le lien, comme la formule pour convertir sont aussi fournis.
Exemple:
Donc 17 est la valeur de votre vitesse actuelle dans l'hexagone. 17 à la décimale est de 23, de sorte que vous êtes au volant avec 23 km/h.
Cette page de wikipedia a quelques bonnes informations sur:
OBD-II les Paramètres
Et pour le bluetooth de la partie:
ÉTAPE 1: se Connecter à l'appareil de votre choix sur RFCOMM
ÉTAPE 2: Direct winsock pour effectuer un SPP recherche
Source:
Windows Phone 8 Bluetooth SSP
J'espère que cela vous aide, je suis excité à ce sujet. ^^ Si vous avez besoin d'aide, faites le moi savoir.
Et, avez-vous essayer quelque chose? 🙂
Toutes mes excuses pour le retard de réponse, j'ai testé le code et modifié un petit peu avec ce que j'ai vu sur le Channel 9 de la vidéo. Je ne suis pas 100% sûr de savoir comment il est supposé aider, et comment je lire/écrire des données en arrière et quatrième. En outre, j'ai remarqué que le BT connecté gardé le souffle, et fait quelques recherches, et j'ai raison en disant que la connexion BT n'est pas une chose permanente par défaut? Je vais mettre à jour mon poste principal avec le code j'ai (concernant le contrôle de la BT état, et le code que vous m'avez donnée). Tout ce que je dois comprendre/comprendre maintenant est de savoir comment envoyer (je crois) certains code ASCII et le lire.
Oui, si vous êtes en mesure d'obtenir la connexion en cours d'exécution et peut envoyer le code ASCII, alors vous avez fait le plus dur. Peut-être que cet exemple va vous aider: 32feet.codeplex.com/releases/view/100395 Juste essayer de trouver quelques exemples et peut-être qu'il devient évident.
Après avoir fait des recherches approfondies sur en ce, y compris 32feet. J'ai fini à l'aide de 32feet mais avec lui fournissant certaines questions que je ne comprenais pas j'ai fini par l'enlever. J'ai trouvé un échantillon à partir de MSDN si je me souviens bien, et je l'ai résolu mes problèmes de connectivité maintenant. Donc ma prochaine étape est de lire/écrire des données via bluetooth maintenant. Qui je vais regarder dans la suite. Merci encore pour votre aide.
OriginalL'auteur Eric Smekens