Re: Управление рулевыми кнопками при помощи Carduino.
Сегодня плотно разбирался с устройством...
ЧУДЕСА!!!
Вдруг всё заработало и прошивка стала выдавать коды и сериал монитор их правильно показывать.
Похоже таки ардуина попалась капризная и не каждая попытка ее прошить завершается успешно. Только так могу объяснить эти чудеса с неработавшими скетчами и вдруг заработавшими...
Единственно запускал гипертерминал. Может он дал пенделя операционке и она стала работать с портом... не знаю.
Теперь о грустном. Не наботает скрипт для автохоткея.
Если запускаю его из отдельной директории в которой только он и commg.dll, то просто ничего не происходит. Запускается и ничего не видит. А если кладу оба файла в директорию с автоноткеем, то он повисает и закрыть можно только из диспетчера задач.
Предположение - не работает связь с ком-портом. Либо надо длл-ку куда-то класть в другое место либо она сама глючная либо ошибка в скетче.
Re: Управление рулевыми кнопками при помощи Carduino.
А прошивка из шапки заработала?
Re: Управление рулевыми кнопками при помощи Carduino.
Я побоялся перепрошивать...
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Tvi.Dubna
Предположение - не работает связь с ком-портом. Либо надо длл-ку куда-то класть в другое место либо она сама глючная либо ошибка в скетче.
dll достаточно, чтобы лежала там где скрипт. Скрипт по умолчанию работает с com8, к сожалению обработку ошибок при некорректном подключении к порту я не делал - там не все так тривиально, функция инициализации порта не всегда корректно работает.
Но, скрипт и прошивка рабочие :)
Re: Управление рулевыми кнопками при помощи Carduino.
Так может я на это "некорректно" и попал...
и кстати, пожалуйста объясните логику этого цикла
Loop ; Ждем нажатия кнопки на руле
{
s := DllCall("commg.dll\GetByte","Cdecl str")
If s=255
{
; d := DllCall("commg.dll\GetByte","Cdecl str")
; d1 := DllCall("commg.dll\GetByte","Cdecl str")
; SteeringKey := d1*255+d
SteeringKey := DllCall("commg.dll\GetByte")
Break
}
почему мы берем байт, а не число которое выдает скетч???
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Tvi.Dubna
почему мы берем байт, а не число которое выдает скетч???
Потому что другой функции в dll нету :) А вообще, по сути скетч выдает именно байт, от 1 до 5.
И вообще, понятие "число" несколько некорректно. Это может быть как реальное значение (chr(1)), а может быть код кнопки 1 (chr(49)). Разные интерпретаторы могут по разному понимать и пихать эту инфу в порт.
Loop ; Ждем нажатия кнопки на руле
{
s := DllCall("commg.dll\GetByte","Cdecl str") ; Ждем "стартовый" байт, он должен быть chr(255)
If s=255
{
SteeringKey := DllCall("commg.dll\GetByte") ; читаем второй байт, в нем должен быть код кнопки (Chr(1) - Chr(5))
Break
}
Re: Управление рулевыми кнопками при помощи Carduino.
Почитал соседнюю тему.... Хм...
У меня кардуина подключена через USB хаб с доп. питанием от компа.
Может всё дело в этом:confused:
Разбирать панель лениво... а похоже придется!
Re: Управление рулевыми кнопками при помощи Carduino.
По-моему - пофиг как подключена. Может только влиять на значения кнопок (+-сколько-то)...
Re: Управление рулевыми кнопками при помощи Carduino.
Tvi.Dubna подскажите пожалуйста как вы запитали Arduino от внешнего источника.
Спасибо.
Re: Управление рулевыми кнопками при помощи Carduino.
хаб у него запитан от внешнего источника