Модераторы: PILOT, ManiaK, Mazzi

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программирование USB 
V
    Опции темы
Helmet
Дата 16.6.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.2.2009
Где: Someone's hea d

Репутация: нет
Всего: 1



Добрый день. Даже не знаю как правильно описать возникшую проблему. Постараюсь =)
Необходимо каким-то образом программно отследить подачу напряжения на USB порт. ОС - Windows. Т.е. должна быть программа крутящаяся на винде, которая "слушает" USB порт, и как только на контакты пришло напряжение, произвести некое действие.
Подскажите пожалуйста, реально ли это? Какие есть варианты решения? Какие библиотеки могут помочь в этом?
Я очень далек от программирования на таком низком уровне и из предположений только есть мысль, что надо установить драйвер USB->COM и там уже что-то ловить. Спасибо заранее.
PM   Вверх
Mazzi
Дата 16.6.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Без аппаратной части не обойтись. Просто так подавать напряжение на USB порт нельзя, там должны быть информационные посылки.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
Helmet
Дата 16.6.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.2.2009
Где: Someone's hea d

Репутация: нет
Всего: 1



Mazzi, спасибо за ответ.
А аппаратная часть - это контроллер, да? А есть ли какие-нибудь типовые готовые решения для следующего: самая простейшая кнопка, при нажатии на нее замыкаются 2 контакта. При этом нужно послать какой-нибудь информационный сигнал по USB.
PM   Вверх
mr_smit
Дата 16.6.2009, 20:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Цитата

Необходимо каким-то образом программно отследить подачу напряжения на USB порт.


Мне кажется ты не понимаешь что пишешь.

Напряжение на USB разъёме есть всегда, даже при не подключенном устройстве. Возьми вольтметр и замерь, убедись (крайние контакты +/-). Там 5 вольт.

user posted image

Пиши конкретно что надо.

Цитата

...информационный сигнал...

 smile 

Тебе сюда как минимум.
Ну или сразу сюда.

Это сообщение отредактировал(а) mr_smit - 16.6.2009, 21:21
PM MAIL   Вверх
Helmet
Дата 17.6.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.2.2009
Где: Someone's hea d

Репутация: нет
Всего: 1



mr_smit, правильно, я же сразу сказал, что не разбираюсь в этом, а перелопачивать гору литературы нет времени :(
Задача по сути простая: послать некоторые данные в USB порт, хотя бы 1 байт, чтобы потом программа смогла среагировать на это событие. Желательно обойтись без контроллера. Ведь наверняка можно установить драйвер USB->COM и как то сэмулировать подачу напряжения на одну из ножек порта. Что то я совсем запутался =)

PM   Вверх
Mazzi
Дата 17.6.2009, 12:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Цитата(Helmet @ 16.6.2009,  18:34)
Mazzi, спасибо за ответ.
А аппаратная часть - это контроллер, да? А есть ли какие-нибудь типовые готовые решения для следующего: самая простейшая кнопка, при нажатии на нее замыкаются 2 контакта. При этом нужно послать какой-нибудь информационный сигнал по USB.

Простейшее решение для тебя это использовать микросхему CP2102, даташит на которую легко найти в интернете. Эта микросхема - преобразователь USB в UART. Затем подсоединяешь свою кнопку на её выводы RXD и TXD. Устанавливаешь драйвера, после чего у тебя появляется ещё один COM-порт. Затем в этот порт кидаешь байт, и если он через кнопку возвращается тебе назад, значит кнопка замкнута, если не возвращается, значит разомкнута.

Схема во вложении, только кнопку не нарисовал.

Удачи!

Присоединённый файл ( Кол-во скачиваний: 128 )
Присоединённый файл  USB_UART.GIF 8,91 Kb


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
mr_smit
Дата 17.6.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



http://www.platan.ru/cgi-bin/qwery_i.pl?code=CP2102
99 руб схемка Mazzi стоит.

Можешь ещё тут почитать:
http://my-avr.at.ua/publ/1-1-0-27

Но для схемы Mazzi нужно драйвера устанавливать, а можно то же самое (для твоего случая) сделать без драйверов. Микросхема которая прикидывается HID устройством и выполняет те же задачи. Только можно: к любому компу подключил - и сразу работай.

http://www.firmwarefactory.com/USB-232.aspx

P.S. Правда насчет цены не уверен, может и дороже стоить.

Это сообщение отредактировал(а) mr_smit - 17.6.2009, 12:30
PM MAIL   Вверх
cardinal
Дата 17.6.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(mr_smit @  17.6.2009,  10:22 Найти цитируемый пост)
P.S. Правда насчет цены не уверен, может и дороже стоить.

судя по ценам на Digikey USB-232 будет стоить около 250 рублей. Но вещь прикольная! smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
mr_smit
Дата 17.6.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



