Технический форум по робототехнике.
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# совершенно... И основной код не понятен
dccharacter » 26 мар 2012, 19:31
Если в дескрипшене реально есть слово Ардуино, то можно элементарно мой ком-виджет на питоне допилить
Dmitri Vladimirovich » 26 мар 2012, 20:02
А можно поподробней про Ваш проект?
dccharacter » 26 мар 2012, 20:23
Спасибо за "проект" - звучит гордо
forum102/topic11306.html#p235012Добавлено спустя 17 минут 35 секунд:Orduino-Nano вот так определяется: OM2 Silicon Labs CP210x USB to UART Bridge (COM2)
Dmitri Vladimirovich » 26 мар 2012, 20:27
Посмотрел
Я питон знаю не лучше C#.
Насколько сложно допилить этот виджет?
Добавлено спустя 2 минуты 10 секунд:Orduino-Nano вот так определяется: OM2 Silicon Labs CP210x USB to UART Bridge (COM2)
Допустим в дескрипшене нету инфы что подключена именно Ардуина.
Может тогда стоит попробовать отправлять какой-нить байт?
Среда Ардуиновская же перед загрузкой както узнает что на этом порту за Ардуина, какой чип
dccharacter » 26 мар 2012, 20:29
Dmitri Vladimirovich писал(а):Посмотрел
Я питон знаю не лучше C#.
Насколько сложно допилить этот виджет?
Элементарно. Вопрос в том, какая будет от этого польза. Сам по себе он делает только энумерацию портов и открывает коннект. Т.е. для того, чтобы его использовать в проекте его надо встраивать в большой проект, предположительно тоже написанный на питоне...
Но вообще проблемы с этой задачей почти никаких. Если можете работать с портом на любом языке и в любой среде, то объем доработок минимальный
Добавлено спустя 17 секунд:А зачем это кстати?
Dmitri Vladimirovich » 26 мар 2012, 20:41
У нас в кружке когда приходят новые ребята с трудом запоминают как узнать номер порта где висит Ардуина. Иногда вообще пропадает желание дальше пробовать, потомучто новичкам как не странно из за этой процедуры установка кажется весьма сложной. Вот решил попробовать сделать такую программку.
dccharacter » 26 мар 2012, 20:57
Dmitri Vladimirovich писал(а):У нас в кружке когда приходят новые ребята с трудом запоминают как узнать номер порта где висит Ардуина. Иногда вообще пропадает желание дальше пробовать, потомучто новичкам как не странно из за этой процедуры установка кажется весьма сложной. Вот решил попробовать сделать такую программку.
Проще сделать, чтобы запоминался последний используемый порт имхо...
Добавлено спустя 2 минуты 38 секунд:а опишите подробнее, что хотите сделать? Может мне проще мою прогу доделать?
Добавлено спустя 1 минуту 7 секунд:просто написать на каком порту ардуино что ли?????
Dmitri Vladimirovich » 26 мар 2012, 21:00
Ага, порт на котором висит Ардуино. Хотябы версии с ft232
Добавлено спустя 1 минуту 15 секунд:
То есть подрубил кто-то Ардуину к компу, запустил эту прогу, ага, Ардуина на COM7, Открывает Ардуину, Тулз-Порт-СОМ7
dccharacter » 26 мар 2012, 21:04
А питон поставите на машины? Я пока не умею делать чтобы без интерпретатора работало Ж((
Dmitri Vladimirovich » 26 мар 2012, 21:11
Для начала вполне пойдет питон, но потом думаю делать под Линух и Мак, все таки не все на винде сидят, а многие начинают дома пробовать заниматься
dccharacter » 26 мар 2012, 21:26
Ну вот. Находит первый порт со словом Ардуино в описании.
Добавлено спустя 51 секунду:По кнопке обновляет...
DeaD, на картинке тебе намек
- Вложения
-
- ArduinoPortFinder.py
- (1.98 КиБ) Скачиваний: 254
-
Dmitri Vladimirovich » 26 мар 2012, 21:49
Уряя! Загрузился питон! Сча буду пробовать
Добавлено спустя 5 минут 56 секунд:
Поставил питон
Подключил Ардуину
Запускаю фал - на экране появляется окно консоли и сразу исчезает. Ардуина висит на КОМ15
dccharacter » 26 мар 2012, 21:53
запустите cmd
напишите там "python.exe ArduinoPortFinder.py"
Добавлено спустя 47 секунд:
Скорее всего она ругается на не установленный pySerial
Dmitri Vladimirovich » 26 мар 2012, 22:03
Скачал пакет pyserial, запустил setup.py, на некоторое время появилось окно консоли и исчезло.
Запустил Вашу программу - тоже самое.
Пробовал разные файлы запускать из папки с примерами- о пять появляется консольное окно и пропадает. Может еще чего-то не хватает?
Качал питон и pyserial отсюда:
http://pypi.python.org/pypi/pyserialhttp://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 таки не поставился