Интеграция машинки и компа

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
PICmaker
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Ср дек 12, 2007 21:46:06
Откуда: Георгиевск

Интеграция машинки и компа

Сообщение PICmaker »

На форуме обсуждался управления китайской р/у машинкой через комп. Объясняю дело. В дискретных системах р/у применяется ам и чм модуляция звуковым сигналом. Пульт выдает рч с одним из сигналов управления. Далее этот сигнал рсшифровывается в приемнике с помощью СЭР и логика включает нужный мотор. Нам достаточно прикруттить готовый пульт от готовой машинки к компу. В пульте имеютя контакты и перемычки. Нажимаем рычажки замыкаем кнопки.
Чтобы автоматизировать процесс прикручиваем к кнопкам ключи микросхемы К561КТ3, а управляющие входы подключаем к LPT или COM. Остается написать программу, которая будет подавать лог.1 на ножку порта при нажатии нужных 4-ех кнопок на клавиатуре, а в идеале с помошью выполнения логических последовательностей вроде напрво-налево-вперед -назад. Помогите с программой.
Нет повести печальнее на свете чем повесть о заклинившем ресете
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

Помогите с программой
Я могу попробовать помочь, но нужно больше инфы о проге.
Какие конкретно кнопки или группы одновременно нажатых кнопок клавы будут участвовать в управлении (наверное кнопки со стрелками)?
Количество этих кнопок?
Какой желательно использовать порт COM или LPT?
Сколько выводов порта нужно задейстровать?
У проги должно быть окно или нет? Если окно есть, то клава должна опрашиватся когда оно активно или постоянно в независимости от активности окна? Какой внешний вид должен быть у окна?


идеале с помошью выполнения логических последовательностей вроде напрво-налево-вперед -назад.
Здесь подробнее.
pro_grammer
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср ноя 26, 2008 11:45:19

Сообщение pro_grammer »

Я думаю бессмысленно просто повторить на клавиатуре кнопки пульта управления. Видимо главная мысль у автора была научить машинку выполнять последовательность действий в автоматическом режиме - этакий домашний "станок с ЧПУ". Т.о. программа должна содержать окно, где будет осуществляться выбор нужных файлов с программами для игрушки. Возможно в программе будет содержаться текстовый редактор для оперативной правки или даже написания этих программ. Сами программы - простой текстовый файл с набором команд. Команды простейшие - Лево, право, вперёд, назад, стоп и время задержки включения следующей команды.
Возможно последовательное выполнение программ из имеющегося набора.
Тут даже отпадает необходимость управления машиной непосредственно с клавиатуры - просто пишем в окне программы команды ( и не обязательно слова целиком, а к примеру нажал клавишу "лево", а редактор написал слово "лево", система "горячих" клавишь ), потом нажимаем в программе кнопку "Пуск" - и машина выполняет эти команды.

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

Вобщем вот такое моё видение этой программы. Возможно я ошибаюсь.
Аватара пользователя
PICmaker
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Ср дек 12, 2007 21:46:06
Откуда: Георгиевск

Сообщение PICmaker »

Правильно вы все поняли. Микросхемы дешифратора никакой ненужно. Надо родной (подходящий) пульт и машинка к пульту.
В пульте частота модуляции РЧ меняется замыканием на массу одной из RC-цепей, подключенных на микросхему-кодер.(при нажатии двух кнопок получаем среднюю частоту, которую машинка тоже поймет) Требуется включить между массой и контактом RCцепи ключик--любой на 10мА тока и напр. 4-6V, например четыре КТ315 или ключи м/с К561КТ3. Управляющие входы(для м/с) или базы(для транзистора)
подключают к четырем выходам ПК(например выходы СОМ или LPT).
От компьютера и программы требуется подавать на эти штыри лог.1. Одновременно бывают включены только два ключа.(при трех нажатых кнопках на пульте машинка не едет) Программа может иметь любой вид(WIN;DOS) только пусть работает на ос Win98\2000\XP. В её меню поле для введения команд Вперед,назад,влево,вправо,веред-влево, вперед-вправо, назад-влево,назад-вправо, стоп. Команд всего 9. Кодируютя они следующими состояниями ключей: 1000,0100,0010,0001,1100,0011,0000. Учитывая, что скорость машинки не меняется, задавая время удержания состояния порта можно задавать расстояние(приблизительно). то есть если мы заносим в програму данные вроде вn нn лn пn впn нлn пузаn то машинка будет ехать в указанном направлении n секунд. В тестовом поле (подобному маленькому NOTEPAD) вводим команды Жмем кномку пуск(или мышью или с клавиатуры как нравится) и программа дает на выходы порта лог еденицы, которые держатся там нужное время, Ну и ручное управление как в играх(стрелочки). Какаой порт нужен решать вам, поскольку я в устройстве COM и LPT разбираюсь мало. От порта надо всего-то четыре независимых штырька, на которых программа будет выводить последовательности лог.1( мне нравятся оба разъема- один маленький, в другом дырочек больше, ну наверное и функций) Ну а сымый кайф будет , если программа будет сохранять коды в файл типа txt, и потом читать такие готовые команды для машинки.

