Доступ к последовательному порту во второй форме в Visual Studio C# ⇐ C#
Доступ к последовательному порту во второй форме в Visual Studio C#
Я разрабатываю приложение в Visual Studio с использованием C#, которое взаимодействует с устройством сбора данных. Первая форма подключается к доступному COM-порту и отправляет пароль устройства. После этого у меня есть доступ к настройке устройства, называемой конфигурацией. Нажатие на кнопку «Конфигурация» открывает вторую форму и предоставляет 11 опций, соответствующих различным настройкам устройства. В первом виде все работает хорошо. Вот мои коды для Form1:
с использованием системы; использование System.Threading; использование System.Collections.Generic; использование System.ComponentModel; использование System.Data; использование System.Drawing; используя System.Linq; использование System.Text; использование System.Threading.Tasks; использование System.Windows.Forms; использование System.IO.Ports; использование System.Configuration; //Обработка последовательного порта пространство имен Developing_Serial_Terminal_for_Arduino_in_C_ { публичный частичный класс Form1: Форма { частный SerialPort SerPort; //Создаем последовательный порт, к которому хотим подключиться частная строка ПолученныеДанные; //Создаем переменную для получения данных общедоступная форма1() { ИнициализироватьКомпонент(); ПолучитьДоступныеПорты(); } void FetchAvailablePorts() { String[]ports = SerialPort.GetPortNames(); //Получаем доступные COM-порты ДоступныеПортыBox.Items.AddRange(порты); } Private void ConnectToPort_Click (отправитель объекта, EventArgs e) { SerPort = новый SerialPort(); SerPort.BaudRate = 9600; SerPort.ИмяПорта = ДоступныйПортсБокс.Текст; СерПорт.Четность = Четность.Нет; СерПорт.БитыДанных = 8; СерПорт.СтопБитс = СтопБитс.Один; SerPort.ReadBufferSize = 20000000; SerPort.DataReceived += SerPort_DataReceived; пытаться { СерПорт.Открыть(); lblStatusCom.Text = "ВКЛ"; lblStatusCom.BackColor = Цвет.Зеленый; } поймать (исключение ex) { MessageBox.Show(ex.Message, «Ошибка! Попробуйте еще раз!»); } } Private void DisconnectFromPort_Click (отправитель объекта, EventArgs e) { если (СерПорт.IsOpen) { СерПорт.Закрыть(); lblStatusCom.Text = "ВЫКЛ"; lblStatusCom.BackColor = Цвет.Серый; } } частная пустота SerPort_DataReceived (отправитель объекта, SerialDataReceivedEventArgs e) { ПолученныеДанные = SerPort.ReadLine(); //читаем строку из последовательного порта this.Invoke(новое действие(ProcessingData)); } частная пустота ProcessingData() { ПолученныеДанные.Текст += ПолученныеДанные.ToString() + Environment.NewLine; } частная пустота SendSerialButton_Click (отправитель объекта, EventArgs e) { //SerPort.WriteLine(SendertextBox.Text.ToString()); SerPort.WriteLine(""); Thread.Sleep(4000); //спать 4 секунды SerPort.WriteLine("Пароль устройства"); Thread.Sleep(4000); //спать 4 секунды } частная пустота button2_Click (отправитель объекта, EventArgs e) { { DialogResult dr =MessageBox.Show("Вы хотите выйти из приложения?", "Сообщение о выходе", MessageBoxButtons.ДаНет,MessageBoxIcon.Question); если (д-р == ДиалогРезультат.Да) { Приложение.ExitThread(); } еще { } } } Private void btnConfig_Click (отправитель объекта, EventArgs e) { SerPort.WriteLine("конфигурация"); вар newform = новая конфигурация(); новаяформа.Показать(); } частная пустота Form1_Load (отправитель объекта, EventArgs e) { } } } Однако во второй форме, когда я пытаюсь отправить «1» устройству, соответствующему 1-му пункту меню конфигурации, я не знаю, как это сделать. SerPort.WriteLine("1") предназначен для выбора опции 1 из списка конфигурации! Вот мои коды для второй формы:
с использованием системы; использование System.Collections.Generic; использование System.ComponentModel; использование System.Data; использование System.Drawing; использование System.IO.Ports; используя System.Linq; использование System.Text; использование System.Threading.Tasks; использование System.Windows.Forms; использование System.Configuration; //Обработка последовательного порта пространство имен Developing_Serial_Terminal_for_Arduino_in_C_ { Конфигурация публичного частичного класса: Форма { //частный SerialPort SerPort; //Создаем последовательный порт, к которому хотим подключиться //частная строка ПолученныеДанные; //Создаем переменную для получения данных общедоступная конфигурация() { ИнициализироватьКомпонент(); } частная пустота Form2_Load (отправитель объекта, EventArgs e) { } Private void btnGenDeviceConfig_Click (отправитель объекта, EventArgs e) { //SerPort.WriteLine("1"); вар newform = новый GenDeviceConfig (); новаяформа.Показать(); } частная пустота button1_Click (отправитель объекта, EventArgs e) { { DialogResult dr = MessageBox.Show("Вы хотите выйти из страницы конфигурации?", "Выйти из сообщения", MessageBoxButtons.ДаНет, MessageBoxIcon.Question); если (д-р == ДиалогРезультат.Да) { это.Закрыть(); } еще { } } } } }
Я разрабатываю приложение в Visual Studio с использованием C#, которое взаимодействует с устройством сбора данных. Первая форма подключается к доступному COM-порту и отправляет пароль устройства. После этого у меня есть доступ к настройке устройства, называемой конфигурацией. Нажатие на кнопку «Конфигурация» открывает вторую форму и предоставляет 11 опций, соответствующих различным настройкам устройства. В первом виде все работает хорошо. Вот мои коды для Form1:
с использованием системы; использование System.Threading; использование System.Collections.Generic; использование System.ComponentModel; использование System.Data; использование System.Drawing; используя System.Linq; использование System.Text; использование System.Threading.Tasks; использование System.Windows.Forms; использование System.IO.Ports; использование System.Configuration; //Обработка последовательного порта пространство имен Developing_Serial_Terminal_for_Arduino_in_C_ { публичный частичный класс Form1: Форма { частный SerialPort SerPort; //Создаем последовательный порт, к которому хотим подключиться частная строка ПолученныеДанные; //Создаем переменную для получения данных общедоступная форма1() { ИнициализироватьКомпонент(); ПолучитьДоступныеПорты(); } void FetchAvailablePorts() { String[]ports = SerialPort.GetPortNames(); //Получаем доступные COM-порты ДоступныеПортыBox.Items.AddRange(порты); } Private void ConnectToPort_Click (отправитель объекта, EventArgs e) { SerPort = новый SerialPort(); SerPort.BaudRate = 9600; SerPort.ИмяПорта = ДоступныйПортсБокс.Текст; СерПорт.Четность = Четность.Нет; СерПорт.БитыДанных = 8; СерПорт.СтопБитс = СтопБитс.Один; SerPort.ReadBufferSize = 20000000; SerPort.DataReceived += SerPort_DataReceived; пытаться { СерПорт.Открыть(); lblStatusCom.Text = "ВКЛ"; lblStatusCom.BackColor = Цвет.Зеленый; } поймать (исключение ex) { MessageBox.Show(ex.Message, «Ошибка! Попробуйте еще раз!»); } } Private void DisconnectFromPort_Click (отправитель объекта, EventArgs e) { если (СерПорт.IsOpen) { СерПорт.Закрыть(); lblStatusCom.Text = "ВЫКЛ"; lblStatusCom.BackColor = Цвет.Серый; } } частная пустота SerPort_DataReceived (отправитель объекта, SerialDataReceivedEventArgs e) { ПолученныеДанные = SerPort.ReadLine(); //читаем строку из последовательного порта this.Invoke(новое действие(ProcessingData)); } частная пустота ProcessingData() { ПолученныеДанные.Текст += ПолученныеДанные.ToString() + Environment.NewLine; } частная пустота SendSerialButton_Click (отправитель объекта, EventArgs e) { //SerPort.WriteLine(SendertextBox.Text.ToString()); SerPort.WriteLine(""); Thread.Sleep(4000); //спать 4 секунды SerPort.WriteLine("Пароль устройства"); Thread.Sleep(4000); //спать 4 секунды } частная пустота button2_Click (отправитель объекта, EventArgs e) { { DialogResult dr =MessageBox.Show("Вы хотите выйти из приложения?", "Сообщение о выходе", MessageBoxButtons.ДаНет,MessageBoxIcon.Question); если (д-р == ДиалогРезультат.Да) { Приложение.ExitThread(); } еще { } } } Private void btnConfig_Click (отправитель объекта, EventArgs e) { SerPort.WriteLine("конфигурация"); вар newform = новая конфигурация(); новаяформа.Показать(); } частная пустота Form1_Load (отправитель объекта, EventArgs e) { } } } Однако во второй форме, когда я пытаюсь отправить «1» устройству, соответствующему 1-му пункту меню конфигурации, я не знаю, как это сделать. SerPort.WriteLine("1") предназначен для выбора опции 1 из списка конфигурации! Вот мои коды для второй формы:
с использованием системы; использование System.Collections.Generic; использование System.ComponentModel; использование System.Data; использование System.Drawing; использование System.IO.Ports; используя System.Linq; использование System.Text; использование System.Threading.Tasks; использование System.Windows.Forms; использование System.Configuration; //Обработка последовательного порта пространство имен Developing_Serial_Terminal_for_Arduino_in_C_ { Конфигурация публичного частичного класса: Форма { //частный SerialPort SerPort; //Создаем последовательный порт, к которому хотим подключиться //частная строка ПолученныеДанные; //Создаем переменную для получения данных общедоступная конфигурация() { ИнициализироватьКомпонент(); } частная пустота Form2_Load (отправитель объекта, EventArgs e) { } Private void btnGenDeviceConfig_Click (отправитель объекта, EventArgs e) { //SerPort.WriteLine("1"); вар newform = новый GenDeviceConfig (); новаяформа.Показать(); } частная пустота button1_Click (отправитель объекта, EventArgs e) { { DialogResult dr = MessageBox.Show("Вы хотите выйти из страницы конфигурации?", "Выйти из сообщения", MessageBoxButtons.ДаНет, MessageBoxIcon.Question); если (д-р == ДиалогРезультат.Да) { это.Закрыть(); } еще { } } } } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Доступ к последовательному COM-порту Windows через контейнер докеров Linux
Anonymous » » в форуме Linux - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно подключиться к порту Arduino с помощью Visual Studio (Доступ к порту COM4 запрещен)
Anonymous » » в форуме C# - 0 Ответы
- 103 Просмотры
-
Последнее сообщение Anonymous
-