roboforum.ru

Технический форум по робототехнике.

Авто-определение COM порта на котором висит Ардуина

Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 19:17

Всем привет!
Решил написать программку, которая бы "сканировала" все COM порты которые есть в компьютере, и тот на котором висит контроллер Ардуино выводила бы на экран. Вот в инете нарыл, народ тем же вопросом задавался:

http://stackoverflow.com/questions/3293 ... o-com-port

Вопрос: как мне к этому делу прикрутить графическую оболочку?
Я так понимаю надо чтото типа Visual Studio взять, туда портировать этот код:

Код: Выделить всёРазвернуть
private string AutodetectArduinoPort()
        {
            ManagementScope connectionScope = new ManagementScope();
            SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery);

            try
            {
                foreach (ManagementObject item in searcher.Get())
                {
                    string desc = item["Description"].ToString();
                    string deviceId = item["DeviceID"].ToString();

                    if (desc.Contains("Arduino"))
                    {
                        return deviceId;
                    }
                }
            }
            catch (ManagementException e)
            {
                /* Do Nothing */
            }

            return null;
        }


Какие для этого библиотеки надо искать и добавлять в проект?

На С++, если пока не брать графическую оболочку, это я так понимаю примерно так будет выглядеть:

Код: Выделить всёРазвернуть
void AutodetectArduinoPort()
        {
            ManagementScope connectionScope = new ManagementScope();                                         //тут незнаю
            SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort");                     // 
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery);  //
            {
                while(1)
                {
                    ManagementObject item in searcher.Get()
                    string desc = item["Description"].ToString();
                    string deviceId = item["DeviceID"].ToString();
                    if (desc.Contains("Arduino"))
                    {
                        printl(deviceId);
                        break();
                    }
                }
            }
            return 0;
        }


Только я не знаю C# совершенно... И основной код не понятен

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 19:31

Если в дескрипшене реально есть слово Ардуино, то можно элементарно мой ком-виджет на питоне допилить

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 20:02

А можно поподробней про Ваш проект?

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 20:23

Спасибо за "проект" - звучит гордо :-)
forum102/topic11306.html#p235012

Добавлено спустя 17 минут 35 секунд:
Orduino-Nano вот так определяется: OM2 Silicon Labs CP210x USB to UART Bridge (COM2)

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 20:27

Посмотрел
Я питон знаю не лучше C#.
Насколько сложно допилить этот виджет?

Добавлено спустя 2 минуты 10 секунд:
Orduino-Nano вот так определяется: OM2 Silicon Labs CP210x USB to UART Bridge (COM2)


Допустим в дескрипшене нету инфы что подключена именно Ардуина.
Может тогда стоит попробовать отправлять какой-нить байт?
Среда Ардуиновская же перед загрузкой както узнает что на этом порту за Ардуина, какой чип

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 20:29

Dmitri Vladimirovich писал(а):Посмотрел
Я питон знаю не лучше C#.
Насколько сложно допилить этот виджет?

Элементарно. Вопрос в том, какая будет от этого польза. Сам по себе он делает только энумерацию портов и открывает коннект. Т.е. для того, чтобы его использовать в проекте его надо встраивать в большой проект, предположительно тоже написанный на питоне...
Но вообще проблемы с этой задачей почти никаких. Если можете работать с портом на любом языке и в любой среде, то объем доработок минимальный

Добавлено спустя 17 секунд:
А зачем это кстати?

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 20:41

У нас в кружке когда приходят новые ребята с трудом запоминают как узнать номер порта где висит Ардуина. Иногда вообще пропадает желание дальше пробовать, потомучто новичкам как не странно из за этой процедуры установка кажется весьма сложной. Вот решил попробовать сделать такую программку.

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 20:57

Dmitri Vladimirovich писал(а):У нас в кружке когда приходят новые ребята с трудом запоминают как узнать номер порта где висит Ардуина. Иногда вообще пропадает желание дальше пробовать, потомучто новичкам как не странно из за этой процедуры установка кажется весьма сложной. Вот решил попробовать сделать такую программку.

Проще сделать, чтобы запоминался последний используемый порт имхо...

Добавлено спустя 2 минуты 38 секунд:
а опишите подробнее, что хотите сделать? Может мне проще мою прогу доделать?

Добавлено спустя 1 минуту 7 секунд:
просто написать на каком порту ардуино что ли?????

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 21:00

Ага, порт на котором висит Ардуино. Хотябы версии с ft232

Добавлено спустя 1 минуту 15 секунд:
То есть подрубил кто-то Ардуину к компу, запустил эту прогу, ага, Ардуина на COM7, Открывает Ардуину, Тулз-Порт-СОМ7

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 21:04

А питон поставите на машины? Я пока не умею делать чтобы без интерпретатора работало Ж((

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 21:11

Для начала вполне пойдет питон, но потом думаю делать под Линух и Мак, все таки не все на винде сидят, а многие начинают дома пробовать заниматься

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 21:26

Ну вот. Находит первый порт со словом Ардуино в описании.

Добавлено спустя 51 секунду:
По кнопке обновляет...
DeaD, на картинке тебе намек :-)
Вложения
ArduinoPortFinder.py
(1.98 КиБ) Скачиваний: 221
serial.jpg

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 21:49

Уряя! Загрузился питон! Сча буду пробовать

Добавлено спустя 5 минут 56 секунд:
Поставил питон
Подключил Ардуину
Запускаю фал - на экране появляется окно консоли и сразу исчезает. Ардуина висит на КОМ15

Re: Авто-определение COM порта на котором висит Ардуина

dccharacter » 26 мар 2012, 21:53

запустите cmd
напишите там "python.exe ArduinoPortFinder.py"

Добавлено спустя 47 секунд:
Скорее всего она ругается на не установленный pySerial

Re: Авто-определение COM порта на котором висит Ардуина

Dmitri Vladimirovich » 26 мар 2012, 22:03

Скачал пакет pyserial, запустил setup.py, на некоторое время появилось окно консоли и исчезло.
Запустил Вашу программу - тоже самое.
Пробовал разные файлы запускать из папки с примерами- о пять появляется консольное окно и пропадает. Может еще чего-то не хватает?
Качал питон и pyserial отсюда:
http://pypi.python.org/pypi/pyserial
http://www.python.org/getit/

Добавлено спустя 17 секунд:
уп, сча попробую

Добавлено спустя 2 минуты 50 секунд:
C:\Documents and Settings\Dim\Мои документы>python.exe Arduin
oPortFinder.py
"python.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

C:\Documents and Settings\Dim\Мои документы>

Добавлено спустя 35 секунд:
блин, проявляется мое незнание работы с виндовой консолью

Добавлено спустя 15 секунд:
а, стоп. извиняюсь

Добавлено спустя 1 минуту 57 секунд:
Код: Выделить всёРазвернуть
C:\Program Files\Python32>python.exe ArduinoPortFinder.py
Traceback (most recent call last):
  File "ArduinoPortFinder.py", line 13, in <module>
    import serial
ImportError: No module named serial

C:\Program Files\Python32>


Добавлено спустя 3 минуты 7 секунд:
походу pyserial таки не поставился


cron
Rambler\'s Top100 Mail.ru counter