AND NOW BY RUSSIAN!:

Программа работает под ОС Win98/2000/XP(лучше win окно)
использует любой 1 порт из COM или LPT, ( как у вас получится написать прогу)надо от порта четыре независимые ножки
выдает состояния ножек порта:
0000(стоп),1000(вперед),0100(назад),0010(направо),0001(налево)1010(вперед-вправо),1001(вперед-влево),0110(назад-направо),0101(назад-налево) Каждое из состояний удерживается сколько надо, время задается программой.
Управляется программа клавиатурой и частично мышью (80% клавиатура). Имеется тектовое поле, с возможностью писания и стирания символов(типа маленького NOTEPAD). В него вводятся команды ввиде сокращений, типа v1 n3 p5.2 l1.5 vl1 vp4 np3 nl1 (или как вам понравится. Число в комадде указывает на срок ее действия.(время, пока на ножках порта присутствует некое состояние) При необходимости (из-за специфики програмирования и ваших возможностей в нем) время можно задавать в миллисекундах. Также нужна команда пауза( например pp10), где машинка будет простаивать нужное время- в примере 10 секунд. Неправильно набранные команды программой опускаются. Максимальная длительность команды--60секунд, иначе машинка по ошибке пользователя, набиравшего команды уйдет за пределы видимости и связи с пультом. Команда с неверно указаной длительностью также пропускается. После ввода команд нажимается (мышью или с клавиатуры) кнопка "пуск" и программа подает сигналы пульту через порт. Есть и кнопка "стоп!" при нажатии которой выполнение команд прекращается и машинка стоит. Команды должны сохраняться в txt или любой другой понятный проге файл. То есть надо еще кнопки "сохранить" и "открыть" с мини проводниками, для выбора пути сохранения и поиска файлов кофигурации. Нужны также четыре кнопки ( hotkeys на клавиатуре) для ручного управления-- нажатыми одновременно бывают только две кнопки, кроме комбинации вперед-назад--так-то машинка не едет!. Плюс раскрывающися список для выбора номера порта, на котором висит "железо" Последнее беру на себя! От вас только программа. :shock:
Нет повести печальнее на свете чем повесть о заклинившем ресете
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

В принципе это реально и можно за пару часов первый вариант сделать.
Прога будет под WinXP (может и в других Осях работать будет, но у меня только XP установлена). А у окна должен быть XP стиль или обычный? Спрашиваю потому что стиль задаётся в опциях проекта после компиляции изменить его нельзя!
Порт LPT, поскольку у COM есть только 3 линии вывода, а нужно 4.
Сохранение в формате TXT это не проблема.

Писать прогу буду в среде PureBasic


Плюс раскрывающися список для выбора номера порта, на котором висит "железо" Последнее беру на себя! От вас только программа
Не, ну как это?
Ведь адреса (именно адреса, а не имена LPT портов) будут зашиты в программе. Правда эти адреса стандартны и определяются для встроеных портов не виндой, а BIOS.
Чаще всего встречаются такие адреса 378H (LPT1), 278H (LPT2).
pro_grammer
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср ноя 26, 2008 11:45:19

Сообщение pro_grammer »

Набросал тестовую программу. Управление по LPT.
В архиве лежит сама программа, схема распиновки LPT, необходимая библиотека DLL для управления портом, которая должна лежать в папке с программой.

Краткое описание:

Номер порта выбирает пользователь. По умолчанию LPT1.
Кликаем мышкой на клавиши управления, на соответствующих выходах порта появляется лог.1. ( строго в соответствии с рекомендациями постом выше) Процесс можно контролировать по изображениям чекбоксов - их состояние повторяет состояния порта. Должно работать под Win 98\ХР.
Пока реализовано только ручное управление. Если заработает в ручном режиме, то могу дописать и работу по программе.
Остальные функции реализую, если будет работать - так как сам проверить не имею возможности.

http://adgjm.fatal.ru/test.zip

P.S. Вложения на форум не работают :(
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

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

При первом запуске проги может появится сообщение что не удалось установить драйвер (он внедрён в исполняемый файл) . Просто перезапустите программу. При следующих запусках такой ошибки уже не будет.

Данные будут на контактах 2, 3, 4, 5 выбраного LPT порта

PS.
Действительно есть проблемы со вложениями.

http://ifolder.ru/9293196
Зеркало http://narod.ru/disk/4050913000/TestDU.rar.html
Аватара пользователя
PICmaker
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Ср дек 12, 2007 21:46:06
Откуда: Георгиевск

Сообщение PICmaker »

Спасибо все получил. таперь прилеплю К561КТ3 к компьютеру, если что в программе Programmer'a выводы используютя такие же
(18-25=GND; 2,3,4,5-DATA)?
Нет повести печальнее на свете чем повесть о заклинившем ресете
pro_grammer
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср ноя 26, 2008 11:45:19

Сообщение pro_grammer »

PICmaker писал(а):Спасибо все получил. таперь прилеплю К561КТ3 к компьютеру, если что в программе Programmer'a выводы используютя такие же
(18-25=GND; 2,3,4,5-DATA)?


Да, там же схема есть в архиве.
Аватара пользователя
PICmaker
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Ср дек 12, 2007 21:46:06
Откуда: Георгиевск

Сообщение PICmaker »

Прогрраммы работают шикарно!
Только:
1 В битве клава-мышь побеждает клава,
с нее управлять машиной легче(стрелочки)
2 Кнопки должны удерживать состояние только пока они нажаты
3 Можно создать более красивую систему индикации, например кнопочки(в окне) со стрелками, только кнопки меняют свой цвет; и галочки LPT ножек тоже типа красными кружочками
То есть скрестить прогу 1 с прогой 2
Предполагаемые сокращения для командного файла
v(a) - вперед на а секунд
n(a) - назад на а секунд
p(a) - вправо
l(a) - влево
vp(a) - вперед направо
vl(a) - вперед налево
np(a) - назад направо
nl(a) - назад налево
(каждая команда вводится через пробел)
чтобы не писать всю эту бузу много-много раз можно к кнопкам в окне приписать функцию создания командного файла. При нажатии кнопки в файл записывается соответствуящяя команда с длительностью, задаваемой в настройках программы
( надо окно настроек в меню "файл") Для включения-отключения режима "програмирования" надо предусмотреть кнопку с индикацией в главном окне программы.
Нет повести печальнее на свете чем повесть о заклинившем ресете
pro_grammer
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Ср ноя 26, 2008 11:45:19

Сообщение pro_grammer »

Мне вдруг подумалось, а зачем нужны отдельно команды для
программы
p(a) - вправо
l(a) - влево

Ведь если машина стоит, то это бессмысленно, а если двигается, то есть команды

vp(a) - вперед направо
vl(a) - вперед налево и т.п. назад.

т.о. можно сократить набор команд.
Аватара пользователя
PICmaker
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Ср дек 12, 2007 21:46:06
Откуда: Георгиевск

Сообщение PICmaker »

Правильно блин!
команд надобно всего 6 и одна -- пауза, например ps(a)
И то нужна она только при написании командного файла, на ручном управлении если кнопки не нажаты-- это и есть пауза.
В принципе эти команды можно оставить. При их выполнении машинка будет весело дергать передними колесами из стороны в сторону и сажать батареку впустую :)) На обычной китайской машинке есть же такая функция, пусть и на LPT машинке будет :shock:
Нет повести печальнее на свете чем повесть о заклинившем ресете
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

