roboforum.ru

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


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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Авто-определение 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# совершенно... И основной код не понятен
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 19:31

Если в дескрипшене реально есть слово Ардуино, то можно элементарно мой ком-виджет на питоне допилить
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Dmitri Vladimirovich » 26 мар 2012, 20:02

А можно поподробней про Ваш проект?
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 20:23

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

Добавлено спустя 17 минут 35 секунд:
Orduino-Nano вот так определяется: OM2 Silicon Labs CP210x USB to UART Bridge (COM2)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Dmitri Vladimirovich » 26 мар 2012, 20:27

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

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


Допустим в дескрипшене нету инфы что подключена именно Ардуина.
Может тогда стоит попробовать отправлять какой-нить байт?
Среда Ардуиновская же перед загрузкой както узнает что на этом порту за Ардуина, какой чип
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 20:29

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

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

Добавлено спустя 17 секунд:
А зачем это кстати?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Dmitri Vladimirovich » 26 мар 2012, 20:41

У нас в кружке когда приходят новые ребята с трудом запоминают как узнать номер порта где висит Ардуина. Иногда вообще пропадает желание дальше пробовать, потомучто новичкам как не странно из за этой процедуры установка кажется весьма сложной. Вот решил попробовать сделать такую программку.
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 20:57

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

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

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

Добавлено спустя 1 минуту 7 секунд:
просто написать на каком порту ардуино что ли?????
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Dmitri Vladimirovich » 26 мар 2012, 21:00

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

Добавлено спустя 1 минуту 15 секунд:
То есть подрубил кто-то Ардуину к компу, запустил эту прогу, ага, Ардуина на COM7, Открывает Ардуину, Тулз-Порт-СОМ7
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 21:04

А питон поставите на машины? Я пока не умею делать чтобы без интерпретатора работало Ж((
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Dmitri Vladimirovich » 26 мар 2012, 21:11

Для начала вполне пойдет питон, но потом думаю делать под Линух и Мак, все таки не все на винде сидят, а многие начинают дома пробовать заниматься
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 21:26

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

Добавлено спустя 51 секунду:
По кнопке обновляет...
DeaD, на картинке тебе намек :-)
Вложения
ArduinoPortFinder.py
(1.98 КиБ) Скачиваний: 256
serial.jpg
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Dmitri Vladimirovich » 26 мар 2012, 21:49

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

Добавлено спустя 5 минут 56 секунд:
Поставил питон
Подключил Ардуину
Запускаю фал - на экране появляется окно консоли и сразу исчезает. Ардуина висит на КОМ15
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

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

Сообщение dccharacter » 26 мар 2012, 21:53

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

Добавлено спустя 47 секунд:
Скорее всего она ругается на не установленный pySerial
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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 таки не поставился
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7