Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,716

Не пойму как очистить массив строк

11.04.2023, 20:46. Показов 5855. Ответов 101
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перепробовал все методы но не выходит. Есть переменная string[] PortCOM; она заполняется из метода SerialPort.GetPortNames();
но нужно потом очистить PortCOM. Как это сделать?
C#
1
2
string[] PortCOM;  
PortCOM = SerialPort.GetPortNames();
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2023, 20:46
Ответы с готовыми решениями:

Как очистить таблицу в БД от строк
пробовал ставить на кнопку while (bDDataSet.1.Rows.Count>0) { bDDataSet.1.Rows.RemoveAt(0); } ...

Как очистить массив
Как очистить массив?

Как очистить только первую колонку всех строк в DataGridView не затрагивая другие?
Как очистить только первую колонку всех строк в DataGridView не затрагивая другие ?

101
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
14.04.2023, 20:20
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от VladimirU Посмотреть сообщение
ST LINK он только для прошивки
Мне ли этого не знать. Уже на всякий случай спрашиваю.
0
Эксперт .NET
 Аватар для Rius
13838 / 7880 / 1706
Регистрация: 25.05.2015
Сообщений: 23,924
Записей в блоге: 14
14.04.2023, 20:28
VladimirU, тогда диагноз такой: если порт открыт, драйвер не может освободить некие ресурсы при обнаружении отключения порта от USB. Приложение должно само среагировать на отключение и быстро закрыть останки. Если вы снова подключаете устройство, пока предыдущий сеанс связи не закрыт, получаются вот такие глюки.

Добавлено через 4 минуты
Это "фича" комплектного виндового драйвера usbser.sys.
У Prolific и Silabs драйвера свои, в которых разработчики эту возможность учли и в коде предусмотрели.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
14.04.2023, 20:37
Цитата Сообщение от Rius Посмотреть сообщение
У Prolific и Silabs драйвера свои
Похоже на то. Однако, я ни разу с таким явлением не сталкивался, когда работал по UART напрямую с USB на тех же STM32F... Тут, как говорят доктора, "очень интересный случай".
VladimirU, ну как вариант, остается читать из ветки реестра и ориентироваться на нее. Кстати, можно так и попробовать сразу открыть порт при отключении/подключении МК.
0
Эксперт .NET
 Аватар для Rius
13838 / 7880 / 1706
Регистрация: 25.05.2015
Сообщений: 23,924
Записей в блоге: 14
14.04.2023, 20:41
Цитата Сообщение от wizard41 Посмотреть сообщение
Т.е. в реестре у него все четко, а в приложении чудеса...
Это странно, конечно.
Но если охота разобраться... Берём ILSpy или сразу исходники. Вытаскиваем в свою программу код SerialPort.GetPortNames() и отлаживаем.

Добавлено через 3 минуты
Некоторые упоминания проблемы: https://social.msdn.microsoft.... ?forum=wdk
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
14.04.2023, 20:42
Цитата Сообщение от Rius Посмотреть сообщение
Но если охота разобраться...
Лично мне не интересно ). Как бы там ни было, я не собирался менять исходный код источника, т.к. в своих приложениях никогда с такими парадоксами не сталкивался.
0
Эксперт .NET
 Аватар для Rius
13838 / 7880 / 1706
Регистрация: 25.05.2015
Сообщений: 23,924
Записей в блоге: 14
14.04.2023, 20:48
VladimirU,
Библиотека для получения списка портов самыми разными методами: http://www.naughter.com/enumser.html
Можно собрать под себя в Visual Studio C++ и подключить к C# через PInvoke.

Цитата Сообщение от wizard41 Посмотреть сообщение
Лично мне не интересно ). Как бы там ни было, я не собирался менять исходный код источника, т.к. в своих приложениях никогда с такими парадоксами не сталкивался.
Это к VladimirU больше. Он же хотел исходники класса. Повод хороший теперь есть.

Ещё видел такой глюк: запрашиваем список портов через WMI и приложение сразу падает. WMI собрал кривую инфу с кривого драйвера USB-RS232 адаптера и не смог переварить.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,716
14.04.2023, 22:06  [ТС]
Если бы весь класс перезагрузить можно было то проблема бы ушла.

Добавлено через 1 минуту
Цитата Сообщение от Rius Посмотреть сообщение
тогда диагноз такой: если порт открыт, драйвер не может освободить некие ресурсы при обнаружении отключения порта от USB. Приложение должно само среагировать на отключение и быстро закрыть останки. Если вы снова подключаете устройство, пока предыдущий сеанс связи не закрыт, получаются вот такие глюки.
Да если подождать долго то после запроса портов в системе все копии исчезают.

Добавлено через 59 секунд
Чего то NET не докумекал поэтому и спрашивал про кишки метода SerialPort.GetPortNames();

Добавлено через 46 секунд
Но хорошее предложение wizard41, запрос напрямую из реестра.

Добавлено через 3 минуты
С другой стороны NET не гарантировал работу с виртуальными COM так что проблемы программиста.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
14.04.2023, 22:06
Цитата Сообщение от VladimirU Посмотреть сообщение
Чего то NET не докумекал поэтому и спрашивал про кишки метода SerialPort.GetPortNames();
Чисто технически, это решается путем изучения процессов и их вендоров, кто куда лезет и что где записывает. Для этого уже давно придумана куча инструментов. Но это занятие не для слабонервных.
Цитата Сообщение от VladimirU Посмотреть сообщение
запрос напрямую из реестра
Так надо пробовать хоть так.
0
Эксперт .NET
 Аватар для Rius
