Я пытаюсь сделать простое приложение Windows Form в Visual Studios, что позволит мне контролировать настройку яркости светодиодной полосы, подключенной к Arduino.Доступ к C# запрещен при попытке доступа к порту связи?
Программирование внутри Arduino уже выполнено и выполнено, но программирование на C# - это то, что вызывает у меня проблемы.
При попытке отправить строки информации через порт, я получаю следующее сообщение:
Необработанное исключение типа «System.UnauthorizedAccessException» произошло в System.dll. Дополнительная информация: Доступ к порту COM3 запрещен.
Вот кусок кода, который дает мне неприятность:
private void trackBar1_Scroll(object sender, EventArgs e)
{
String color = trackBar1.Value.ToString();
System.IO.Ports.SerialPort myPort = new System.IO.Ports.SerialPort("COM3");
if (myPort.IsOpen == false){
//if not open, open the port
myPort.Open(); // Error is shown here.
}
if (myPort.IsOpen){
myPort.WriteLine(color);
}
}
я не включил какое-либо закрытие порта, потому что сначала я хочу, чтобы получить эту работу, и я не понимая, что происходит. Я уверен, что никакие другие приложения не используют порт; Arduino подключается к нему через USB, чтобы получать его питание, но кроме этого, он не получает или не передает какой-либо другой процесс.
Я попытался сменить порт из COM3 на другие порты, что является одним из основных решений для подобных вопросов, но все же я получаю тот же результат.
Спасибо за помощь.
Открытие последовательного порта в событии Scroll никогда не бывает правильным, это событие срабатывает слишком часто. SerialPort не поддерживает быстрое открытие и закрытие порта, есть рабочий поток, который должен выйти, и это требует времени. Откройте порт, который вы используете в своем конструкторе, и держите его открытым для жизни вашего пользовательского интерфейса. –
Я согласен, когда вы говорите, что это не правильно, чтобы поместить его в событие Scroll (я все еще изучаю весь подход C# и визуальных студий), но последовательный порт не обязательно должен открываться каждый раз, когда он уволен, потому что он инкапсулирован в выражении if. Я буду держать в виду роль конструктора, хотя, если бы я знал, как использовать конструкторы с LOL UI. Спасибо @HansPassant! – VDG