А вообще сейчас почитал про CP2102 классная вещь. Надо будет купить. И никаких тебе MAX232 не надо.

Кстати, Helmet, давай колись для чего тебе всё это нужно.

Это сообщение отредактировал(а) mr_smit - 17.6.2009, 13:06
PM MAIL   Вверх
cardinal
Дата 17.6.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



mr_smit, есть еще FT232...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Helmet
Дата 17.6.2009, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.2.2009
Где: Someone's hea d

Репутация: нет
Всего: 1



Ого, загрузили информацией  smile  Спасибо, буду разбираться, надеюсь больших трудностей не возникнет.

Цитата(mr_smit @  17.6.2009,  12:54 Найти цитируемый пост)
Кстати, Helmet, давай колись для чего тебе всё это нужно.

А хрен знает, на работе сказали "Для проекта нужно большую красную кнопку придумать чтоб жмякнул - и программа наша запустилась"
 smile 

Mazzimr_smitcardinal, еще раз спасибо!!!

Добавлено через 1 минуту и 1 секунду
Ребята с кол-вом постов больше 100, поставьте плюсы парням плиз от меня  smile 
PM   Вверх
mr_smit
Дата 18.6.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Цитата(cardinal @ 17.6.2009,  13:07)
mr_smit, есть еще FT232...

Он дороже. smile
PM MAIL   Вверх
mr_smit
Дата 18.6.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



А если без всяких драйверов, по принципу "Подключил и ЖМИ!", то тогда:

user posted image

Сегодня время если будет, попробую сделать, что то самому интересно стало. smile
PM MAIL   Вверх
Mazzi
Дата 18.6.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Я на ATMege8 не делал устройств для USB, но слышал отзывы, что работает очень плохо, через раз и к томуже обмен очень медленный.( это не относится к текущей теме кнопки )


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
cardinal
Дата 18.6.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Ну нельзя же программно решить эффективно то, что по сути должно решаться аппаратно. Тем более, что у USB 2.0 очень неплохие скорости обмена данными...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
mr_smit
Дата 18.6.2009, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Helmet, тебе повезло что я болею и мне нечем дома заняться. По нажатию кнопки запускается Блокнот. Можно любое другое приложение. Грубо, на картонке, но зато работает. Если применить SMD детали размер получится ооочень маленький.

user posted image

Вот снял видео, всё выглядит/работает. Залил на 2 файлообменника.

http://depositfiles.com/files/f3bn4o4ot
http://narod.ru/disk/10012316000/hid.rar.html

Только кнопку подключил не к РС0 (как изначально нарисовал), а к РВ1.

Это сообщение отредактировал(а) mr_smit - 18.6.2009, 22:57

Присоединённый файл ( Кол-во скачиваний: 201 )
Присоединённый файл  USB_HID_Delphi.rar 176,83 Kb
PM MAIL   Вверх
mr_smit
Дата 18.6.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Прошивка для контроллера:

Это сообщение отредактировал(а) mr_smit - 18.6.2009, 17:11

Присоединённый файл ( Кол-во скачиваний: 111 )
Присоединённый файл  firmware.rar 98,23 Kb
PM MAIL   Вверх
cardinal
Дата 18.6.2009, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



mr_smit, опиши пожалуйста в кратце принцип работы этого девайса.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
mr_smit
Дата 18.6.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Подключаем к ПК, устройство определилось как HID, установилось... и т.д. готово к работе. Далее устройство по запросу отсылает 0 или 1 в ПК в зависимости от состояния кнопки (0 или 1 на PINB.1). Потом просто раз в 100 мс (из Delphi) опрашивается контроллер на предмет нажатия кнопки. Уже в Delphi мы делаем то что нам надо, в данном случае открываем блокнот если пришла "единица". Может и криво, но я ставил целью результат. Работает. Доработать, что то улучшить всегда можно.

Можно таким же образом из МК температуру слать, данные АЦП и т.д., обрабатывать, строить графики и т.д.

P.S. Даже видео никто ни разу не посмотрел, а я старался.... для себя! smile

Это сообщение отредактировал(а) mr_smit - 18.6.2009, 22:49
PM MAIL   Вверх
cardinal
Дата 18.6.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(mr_smit @  18.6.2009,  20:45 Найти цитируемый пост)
P.S. Даже видео никто ни разу не посмотрел, а я старался.... для себя! smile

Потому что на рапиду надо заливать... smile Сейчас скачал с депозита и позыркал - прикольно smile 
Цитата(mr_smit @  18.6.2009,  20:45 Найти цитируемый пост)
Далее устройство по запросу отсылает 0 или 1 в ПК в зависимости от состояния кнопки (0 или 1 на PINB.1). Потом просто раз в 100 мс (из Delphi) опрашивается контроллер на предмет нажатия кнопки. Уже в Delphi мы делаем то что нам надо, в данном случае открываем блокнот если пришла "единица".