Прогу уже почти закончил.
Сейчас она может передавать команды с кнопок или набраные в текстовом редакторе (загруженые из файла)

TestDU_1.rar
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

Ну вот, кажется закончил прогу. :)

Она работает в ручном (с помошью кнопок со стрелками) или в автоматическом режиме (данные из файла). Режим выбирается в одноимённом меню.
Если отмечен пункт меню Запись нажатых кнопок в файл, то при нажании кнопок со стрелками, команды будут помещатся в текстовый редактор, потом останется только сохранить данные.
Список команд был выше приведён.
Разделитетем команд служит пробел.
Если при интерплетации команд будет найдена ошибка, то соответствующая команда проигнорируется.
Для поиска ошибок нужно выбрать пункт проверить на наличие ошибок в контекстном меню редактора или меню "Правка".


Вот программа в месте и исходником на языке PureBasic
Вложения
TestDU_2.rar
(88.63 КБ) 576 скачиваний
alexval2006
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб мар 10, 2007 20:05:39
Откуда: валуйки
Контактная информация:

Сообщение alexval2006 »

А нельзале библиотеку LibEditorPlus а то я нашол в нете все кроме нее был бы признателен и коментарий небольшой для чего она судя по названию Редактор плюс редактор чего текстовый редактор использованый в програме для написания програмы работы машинки ?
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

