У меня странное поведение в моем приложении.
Я открываю COM-порт для связи с устройством через Bluetooth. Я делаю следующие шаги:
- Открыть виртуальный COM-порт;
- Переключение удаленного Bluetooth в командный режим;
- Выполнить несколько команд (например, прочитать серийный номер удаленного устройства);
- Переключение удаленного Bluetooth в режим данных;
- Отправка данных на устройство;
Чтение байта ответа (ReadByte () из класса SerialPort);
Устройство работает нормально и сразу отвечает, и все нормально, пока я запускаю свое приложение в режиме отладки через visual studio.
Но когда я пытаюсь запустить его напрямую (без привязки visual studio и adebugger - но все же скомпилированный с опцией "Debug"), я получаю исключение тайм-аута на этапе 6.
Ошибка полностью воспроизводима (без тайм-аутов в Visual Studio, и каждый раз без него).
У кого-нибудь есть идеи, которые могут вызвать такое поведение?
Вот код из шага 6
private byte[] ReadResponse() {
try {
int bytes2Read = 6;
do {
this.buffer.Append((byte)ReadByte()); // <- there the timeout occurs
if (this.buffer.Length == 6) { // header receiver
// bytes 2 and 3 contain message length
bytes2Read = this.buffer[2] + (this.buffer[3] << 8);
}
} while (this.buffer.Length < bytes2Read);
return this.buffer.ToArray();
} finally {
this.buffer.Clear();
}
}
Метод находится в классе, производном от класса SerialPort.