Ок, спасибо - принцип ясен. Я просто думал может там как-то хитро без отсылки данных сделано.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Helmet
Дата 20.6.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 27.2.2009
Где: Someone's hea d

Репутация: нет
Всего: 1



mr_smit, ничего себе, спасибо! Я даже не рассчитывал больше чем на разъяснение. Круто!
PM   Вверх
mr_smit
Дата 22.6.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Пришли календарик от лица фирмы  smile 
PM MAIL   Вверх
tyum
Дата 20.9.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.9.2009

Репутация: нет
Всего: нет



Проститите за может быть глупый вопрос, но я тока учусьsmile
Вот я хочу сделать так, чтобы данные с термометра отправлялись в пзу. А потом при подключении сего устройства к компу по ЮЗБ, передавало из пзу данные в какую-н. БД. 
Вопрос: я могу работать с этим устройством как hid?

PM MAIL   Вверх
Mazzi
Дата 21.9.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Цитата(tyum @ 20.9.2009,  14:28)
....Вопрос: я могу работать с этим устройством как hid?

Да, можешь.


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
mr_smit
Дата 3.10.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Например при подключении к компьютеру он (компьютер) отправляет условную команду что готов принять данные. Контроллер отправляет их. И опять же условная команда завершения передачи. И в программе хоста сообщение типа "данные получены, устройство можно отключить".

P.S. Хост - это компьютер
PM MAIL   Вверх
AlexART
Дата 2.11.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



mr_smit,  Посмотрел твой код firmware - подскажи, пожалуйста, как передавать компьютеру число, а не бит. Или можно просто один за другим передавать биты, а в хосте собирать из них число? 
PM MAIL   Вверх
mr_smit
Дата 3.11.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 1
Всего: 4



Да. Ну придумай протокол smile Например, если приняли два нулевых байта -> значит следующие 1-2 байта это число (целая и дробная часть например). И с ними работай дальше.

Либо вот пример: USB HID термометр http://www.radiokot.ru/circuit/digital/pcmod/16/ в конце статьи есть исходник и для МК и для Delphi.

P.S. Байт это собственно и есть число smile  0хFF -> 255 -> 11111111, 0хFFFF -> 65535 -> 1111111111111111

Я тут себе USB дисплей делал... посмотри, может будет интересно как с 2-х байтовыми числами работать

Это сообщение отредактировал(а) mr_smit - 3.11.2010, 10:36
PM MAIL   Вверх
AlexART
Дата 19.11.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 1.11.2010

Репутация: нет
Всего: нет



ОК, спасибо)
Вроде, разобрался. Пишу свой вариант HID-термометра. Когда доделаю, пришлю - вдруг кому-то понадобится...
PM MAIL   Вверх
JackA
Дата 29.11.2010, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.10.2010

Репутация: нет
Всего: нет



Цитата(mr_smit @  17.6.2009,  12:54 Найти цитируемый пост)
CP2102 классная вещь. Надо будет купить. И никаких тебе MAX232 не надо.

  А взять FT232 - и никаких тебе  CP2102  не надо...


PM MAIL   Вверх
xvr
Дата 29.11.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(JackA @  29.11.2010,  00:45 Найти цитируемый пост)
 А взять FT232 - и никаких тебе  CP2102  не надо...

Хрен редьки не слаще - практически идентичные чипы  smile 

PM MAIL   Вверх
darksilence
Дата 29.12.2010, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 26.11.2010

Репутация: нет
Всего: нет



Вопрос можно решить подключением кнопки в микрофонному входу звуковой карты. по схеме с подтяжкой на ноль. при нажатии на кнопку идет замыкание на +U. 
Звуковая карта пропускает только переменную составляющую. Пример работы в  Дельфе есть с микрофонным входом (типа осциллографа) можно замутить. будет дешевле всего. Хотя я больше поддерживаю проект USB-HID.
PM MAIL   Вверх
KoTeKoT
Дата 22.3.2011, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.12.2010

Репутация: нет
Всего: нет



У меня тут вопрос образовался... извините если не туда пишу...
вот есть:
Код

  LEDs:= 0;
  If CheckBox0.Checked then LEDs:= LEDs+1;
  If CheckBox1.Checked then LEDs:= LEDs+2;
  If CheckBox2.Checked then LEDs:= LEDs+4;
  If CheckBox3.Checked then LEDs:= LEDs+8;
  If CheckBox4.Checked then LEDs:= LEDs+16;
  If CheckBox5.Checked then LEDs:= LEDs+32;
  If CheckBox6.Checked then LEDs:= LEDs+64;
  If CheckBox7.Checked then LEDs:= LEDs+128;

