Я использую .NET 4.5.2. В одной из моих ViewModels мне нужно получить доступ к последовательному порту COM8, который подключен к моему устройству, датчик, который обеспечивает непрерывный поток данных. Я могу получать доступ и отправлять команды на последовательный порт через Tera Term, командную строку Windows и приложение LabView, поэтому порт не занят другим процессом - я знаю, что обычно это происходит с этими сообщениями, но я уверен, это не тот случай, здесь. Я пытался отправить команду в порт через C # с помощью класса Process (), но это не работает, поэтому, похоже, что-то с C #.
Я видел этот пост: Принудительно закрывает COM-порт , но это тоже не проблема.
Другие вещи, которые я пробовал:
- Удаление устройства COM8 через диспетчер устройств.
- Запуск приложения в режиме «Выпуск» через Visual Studio.
- Запуск Visual Studio в режиме администратора.
- Переключение на .NET 4.5.2.
И еще несколько вещей, которые я сейчас не вспоминаю. Любой совет об этой ситуации будет оценен! Я рад предоставить любую дополнительную информацию, которая может вам понадобиться.
Код для открытия порта:
if (port == null)
{
port = new SerialPort(location, baudRate);
port.ReadBufferSize = 16384;
}
if (!port.IsOpen)
{
port.Open();
}
Обновление:
Если я скопирую приведенный выше код в метод запуска, он работает нормально. Кажется, он просто не работает там, где он есть в моей ViewModel. Я думал, что это проблема с потоками, но я смог вызвать код в основном потоке, и он не работал. Надеюсь, это приблизит меня к решению!
Обновление 2:
Приведенный выше код также отлично работает в коде позади моего метода входа в систему, но не в другом коде позади. Супер запутался прямо сейчас.