Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860

Изменение значения в Combobox при работе с Com портом

13.06.2017, 11:01. Показов 2818. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем, есть такая проблема. На форме существует combobox с выбором номера порта. Работаю с VCP. В ноутбуке по умолчание порта нет, пока не подключишь шнурок. Так вот Например я открываю форму, шнурок еще не подключен, а в combobox пустота, подключаю шнурок - в системе определяется COM порт с номером, а в combobox по прежнему пустота. И наоборот, шнурок выдернул, а в combobox висит номер порта. Как можно это победить? Примерно понимаю, что нужно дергать событие, но где и как не знаю. Буду благодарен за помощь!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public MainForm()
        {
            InitializeComponent();
            LoadListboxes();
        }
 
void LoadListBoxes()
{
string[] ports = SerialPort.GetPortNames();
 
            lstPorts.DataSource = ports; // Это Combobox;
 
            try
            {
                if (lstPorts.Items.Count != 0)
                    lstPorts.SelectedIndex = 0;
                
                else
                {
                    lstPorts.Text = String.Empty;
                    // mb.Close();
                }
            }
            catch(Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2017, 11:01
Ответы с готовыми решениями:

порядок байт в пакетах при работе с cоm-портом
Всем доброго времени суток. Уважаемые программисты, у меня возник такой вопрос: Есть пакет, который комьютер пишет в ком-порт ...

Изменение значения Combobox в DataGridview
Добрый день! В datagrid имеется столбец combobox. C помощью извращений с событиями смог достучаться до события SelectionIndexChanged...

Как сделать чтобы при выборе в combobox , менялись значения в других combobox?
Есть два combobox. Как их сделать зависимыми друг от друга. Что бы при выборе одного combobox менялись данные в другом. К примеру: В...

7
Эксперт .NET
 Аватар для Usaga
14304 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,401
13.06.2017, 12:22
Лучший ответ Сообщение было отмечено Jman как решение

Решение

Jman, у SerialPort нет таких событий. Вам нужно по таймеру обновлять список портов. Или перезапускать свою программу, ничего в этом страшного нет. Можно ещё кнопку добавить "Обновить список портов".
1
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
13.06.2017, 12:24  [ТС]
Т.е можно например раз в 10 сек. обновлять порты? Я просто не знаю, как выбрать оптимальное время.
0
Эксперт .NET
 Аватар для Usaga
14304 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,401
13.06.2017, 12:28
Jman, это какое-то переусложнение. Просто перезапустите приложение и всё. COM-порт - штука очень не богатая на возможности. Очень много софта так работает, никто ещё, вроде бы, из-за этого не повесился.
1
Эксперт .NET
 Аватар для Rius
13137 / 7697 / 1677
Регистрация: 25.05.2015
Сообщений: 23,485
Записей в блоге: 14
13.06.2017, 14:24
Лучший ответ Сообщение было отмечено Jman как решение

Решение

Можно подписаться на события винды по подключению/отключению устройств и обновлять список по ним, а не по таймеру.
2
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
13.06.2017, 14:26  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Можно подписаться на события винды по подключению/отключению устройств и обновлять список по ним, а не по таймеру.
Можете подробнее рассказать, как можно это сделать? Или где почитать?
0
Эксперт .NET
 Аватар для Rius
13137 / 7697 / 1677
Регистрация: 25.05.2015
Сообщений: 23,485
Записей в блоге: 14
13.06.2017, 14:26
См.
WM_DEVICECHANGE
DEVICE_ARRIVAL
DEVICE_REMOVECOMPLETE
RegisterDeviceNotification
UnregisterDeviceNotification

На форуме уже достаточно поднималось.
2
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
13.06.2017, 14:43  [ТС]
Круто!! Спасибо. Накидал пример. Все работает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
 public static class References
    {
         /// <summary>
        /// System and programm constants
        /// </summary>
        public const int TIMER_INTERVAL = 1000;
        public const int READ_TIMEOUT = 1000;
        public const int WRITE_TIMEOUT = 1000;
        public const int WM_DeviceChange = 0x219; //usb
        public const int DBT_DEVICEARRIVAL = 0x8000; // Device is connected
        public const int DBT_DEVICEREMOVECOMPLETE = 0x8004; //Device is disconnected
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 public partial class MainForm : Form
    {
 
        public MainForm()
        {
            InitializeComponent();
        }
 
        // Windows Device manager handler
 
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
 
            if (m.Msg == References.WM_DeviceChange)
            {
                if (m.WParam.ToInt32() == References.DBT_DEVICEARRIVAL)
                {
                    //новое usb подключено
                    MessageBox.Show("New dev connected");
                }
                if (m.WParam.ToInt32() == References.DBT_DEVICEREMOVECOMPLETE)
                {
                    // usb отключено
                    MessageBox.Show("Dev disconnected");
                }
 
            }
 
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2017, 14:43
Помогаю со студенческими работами здесь

C# Как сделать чтобы при выборе в combobox , менялись значения в других combobox?
Приветствую коллеги. Только встал на путь программирования и столкнулся с дилеммой. Есть форма, на ней 4 combobox. В каждом combobox по...

Изменение значения ComboBox внутри WebBrowser
Здравствуйте, нужна помощь! Вот я присваиваю TextBox'у в webbrowser1 значение из СomboBox'а который у меня в Form1 foreach (HtmlElement...

Изменение значения textbox при выборе определенной строки combobox
Всем привет. Прошу помощи у более знающих, может кто сталкивался. Есть таблица sprvidzaloga в ней поля kod, title, sumocen,procent....

Ошибка при работе с COM-портом
Здравствуйте! Пульт, собранный на микроконтроллере, периодически посылает по RS485 на компьютер запросы, компьютер - отвечает. Однако,...

Потеря данных при работе с COM портом
Добрый день. У меня сложилась проблема с программированием COM порта. Я пишу программу, которая должна взаимодействовать с оборудованием....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru