Windows. Железо. Интернет. Безопасность. Операционные системы. Советы

Управление через юсб. Управляем нагрузками от COM или USB. Как пакеты USB декодируются в firmware микроконтроллера



С точки зрения программирования модуль предлагает весьма интересное решение. Во-первых, что следует указать, при подключении к компьютеру он определяется ОС Windows (и Linux тоже) как виртуальный COM порт, т.е. в диспетчере устройств у Вас появится дополнительный COM порт. Соответственно, управление модулем осуществяляется через обычный последовательный порт. Это означает, что для работы с модулем Вам вообще нет необходимость даже вспоминать о USB - Вы работаете только с COM портом. Значит для работы с модулем можно использовать любой язык / среду / компонент прграммирования, главное только чтобы он поддерживал работу с последовательными портами. Для непосредственного управления модулем предусмотрен набор текстовых . Т.е. выбираем нужную команду, записываем ее в COM порт и модуль выполняет то что заказано. Весьма просто и удобно. Благодаря тому что команды текстовые, модулем можно управлять из любой программы-терминала для COM портов, например HyperTerminal, входящей в состав Windows.

Помимо возможности управления линиями ввода/вывода модуль также имеет встроенный 10-ти разрядный АЦП с частотой дискретизации до 400 Гц + еще парочку интересных настроек и свойств, о которых мы поговорим позже.


Итак, приступим к практическому использованию модуля. Первым делом необходимо установить драйвера для него. Весть процесс установки модуля подробнейшим образом описан в соответствующем оффициальном документе . Здесь я дублировать информацию не буду, обращю только внимание на то, что фактически драйвер, требуемый для модуля уже находится в составе Windows. Это так называемый стандартный драйвер виртуального COM порта. Итого из файлов установки нам нужен только ke-usb24.inf в котором указаны параметры установки.

После установки устройства, давайте создадим на основе модуля самую простенькую схемку - будем управлять светодиодами, подключенными к модулю, а именно зажигать или тушить их по нашей команде. Схема подобного устройства показана на рисунке ниже. Схема расчитана на маломощные светодиоды. Я использую L-934 фирмы Kingbright. Если используемые Вами светодиоды помощнее и Вы чувствуете что корпус модуля или светодиода изрядно нагревается, лучше между светодиодом и выводом модуля включить токоограничивающий резистор номиналом в 200-600 Ом.

Вот эта же схема собранная мною на макетной плате. Я позволил тут себе не набирать все светодиоды.

Итак, схему собрали. Пора взяться непосредственно за софт. Тут есть два варианта. Первый, это использовать готовую терминальную программу и подавать в ней команды модулю в ручную. К таким программам относятся, например, HyperTerminal или . Последняя хороша тем, что для нее доступны исходные коды и при желании ее можно модернизировать под свои нужды. Второй вариант, болле интересный, разработка собственнго софта. Давайте так и сделам. Напишем небольшую Windows программку на С++ в среде Microsoft Visual C++ 6.0 для управления линиями модуля, настроенными на выход.

Внешне она выглядит вот так. Т.е. вводим номер порта, нажимаем кнопку "Open". Далее галочками выбираем каким светодиодам светиться, а каким нет. Все весьма просто.

Посмотрим на код этой программы. Начнем с функции открытия порта. Тут все уже рассматривалось не раз. Единственное, на что я хотел бы обратить Ваше внимание, так это на скорость порта. Для модуля Ke-USB24A она не имеет НИКАКОГО значения. Можно было подключаться и на 1200 и 115200. Хоть мы и работаем с COM портом, он всеже виртуальный, и реально данные передаются по USB каналу. А ему знания о скорости виртуального COM порта совершенно не нужны. Здесь они указываются только для поддержания совместимости.

Рассмотрим код формирования команды модулю и ее отправки в порт. Для установки линии модуля Ke-USB24A служит текстовая команда $KE,WR, . Собственно в этой функции мы такую команду и формируем. Обратите внимание на \r\n в конце команды. Таков синтаксис команд модуля - все должно заканчиваться символами возврата каретки и перевода на новую строку.

void CLineControlDlg::WriteDataToLine(int line, bool value) { if (line 24 || m_hFile == NULL) { MessageBox("Can`t Write\nCommand", "Error", MB_ICONERROR); return ; } DWORD lpdwBytesWritten; char buf; int len = sprintf(buf, "$KE,WR,%d,%d\r\n", line, value); WriteFile(m_hFile, buf, len, &lpdwBytesWritten, NULL); }

Итак, с кодом наверное все понятно. Запускаем программу, не забыв при этом подключить модуль. Открываем порт (номер порта можно посмотреть в диспетчере устройств). Щелкаем галочками - управляем светодиодами.

Вот таким вот образом можно за минимальный срок собрать схему управления светодиодами через USB. Ke-USB24A может использоваться и для управления нагрузками помощнее, но для этого к нему будет необходимо добавить дополнительную внешнюю схему в виде реле или мощного транзистора. Об этом мы поговорим позже.


Компьютер, некоторые детали, инструменты любой желающий сможет организовать простое управление бытовыми приборами с этого компьютера. Множество приборов используемых в быту имеют множество функций, например большинство современных телевизоров могут показывать некоторое количество разных каналов, у вентилятора м.б. некоторое количество разных режимов работы и т.д. Для того чтобы сделать такое сложное управление как например переключение каналов или режимов работы, помимо перечисленного выше понадобятся дополнительные знания, детали и инструменты но сделать простое включение и выключение под силу каждому кто это перечисленное имеет. Arduino связывается с компьютером через USB порт, передачу информации с компьютера на Arduino можно осуществлять через среду разработки для Arduino (называется Arduino IDE) которую можно скачать с страницы на официальном сайте Arduino . Существует множество разнообразных модулей для взаимодействия Arduino с внешним миром, например специальный модуль с блоком реле для коммутации нагрузок, при использовании таких модулей работа сильно упрощается, здесь же мы рассмотрим самостоятельное изготовление модуля с одним реле для включение/выключения бытовых приборов, при необходимости можно изготовить более одного такого модуля и использовать их с одним Arduino тем самым сделав возможным простое управление множеством бытовых приборов. Arduino (любое) имеет некоторое количество выводов общего назначения которые обозначаются, на плате, просто цифрами или цифрами с волнистым знаком "~". Подключив Arduino к компьютеру и записав в него (в Ардуино) специальный скетч (программа для Arduino) можно с этого компьютера через программу "Arduino IDE" управлять этими выводами делая на них высокое напряжение (примерно +5В (HIGH)) или низкое (примерно 0В (LOW)). Также на Arduino есть вывод "GND" (на плате так и обозначен). Если на одном из выводов общего назначения высокое напряжение то подключив что либо проводящее ток между этим выводом и выводом "GND" через то что подключено потечёт электрический ток и величина этого тока будет зависеть от сопротивления этого предмета и рассчитать её можно по закону Ома , т.е. чем меньше сопротивление том больше ток, но если сопротивление будет слишком низким то через Arduino потечёт слишком большой ток и оно перегорит. Максимальный ток который может выдать вывод общего назначения Arduino может быть разным в зависимости от используемого в нём микроконтроллера но обычно это 40мА = 0.04А - этого может быть недостаточно для того чтобы включить реле которое будет включать прибор (приборы) поэтому для усиления тока необходимо использовать дополнительный элемент например биполярный транзистор. Биполярный транзистор имеет три вывода: эмиттер, коллектор, база. Максимальный ток транзистора также ограничен как и у Ардуино и обычно он больше, например у популярного КТ315 максимальный ток равен 100мА = 0.1А. Биполярные транзисторы бывают двух типов n-p-n и p-n-p использовать можно оба типа но по разному и далее рассмотрим использование транзистора КТ315 тип которого n-p-n. Для того чтобы транзистор усилил ток из Ардуино необходимо соединить его базу с выводом Ардуино ЧЕРЕЗ РЕЗИСТОР сопротивлением 1кОм (на резисторе м.б. написано 1к), эмиттер этого транзистора соединить с "GND" Arduino и минусом питания или "GND" источника питания напряжение которого равно напряжению обмотки имеющегося реле (допустим 12В) один из выводов обмотки реле соединить с коллектором транзистора другой с плюсом источника питания (+12В допустим) и ещё одной не влияющей на усиление но ОЧЕНЬ важной деталью является диод который нужно соединить анодом с коллектором и катодом с плюсом источника питания (+12В). Если диод импортный то на скорее всего на его корпусе будет светлая полоса - она указывает на катод, другой вывод диода это анод. Оставшиеся выводы реле - это выводы его контактов, если их два и они не замкнуты то при подаче достаточного тока на обмотку реле эти контакты замкнуться, их нужно соединить последовательно с прибором и это последовательное соединение можно втыкать в розетку, тогда при замыкании контактов на прибор поступит 220В и он включиться. Описанное выше можно изобразить на картинке:

Рисунок 1 - Управление прибором с компьютера


Это нестандартная схема для лучшего понимания, обычно используют схемы такие:

Рисунок 2 - Управление прибором с компьютера


Хотя в этой схеме тоже присутствует нестандартное обозначение платы Ардуино. На рисунке обозначено Arduino UNO (можно заказать по этой ссылке http://ali.pub/1v22bh) но можно использовать и любое другое. Соединения можно делать например на макетной плате и проводами или пайкой. После того как всё правильно соединено и проверено можно подключить Ардуино по USB к компьютеру и загрузить в неё скетч:

Char pc_code=0;

Void setup()
{
pinMode(2, OUTPUT);
Serial.begin(9600);
}

Void loop()
{
if (Serial.available() > 0)
{
pc_code = Serial.read();
if(pc_code=="a")
{
digitalWrite(2, HIGH);
}
else if(pc_code=="b")
{
digitalWrite(2, LOW);
}
}
}

О том как правильно настроить Ардуино и загрузить в неё скетч уже описано на странице "Простое управление шаговым двигателем с компьютера через ардуино" . Далее для включения прибора необходимо на Ардуино отослать символ "a" для выключения символ "b". Для того чтобы отослать символ на ардуино можно, в среде Arduino IDE, войти по вкладке Инструменты-Монитор последовательного порта и в появившемся окне в верхнем текстовом поле вписывать символы и отсылать нажатием кнопки "отправить" символ придёт на ардуино и для данного случая если отослать символ "a" то прибор включиться, если "b" то соответственно выключиться. Если Ардуино не принимает символы то нужно в правом нижнем углу окна монитора последовательного порта установить такую же скорость какая прописана в скетче т.е. 9600 бод. Для того чтобы включать 2 прибора можно немного изменить скетч:

Char pc_code=0;

Void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(9600);
}

Void loop()
{
if (Serial.available() > 0)
{
pc_code = Serial.read();
if(pc_code=="a")
{
digitalWrite(2, HIGH);
}
else if(pc_code=="b")
{
digitalWrite(2, LOW);
}
else if(pc_code=="c")
{
digitalWrite(3, HIGH);
}
else if(pc_code=="d")
{
digitalWrite(3, LOW);

Устройство компьютерного управления различными приборами, схема которого показана на рис. 1, подключается к USB-порту компьютера, который сегодня есть в каждом из них. Единственная микросхема устройства - распространенный микроконтроллер ATmega8 . Он необходим для организации связи по шине USB . Хотя в нем и отсутствует специализированный аппаратный модуль, эта функция выполняется программно.

Рисунок 1

Резистор R1, подключенный между положительным выводом источника питания и линией D-шины USB, переводит ее в низкоскоростной режим LS со скоростью обмена 1,5 Мбит/с, что и позволяет расшифровывать посылки компьютера программным способом. Резисторы R4 и R5 устраняют переходные процессы, возникающие при обмене информацией, что увеличивает стабильность работы. Конденсатор С1 блокирует импульсные помехи в цепи питания, что также улучшает стабильность работы устройства Диоды VD1 и VD2 служат для понижения напряжения питания микроконтроллера приблизительно до 3,6 В - это требуется для согласования уровней с шиной USB.

Сигналы управления приборами формируются на выходах РВ0-РВ5 и РС0, РС1 микроконтроллера. Высокий логический уровень - напряжение около 3,4 В. Напряжение низкого уровня близко к нулю. К выходам можно подключать приборы, потребляющие ток не более 10 мА (от каждого выхода). Если требуются большие значения тока или напряжения, то следует использовать узлы согласования.

Устройство собрано на макетной плате, печатная не разрабатывалась Применены резисторы МЛТ, конденсаторы С2 и СЗ - керамические высокочастотные, С1 - К50-35 или аналогичный импортный. Диоды кремниевые с падением напряжения на переходе около 0,7 В.

Программа для микроконтроллера разработана в среде Bascom-AVR версии 1.12.0.0. Для работы с шиной USB использована библиотека swusb.LBX , которая выполняет программное декодирование сигналов USB в режиме реального времени. Полученный в результате компиляции код программы из файла с расширением HEX следует загрузить во FLASH-память микроконтроллера. Состояние разрядов конфигурации микроконтроллера должно соответствовать показанному на рис. 2.

Рисунок 2

При первом подключении устройства к компьютеру операционная система обнаружит новое USB НID совместимое устройство с именем "uniUSB " и установит необходимые драйверы. Через несколько секунд устройство настроено и готово к использованию. Для работы с ним была создана программа UniUSB. Она представлена в двух вариантах: для 32-разрядных (х86) и 64-разрядных (х64) операционных систем семейства Windows. Работа 32-разрядной версии проверена в операционных системах Windows 98, Windows ХР, Windows 7, а 64-разрядной - только в Windows ХР х64.

Программа UniUSB написана на языке PureBasic (версия 4.31) с использованием библиотеки пользовательских функций HID_Lib , поддерживающей работу с USB HID устройствами. Внешний вид окна программы показан на рис. 3.

Рисунок 3

В одной папке с ее исполняемым файлом должен находиться файл, называющийся UniUSB_KOfl.txt . В этом файле хранится сценарий управления внешними приборами. При запуске программы данные из файла загружаются в таблицу, расположенную в главном окне, а при завершении работы сохраняются в файле. Щелчок левой кнопкой мыши по ячейкам таблицы позволяет изменять их состояние: 1 - высокий логический уровень, 0 или пусто - низкий логический уровень.

Для добавления или удаления столбца таблицы нужно по ней щелкнуть правой кнопкой мыши и в появившемся меню выбрать требуемое действие. При подключении устройства к USB-порту программа обнаружит его и активирует кнопку "Пуск" , расположенную в верхней части окна на панели инструментов. Нажатием на эту кнопку запускают процесс перебора столбцов таблицы и установки указанных в них состояний выходов. Для большей наглядности слева от таблицы подсвечиваются номера выходов, на которых в данный момент установлен высокий логический уровень. Скорость перебора (время в миллисекундах между переходами от столбца к столбцу) задают в поле "Скорость, мс".

Учтите, операционная система Windows - многозадачная! Это означает, что процессорное время делится между множеством иногда скрытых от пользователя процессов, которые выполняются по очереди с учетом установленных в системе приоритетов. Поэтому не стоит ожидать большой точности выдерживания интервалов времени менее 100 мс.

Для кратковременной остановки перебора столбцов используйте кнопку "Пауза". Повторное нажатие на нее продолжит перебор с места остановки. Кнопка "Стоп" полностью прекращает перебор столбцов таблицы. Если в процессе обмена информацией между компьютером и устройством произойдет сбой либо устройство будет отключено от разъема USB компьютера, программа сообщит об ошибке, выведя в строке состояния соответствующее сообщение.

Источник: Радио №2, 2011 г.

Не только любой программист, но и всякий достаточно опытный пользователь знает, что на компьютер можно переложить множество рутинной работы или, например, заставить его сделать что-то за вас, когда вы в отпуске. Так, компьютер вполне справится с односложными ответами на письма по электронной почте (дескать, письмо получил, подробно отвечу позже). А может ли компьютер, например, накормить вашего кота? Полить ваши цветы? В конце концов, просто каждый вечер включать и выключать свет в вашей квартире, чтобы создать впечатление, что вы дома?

В голливудских фильмах мы часто видим домашнюю автоматизацию такого рода, которая обычно прилагается к герою фильма — учёному или изобретателю, как правило, слегка сумасшедшему, вроде Дока Брауна из «Назад в будущее». Ходят легенды о фидошниках, привязывавших электрические вилки к печатающим головкам матричных принтеров, чтобы можно было выключить свой компьютер дистанционно. Для нажатия на треклятую кнопку использовали даже выдвигающийся лоток CD-привода. Но можно ли сделать это как-то более, скажем так, штатно ? Разумеется, существует множество решений промышленного класса для такого рода задач. Компьютеры управляют станками, подъемными кранами, целыми электростанциями, и это, в принципе, никого не удивляет. Более того, с включением и выключением света в комнате компьютеры тоже справляются, это даже получило своё название — «умный дом» , проблема лишь в том, что промышленные компьютеры не продаются в магазинах, а там, где продаются, стоят очень дорого, ну а компоненты «умного дома» — это обычно специализированные компьютеры, не предполагающие перепрограммирование со стороны конечного пользователя. Попросту говоря, они делают то, что предусмотрел производитель, но это не всегда именно то, чего хотелось бы вам.

Наши устройства призваны заполнить нишу, которую почему-то в упор не замечают производители компьютерной периферии: дать возможность пользователю обычного домашнего компьютера управлять с его помощью чем-то более материальным, нежели письма по электронной почте. Если говорить точнее, с использованием наших устройств вы сможете заставить свой компьютер управлять любыми устройствами, в которых течёт электрический ток. Все устройства, предлагаемые нами в настоящий момент, подключаются к компьютеру через порт USB (в некоторых случаях можно также использовать классический COM-порт, но где его нынче взять). Большинство моделей наших устройств имеют встроенные электромагнитные реле ; предельная коммутируемая мощность этих реле невелика, всего 300 Вт, но этого вполне достаточно для управления настольной лампой или вентилятором, для включения и выключения активного сетевого оборудования (роутеров, свичей, точек доступа и прочего в таком духе), а также и для большинства не слишком навороченных компьютеров. Если требуется бОльшая мощность нагрузки, необходимо использовать внешние реле, например, любые силовые реле с напряжением питания 12 или 24 В, которые вы можете также заказать у нас или подобрать самостоятельно; мощности большинства доступных на рынке реле вполне хватит для управления отопительными приборами, чайниками, насосами и другими мощными потребителями электричества. Некоторые из наших устройств исходно расчитаны на подключение таких реле, к другим внешние реле можно подключить через цепи, управляемые встроенными реле.

Кроме управления электрической нагрузкой, наши устройства умеют реагировать на внешние «раздражители»— входные линии (сигнальные цепи) , в роли которых выступают обыкновенные электрические провода, которые могут быть замкнуты или разомкнуты. Об изменении статуса входной линии устройство оповещает управляющий компьютер, и, кроме того, может среагировать на такое изменение самостоятельно, включив или выключив те или иные управляемые цепи, что позволяет в некоторых случаях обойтись без управляющего компьютера (например, включать и выключать в комнате свет, когда управляющий компьютер не работает).

Естественно, со стороны компьютера требуется управляющее программное обеспечение. Для пользователей, имеющих навыки программирования, мы предлагаем (бесплатно) ряд программ в исходных текстах, включая библиотеки функций для обращения к нашим устройствам; если же самостоятельное написание программного обеспечения со стороны хоста в ваши планы не входит, мы можем предложить управляющие программы в виде статически собранных (то есть не требующих инсталляции ) исполняемых файлов для Linux и Windows. Поскольку наши устройства поддерживают стандарт HID, никакие драйверы для них не требуются — точнее, нужный драйвер в вашей системе уже есть. Отметим, что прошивки наших устройств также доступны в виде исходных текстов, и при помощи программатора (подходящий программатор мы, опять-таки, можем предложить приобрести у нас или подобрать самостоятельно) вы можете изменить поведение нашего устройства, адаптировав его под свои потребности. Как прошивки, так и хостовое программное обеспечение мы распространяем свободно на условиях лицензии GNU GPL v.3.

Сразу отметим, что ориентируемся мы в основном на любителей техники — людей, которые дружат как минимум с отвёрткой (хотя без паяльника вы вполне сможете обойтись; всё, что надо, мы уже спаяли). Впрочем, ограниченным тиражом мы выпускаем устройство, для использования которого не потребуется даже отвёртки — оно представляет собой удлинитель с пятью розетками и встроенным устройством UNC, позволяющим управлять четырьмя розетками из пяти (последняя розетка всегда включена; её можно использовать, например, для питания управляющего компьютера). Наиболее очевидное применение этого варианта устройства — управление всем, что стоит вокруг вашего компьютерного стола: например, вы можете комбинацией клавиш на клавиатуре заставить зажечься или погаснуть свою настольную лампу, включить и выключить вентилятор, колонки, модем и всё прочее, что оказалось в радиусе длины шнура питания от вашего компьютера и имеет мощность питания, не превосходящую 300 Вт. Такое устройство, однако, представляет собой скорее игрушку, нежели что-то иное; оно идеально подходит в качестве оригинального подарка для техногика, но в полной мере возможности наших устройств раскрываются при самостоятельном монтаже управляемых цепей (напомним, для этого потребуется только отвёртка, ну и нож для зачистки проводов). Здесь ваши возможности практически ограничены только вашей фантазией. Наше устройство может быть включено вместо выключателя света в комнате, оно может управлять освещением и вентиляцией аквариума, электромагнитный дверной замок (точнее, только сам электромагнит от него, без дорогостоящего управляющего модуля) позволит заставить ваш компьютер поработать швейцаром, шаговый мотор откроет и закроет форточку, а электромагнитный водяной клапан от стиральной машины позволит автоматизировать полив комнатных цветов (здесь мы надеемся на ваш здравый смысл: компьютеры иногда ломаются, следует предусмотреть защиту от потопа на случай, если ваша система будет работать не так, как вы ожидали — например, разумно было бы брать воду для полива не из водопровода, а из ёмкости, имеющей ограниченный объём).

Ключевые слова/keywords: бюджетный умный дом, умный дом своими руками, компьютерное управление электропитанием, компьютерное управление электричеством, домашняя автоматизация, включение питания по USB, компьютерное управление светом в комнате, управление освещением, контроллер света, управление светом по USB

Устройство компьютерного управления
различными приборами, схема которого показана на рис. 1, функцио­нально подобно
описанному в , но подключается к USB-порту компьюте­ра, который (в отличие
от СОМ-порта) сегодня есть в каждом из них. Единственная мик­росхема устройства
- распространенный мик­роконтроллер ATmega8. Он необходим для орга­низации
связи по шине USB. Хотя в нем и отсут­ствует специализирован­ный аппаратный
модуль, эта функция выполняется программно. Резистор R1, подклю­ченный между
положи­тельным выводом источ­ника питания и линией D-шины USB, переводит ее в низкоскоростной
режим LS со скоростью обмена 1,5 Мбит/с, что и позво­ляет расшифровывать по­сылки
компьютера про­граммным способом. Ре­зисторы R4 и R5 устра­няют переходные
процес­сы, возникающие при об­мене информацией, что увеличивает стабильность работы.
Конденсатор С1 блокирует импульсные по­мехи в цепи питания, что также улучшает
стабиль­ность работы устройства. Диоды VD1 и VD2 служат для понижения напряже­ния
питания микроконт­роллера приблизительно до 3,6 В - это требуется для
согласования уровней с шиной USB. Сигналы управления приборами формируются на
выходах РВ0-РВ5 и РС0, РС1 микроконтроллера. Высокий логический уровень -
напряжение око­ло 3,4 В. Напряжение низкого уровня близко к нулю. К выходам
можно под­ключать приборы, потребляющие ток не более 10 мА (от каждого выхода).
Если требуются большие значения тока или напряжения, то следует использовать узлы
согласования, показанные в на рис. 5 и 6.

Устройство собрано на макетной плате,
печатная не разрабатывалась. Применены резисторы МЛТ, конденса­торы С2 и С3 -
керамические высоко­частотные, С1 - К50-35 или аналогич­ный импортный. Диоды
кремниевые с падением напряжения на переходе около 0,7 В. Программа для микро­контроллера
разработана в среде Bascom-AVR версии 1.12.0.0. Для работы с шиной USB
использована библиотека swusb.LBX, которая выполняет программное декодирование сигналов
USB в режиме реаль­ного времени. Полученный в результате компиляции код программы
из файла с расши­рением HEX следует загрузить во FLASH-память микроконт­роллера.
Для этого был ис­пользован программатор совместно со встроенной в Bascom-AVR
утилитой. Состоя­ние разрядов конфигурации микроконтроллера должно со­ответствовать
показанному на рис. 2. При первом подключении устройства к компьютеру опе­рационная
система обнаружит новое USB HID совместимое устройство с именем
“uniUSB” и установит необходимые драйверы. Через несколько се­кунд
устройство настроено и готово к использованию.

Для работы с ним была создана программа
UniUSB. Она пред­ставлена в двух вариантах: для 32-разрядных (х86) и 64-раз­рядных
(х64) операционных систем семейства Windows. Работа 32-разрядной версии проверена
в операционных системах Windows 98, Windows ХР, Windows 7, а 64-разрядной -
только в Windows ХР х64. Программа UniUSB написана на языке PureBasic (версия
4.31) с исполь­зованием библиотеки пользовательс­ких функций HID_lib,
поддерживающей работу с USB HID устройствами. Внеш­ний вид окна программы
показан на рис. 3. В одной папке с ее исполняемым файлом должен находиться
файл, называющийся UniUSB_Код.txt или UniCOM_Код.txt. Последний вариант необходим
для совместимости с про­граммой UniCOM, предложенной в . В этом файле
хранится сценарий управ­ления внешними приборами. При запуске программы данные
из файла загружаются в таблицу, расположенную в главном окне, а при завершении
рабо­ты сохраняются в файле. Щелчок левой кнопкой мыши по ячейкам таблицы поз­воляет
изменять их состояние: 1 - высокий логический уровень, 0 или пусто - низкий
логический уровень. Для добавления или удаления столбца таблицы нужно по ней
щелкнуть правой кнопкой мыши и в появившемся меню выбрать требуемое действие.

При подключении устройства к USB-порту
программа обнаружит его и активирует кнопку, расположенную в верхней части
окна на панели инстру­ментов. Нажатием на эту кнопку запус­кают процесс
перебора столбцов таб­лицы и установки указанных в них со­стояний выходов. Для
большей нагляд­ности слева от таблицы подсвечивают­ся номера выходов, на
которых в дан­ный момент установлен высокий логи­ческий уровень. Скорость
перебора (время в миллисекундах между перехо­дами от столбца к столбцу) задают
в поле “Скорость, мс”.

Учтите, операционная система Windows
- многозадачная! Это означает, что процессорное время делится между множеством
иногда скрытых от пользователя процессов, которые вы­полняются по очереди с
учетом уста­новленных в системе приоритетов. По­этому не стоит ожидать большой
точно­сти выдерживания интервалов времени менее 100 мс. Для кратковременной
остановки пе­ребора столбцов используйте кнопку Повторное нажатие на нее
продолжит перебор с места остановки. Кнопка полностью прекращает перебор столб­цов
таблицы. Если в процессе обмена информацией между компьютером и устройством
произойдет сбой либо уст­ройство будет отключено от разъема USB компьютера,
программа сообщит об ошибке, выведя в строке состояния соответствующее
сообщение.

ЛИТЕРАТУРА

1. Носов Т. Управление приборами
через СОМ-порт компьютера. - Радио, 2007, № 11,0.61,62.

2. Рыжков А. US-программатор
микро­контроллеров AVR и AT89S, совместимый с AVR910. - Радио, 2008, № 7, с.
28, 29.

От редакции . Программы для микро­контроллера и компьютера находятся
на нашем FTP-сервере по адресу ftp:// ftp.radio.ru/pub/2011/02/uniUSB.zip

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!