а как сделать обратно? Мол получили допустим 6, значит это 01100000, ну и желательно что б это "01100000"куданить в переменную записывалось или в Edit.Text выводилось или CheckBox'ы заполнялись...

Это сообщение отредактировал(а) KoTeKoT - 22.3.2011, 19:46
PM MAIL   Вверх
UniBomb
Дата 23.3.2011, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(KoTeKoT @  22.3.2011,  19:43 Найти цитируемый пост)
получили допустим 6, значит это 01100000

Наоборот, это будет равно 00000110

Цитата(KoTeKoT @  22.3.2011,  19:43 Найти цитируемый пост)
ну и желательно что б это "01100000"куданить в переменную записывалось

И в чём проблема?
Код

somevariable := 6;


Цитата(KoTeKoT @  22.3.2011,  19:43 Найти цитируемый пост)
или в Edit.Text выводилось

Код

SomeEdit.Text := IntToStr(6);

Хотя наверное можно и без IntToStr, не знаю как там в делфях с неявным преобразованием.

Цитата(KoTeKoT @  22.3.2011,  19:43 Найти цитируемый пост)
или CheckBox'ы заполнялись

Код

if (LEDs and 1) <> 0 then CheckBox0.Checked := true; else CheckBox0.Checked := false;
if (LEDs and 2) <> 0 then CheckBox1.Checked := true; else CheckBox1.Checked := false;
if (LEDs and 4) <> 0 then CheckBox2.Checked := true; else CheckBox2.Checked := false;
if (LEDs and 8) <> 0 then CheckBox3.Checked := true; else CheckBox3.Checked := false;
if (LEDs and 16) <> 0 then CheckBox4.Checked := true; else CheckBox4.Checked := false;
if (LEDs and 32) <> 0 then CheckBox5.Checked := true; else CheckBox5.Checked := false;
if (LEDs and 64) <> 0 then CheckBox6.Checked := true; else CheckBox6.Checked := false;
if (LEDs and 128) <> 0 then CheckBox7.Checked := true; else CheckBox7.Checked := false;



--------------------
PM MAIL ICQ Skype   Вверх
KoTeKoT
Дата 23.3.2011, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.12.2010

Репутация: нет
Всего: нет



спасибо за ответ
Цитата

Наоборот, это будет равно 00000110

прошу прощения, именно так и будет... не доглядел
Цитата

Код

SomeEdit.Text := IntToStr(6);

Хотя наверное можно и без IntToStr, не знаю как там в делфях с неявным преобразованием.

так, да не так...  IntToStr(6)  в итоге в Edit.Text будет "6", а нужно именно "00000110", а без преобразования IntToStr ошибки вывалятся... 
С дальнейшим кодом (собственно с CheckBox'ами наиболее подходящий вариант для решения моей задачи)
Код

if (LEDs and 1) <> 0 then CheckBox0.Checked := true; else CheckBox0.Checked := false;

разбираюсь, попозжей отпишусь подошло иль нет ;)
PM MAIL   Вверх
UniBomb
Дата 23.3.2011, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(KoTeKoT @  23.3.2011,  18:45 Найти цитируемый пост)
нужно именно "00000110"

В делфи есть куча преобразовательных функций имеющий похожий вид. Например IntToStr, IntToHex, IntToBin, и наоборот. Вам будет полезно изучить их, найдя всю необходимую информацию в хелпе. Для преобразования в вид "00000110" надо воспользоваться функцией IntToBin.


--------------------
PM MAIL ICQ Skype   Вверх
KoTeKoT
  Дата 24.3.2011, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.12.2010

Репутация: нет
Всего: нет



Спасибо, за подсказку, но поскольку в Delphi отсутствует функция IntToBin , нашел ее реализацию. Мож кому понадобится:
Код

function IntToBin( Value: integer; Digits: integer ): string;
var
  i: integer;
begin
   Result := '';
   for i := 0 to Digits - 1 do
      Result := IntToStr( ( Value and ( 1 shl i ) shr i ) ) + Result;
end;

P.S. Вопрос снят 

Это сообщение отредактировал(а) KoTeKoT - 24.3.2011, 01:36
PM MAIL   Вверх
UniBomb
Дата 24.3.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(KoTeKoT @  24.3.2011,  01:35 Найти цитируемый пост)
в Delphi отсутствует функция IntToBin

Странно. В билдере мне иногда приходилось использовать эту функцию. А ведь в билдере почти всё из делфей и перекочёвывает  smile 


--------------------
PM MAIL ICQ Skype   Вверх
alexzzzz2
Дата 26.3.2016, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.3.2010

Репутация: нет
Всего: нет



файл исходников пишет вирус, еще вопрос, кто делал hid  примеры еще? стучите в скайп solarstation2 так как быстрее выйдет 
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.2392 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.