Связь с ключом Bluetooth OBD-II (думаю, это ELM327)C#

Место общения программистов C#
Ответить
Anonymous
 Связь с ключом Bluetooth OBD-II (думаю, это ELM327)

Сообщение Anonymous »

У меня есть ключ Bluetooth OBD-II для моей машины (торговая марка Veepeak), и я пытаюсь написать приложение для Windows, которое может с ним взаимодействовать. Пока что кажется, что я могу подключиться к устройству со своего ноутбука, отправлять команды и получать какой-то ответ, но ответы, которые я получаю, не такие, как я ожидаю. Я использую коммуникационную библиотеку 32feet.NET для работы с Bluetooth.
Вот код, который я использую для подключения, а также функции, которые я использую для отправки сообщений:

Код: Выделить всё

BluetoothClient client;
Stream stream;
client = new BluetoothClient();
Guid uuid = new Guid("00001101-0000-1000-8000-00805f9b34fb");
client.BeginConnect(SelectedDevice.DeviceAddress, uuid, bluetoothClientConnectCallback, client);

private void bluetoothClientConnectCallback(IAsyncResult result)
{
client = (BluetoothClient)result.AsyncState;
client.EndConnect(result);
clientConnected = true;
stream = client.GetStream();
UIWriteLine("Client connected");
}

private string sendMessage(string message)
{
byte[] encodedMessage = Encoding.ASCII.GetBytes(message);
stream.Write(encodedMessage, 0, encodedMessage.Length);
Thread.Sleep(100);
int count = 0;
byte[] buffer = new byte[1024];
string retVal = string.Empty;
count = stream.Read(buffer, 0, buffer.Length);
retVal += Encoding.ASCII.GetString(buffer, 0, count);
return retVal.Replace("\n", "");
}

private string getValue(string pid)
{
byte[] encodedMessage = Encoding.ASCII.GetBytes(pid + "\r");
stream.Write(encodedMessage, 0, encodedMessage.Length);
Thread.Sleep(100);
bool cont = true;
int count = 0;
byte[] buffer = new byte[1024];
string retVal = string.Empty;
while (cont)
{
count = stream.Read(buffer, 0, buffer.Length);
retVal += Encoding.ASCII.GetString(buffer, 0, count);
if (retVal.Contains(">"))
{
cont = false;
}
}
return retVal.Replace("\n", "");
}
Я использую метод sendMessage для отправки AT-команд и метод getValue для получения определенного PID (эти методы заимствуют код из библиотеки OBD-II, которую я нашел здесь).
Когда я отправляю AT-команды, я, кажется, получаю только эхо того, что отправляю, а когда я отправляю PID, я получаю ответ в виде одного вопросительного знака, что, насколько я понимаю, означает, что команда недействительно.
Возможно ли, что в моем ключе нет ELM327? Я делаю что-то не так со связью Bluetooth или у меня неправильный UUID?

Подробнее здесь: https://stackoverflow.com/questions/386 ... -an-elm327
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»