13838 / 7880 / 1706
Регистрация: 25.05.2015
Сообщений: 23,924
Записей в блоге: 14
15.04.2023, 05:34
Ещё от копий можно избавиться вот так:.
C#
1
SerialPort.GetPortNames().Distinct()
Но это костыль. Надо вовремя закрывать порт.
0
2296 / 1612 / 400
Регистрация: 26.06.2017
Сообщений: 4,774
Записей в блоге: 1
15.04.2023, 10:15
Костылить последнее дело, когда уже пар из ушей идёт. Мне думается, что предложение Rius самое дельное. То есть надо организовать такой алгоритм: поймали событие потери порта, сразу же гасим все его ресурсы; удаляем этот порт из списка подключений в программе; даём время системе раздуплиться и только потом вызываем SerialPort.GetPortNames().
0
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
15.04.2023, 11:46
а close не проходит?

хотя ты наверное не увидишь, в шарпе за это отвечает сборщик мусора GC
0
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
15.04.2023, 11:48

это по твоему класу(порту),
а если просто строк присвой новый массив
, тот же GC очистит
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,716
15.04.2023, 12:32  [ТС]
prajdziswet, мне бы кишки GetPortNames()
0
Эксперт .NET
 Аватар для Rius
13838 / 7880 / 1706
Регистрация: 25.05.2015
Сообщений: 23,924
Записей в блоге: 14
15.04.2023, 12:36
Исходники фреймворка можно скачать по ссылке в Не пойму как очистить массив строк
Исходники SerialPort: <achive>\Source\ndp\fx\src\sys\system\IO\ports\SerialPort.cs
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
15.04.2023, 13:41
VladimirU, запусти это приложение и понаблюдай как будет вести себя список портов при вкл/откл МК.
Вложения
Тип файла: 7z WindowsFormsApp1.7z (5.6 Кб, 3 просмотров)
0
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
15.04.2023, 14:44
Цитата Сообщение от VladimirU Посмотреть сообщение
prajdziswet, мне бы кишки GetPortNames()
я ж писал как посмотреть, ты должен был видеть ctrl+щелчок мышки по методу и VS покажет:
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
31
32
33
34
35
       public static string[] GetPortNames()
        {
            RegistryKey registryKey = null;
            RegistryKey registryKey2 = null;
            string[] array = null;
            RegistryPermission registryPermission = new RegistryPermission(RegistryPermissionAccess.Read, "HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM");
            registryPermission.Assert();
            try
            {
                registryKey = Registry.LocalMachine;
                registryKey2 = registryKey.OpenSubKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", writable: false);
                if (registryKey2 != null)
                {
                    string[] valueNames = registryKey2.GetValueNames();
                    array = new string[valueNames.Length];
                    for (int i = 0; i < valueNames.Length; i++)
                    {
                        array[i] = (string)registryKey2.GetValue(valueNames[i]);
                    }
                }
            }
            finally
            {
                registryKey?.Close();
                registryKey2?.Close();
                CodeAccessPermission.RevertAssert();
            }
 
            if (array == null)
            {
                array = new string[0];
            }
 
            return array;
        }
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,716
15.04.2023, 14:51  [ТС]
prajdziswet, ясно спасибо. Все таки из реестра читает. Я сегодня накидал тоже что бы из реестра читал порты использовал класс Regedit и все тоже самое. Фигня какая то.

Добавлено через 40 секунд
Так скоро до asm дойду.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,716
24.04.2023, 17:45  [ТС]
После небольшого перерыва двигаюсь дальше.
https://youtu.be/8y2C8zbhTpQ

Нареканий в обработки работы сервомотором нет. Запустил на STEP DIR управление энкодер на 10 000 импульсов пришлось делить в самом МК на таймере да 2000.
В общем при достижении 300 об.мин на валу ЦП пк загружается до 60% а он ryazan 3 2200g. Вроде как скорости то небольшие для такого компа а ЦП по мне так очень сильно грузится. Есть ли способы оптимизировать как то снизить расходы ресурсов ЦП?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
24.04.2023, 18:01
Цитата Сообщение от VladimirU Посмотреть сообщение
Есть ли способы оптимизировать как то снизить расходы ресурсов ЦП?
Узнать что вы там наговнокодили мы должны телепатически?
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,716
24.04.2023, 18:07  [ТС]
Someone007, как там в фильме Кингсман "Манеры лицо мужчины" у вас говно манеры в общении.

Добавлено через 1 минуту
Завтра выложу немного упрощу для удобочитаемости.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2023, 18:07

Как очистить статический массив?
у меня в классе обявлен статический массив - static overall_data* array_persone; после класса задаю размер overall_data*...

Как очистить массив выделеной памяти
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;cstdlib&gt; using namespace std; int main() { int koltest; int...

Как очистить статический массив структур?
structure A { char name; int weight; }; A B; В массив &quot;В&quot; я считал текстовый файл, теперь его нужно очистить что-бы считать...

Как очистить или удалить массив BitmapImage
Создаю галерею картинок. В массив из БД определенного раздел записываю urlы картинок. Все работает хорошо. Проблема в том что массив ни...

Можно ли очистить новый массив от нулей и как
Вообщем вот задание: Дан целочисленный массив A размера N. Переписать в новый целочисленный массив B все четные числа из исходного массива...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru