ELM327 ничего не возвращает при отправке нескольких командC#

Место общения программистов C#
Ответить
Anonymous
 ELM327 ничего не возвращает при отправке нескольких команд

Сообщение Anonymous »

Я разрабатываю приложение WPF, которое взаимодействует с моим ELM327. Он подключен к моему компьютеру через Bluetooth и может его успешно установить.
Когда я вручную отправляю одну команду за раз (например, «010C\r»), он правильно возвращает мне скорость вращения (об/мин) моей машины («010C\r41 0C 0C 30 \r»).
Затем я пытался отправлять команду каждые три секунды. В первый раз это иногда срабатывает, но если отправить второй раз, ELM327 ничего не вернет. Если я отлаживаю его шаг за шагом, ELM правильно возвращает значения без каких-либо ошибок. Я думаю, что читатель читает ответ до того, как ELM успеет его отправить.
Цикл:

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

private async Task InitializeElm327()
{
string answer = string.Empty;

tbx_dump.Text += "\n\nSetting up Reader and Writer";
SetupReaderWriter();
tbx_dump.Text += "\nReader and Writer setup finished";

while (true)
{
int revs = await GetRPM();
tbx_revs.Text = revs.ToString();
System.Threading.Thread.Sleep(3000);
}
}
Функция, возвращающая число оборотов в минуту:

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

private async Task GetRPM()
{
string cmdAnswer = await SendCommand("010C\r");
int rpm = ConvertRPM(cmdAnswer);
return rpm;
}
Функция, отправляющая команду:

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

private async Task SendCommand(string command)
{
tbx_dump.Text += "\n\nSending command " + command + " to Elm327";
m_dataWriter.WriteString(command);
await m_dataWriter.StoreAsync();
await m_dataWriter.FlushAsync();
uint count = await m_dataReader.LoadAsync(512);
return m_dataReader.ReadString(count).Trim('>');
}
Есть ли способ предотвратить это?


Подробнее здесь: https://stackoverflow.com/questions/628 ... l-commands
Ответить

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

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

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

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

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