Библиотека в архиве.
Она нужна для работы с RTF редактором, который используется в программе.
Вложения
V0.4 Beta.rar
(95.15 КБ) 485 скачиваний
alexval2006
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб мар 10, 2007 20:05:39
Откуда: валуйки
Контактная информация:

Сообщение alexval2006 »

скачал две версии компилятора 4,10 и 4,20 в обоих ругается на эту строку что это означает проблемы с билиотекой ???
Result=ToolBarPlusCB(WindowID, Message, wParam, lParam, Result)
Аватара пользователя
PICmaker
Вымогатель припоя
Сообщения: 508
Зарегистрирован: Ср дек 12, 2007 21:46:06
Откуда: Георгиевск

Сообщение PICmaker »

Можно ли вынести меню "режим" в главное окно в виде переключателей radiobutton и спрятать пониже индикауию LPT, так чтобы было видно котам, а нормальным людям (простым пользователям, которым знать "акаконоработает?" ненужно)
И еще надо добавить кнопку с клавиатуры, которая разрешала бы начало записи команд в файл и при её повторном нажатии запись заканчивалась бы, а последняя пауза не записывалась в файл.
Забыли еще одно условие нормальной работы системы радиоуправления: после выполнеия любой команды из файла и после окончания всех команд машинка должна переводится в состояние покоя. Например я набираю в редакторе команду v(2)- машинка едет две секунды, но потом не останавливается, на выходе LPT 0000 состояния не получается. Лимит на время выполнения любой команды на движение (все кроме паузы и стопа) не больше времени выбираемого в настойках(добавте пожалуйста в настройки пункт "время команды")
Все остальное прога работает на 5++,
Нет повести печальнее на свете чем повесть о заклинившем ресете
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

скачал две версии компилятора 4,10 и 4,20 в обоих ругается на эту строку что это означает проблемы с билиотекой ???
Result=ToolBarPlusCB(WindowID, Message, wParam, lParam, Result)
Это значит что не установлена библиотека ToolbarPlus
Найти её можно здесь http://pbasic.spb.ru/phpBB2/viewtopic.php?t=380

Дальше.
Я компилировал в PB4.00, а у Вас PB4.10.
Это меняет дело!
Библиотеку Droopy качаем здесь (работает в PB4.10 и PB 4.20) http://www.purearea.net/pb/download/userlibs/Droopys_lib_1.31.9.zip
Библиотеку XP_Menu_Lib, предназначеную для создания офисного меню качаем здесь (работает в PB4.00 - PB 4.20) http://pbasic.spb.ru/phpBB2/viewtopic.php?t=596&start=0&postdays=0&postorder=asc&highlight=
Библиотеку IO_DLL_WRAPPER, для доступа к LPT порту (работает в PB4.00 - PB 4.20) качаем здесь http://pbasic.spb.ru/phpBB2/viewtopic.php?t=102&postdays=0&postorder=asc&start=60 (она имеет имя OI.dll_Lib)

Выложеная ранее библиотека V0.4 Beta.rar работает только в PB4.00 и PB 4.20, но не в PB4.10!
Поэтому заменяем её на эту библиотеку http://purebasic.myftp.org/?filename=files/406/RC2008/RLibPlus.zip
Если была установлена V0.4 Beta.rar, то от неё следует избавится, иначе компилятор ругатся на одноимённые функции будет.
Для этого удаляем файл LibEditorPlus в папке PureLibraries\UserLibraries и файл LibEditorPlus_Res.res в папке \Residents компилятора.

PS.
Устанавливаются библиотеки так:
В архиве с библиотекой дополнительных функций обычно есть папки PureLibraries, Residents и др.
В папке со средой PureBasic есть такие-же папки.
Для устаноки библиотеки нужно чтобы файлы были добавлены в эти папки.
Обычно достаточно извлечь соделжимое архива в C:\Program Files\PureBasic.


Да и ещё.
Лучше использовать PB4.10, он стабильнее работает.
alexval2006
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб мар 10, 2007 20:05:39
Откуда: валуйки
Контактная информация:

Сообщение alexval2006 »

И снова он ругается на меня такими словами
The following PureLibrary is missing: LibraryExtension
я так понял опять какойто библиотеки нехватает а другие примеры в роде работают например пример ЛПТ порта ругатся начинает при включении компиляции програмы что делать ?
Ответить

Вернуться в «Интеграция с ПК»