Сообщение от
DENth
Мдя, всё навороченнее и навороченнее. Как-то я все больше прихожу к мысли, что всё-таки сама идея использования манипулятора неправильная. Не по сути, а по идеологии. Использование "недокументированных" возможностей ПО, обработка протокола манипулятора силами ПЛК - это негативно влияет на время разработки, ее надежность, затраты на отладку.
Хотя несомненно, здорово, что реализовать собственными силами можно практически всё, что можно придумать. Но в моем случае правильнее было бы наверно использовать просто модульный ПК с операционкой и не париться. Надо подумать в общем.
Немного отвлекся от процесса, по этому ничего дальше не делал.
А отвлекся на "мышей" и курсоры.
О манипуляторе я думаю следующее, в зависимости от наличия свободных входов ПЛК:
-можно использовать манипулятор типа джойстика с двумя резисторами по осям X и Y, сигнал с резисторов на аналоговые входы ПЛК. Плюс кнопку(и) на дискретный вход(ы).
-можно использовать манипулятор только с кнопками, как в игровых приставках/консолях. Четыре кнопки вверх, вниз, вправо, влево и кнопка "огонь". Кнопки подключить к дискретным входам ПЛК.
- можно было бы использовать мышь для COM порта. 1200 бит/c, 7 битов данных, 1 стоп-бит
Протокол обмена не сложный. Мышь посылает пакет из трех байт
№
байта |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
1 |
х |
1 |
ЛКн |
Пкн |
X7 |
X6 |
Y7 |
Y6 |
2 |
х |
0 |
X5 |
X4 |
X3 |
X2 |
X1 |
X0 |
3 |
х |
0 |
Y5 |
Y4 |
Y3 |
Y2 |
Y1 |
Y0 |
X7,X6,X5,X4,X3,X2,X1,X0 -Приращение по X
Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 -Приращение по Y.
Бит D6=1 является маркером начала посылки.
Мышь передает приращение по координатам, а не абсолютное положение.
Единственная загвоздка - питание для мыши берется от линий RS232, а порт ПЛК этих линий не имеет3 TD Последовательные данные к мыши (только для питания)
2 RD Последовательные данные от мыши
7 RTS Положительное напряжение питания мыши
8 CTS ----------------
6 DSR --------------
5 Сигнальная земля
4 DTR Положительное напряжение питания мыши и ее сброс
Линии DTR-DSR и RTS-CTS НЕ должны быть замкнуты. Сброс мыши можно сделать установив напряжение на RTS отрицательным и затем положительным, длительность импульса не менее 100 мс.
Теперь еще хочу стандартные курсоры "выдернуть" из Windows, что бы сделать автоматически изменяющийся указатель
Например курсор попал на кнопку, указатель -рука с пальцем или нажали кнопку на элементе для которого нет действия с мышкой -указатель "нет действия".
Вот я не понял, о каких-таких недокументированных возможностях ПО идет речь?
А на счет идеологии я как раз сейчас думаю, что бы можно было унифицировать элементы экрана управляемые манипулятором. Например какие регистры управления должны быть, кроме тех, что для X, Y и кнопок, нужен ли регистр "обратной связи", в котором ПЛК получит, номер элемента экрана, на котором находится указатель. Ну и другие вопросы, например, как быть с окнами, они ведь всегда поверх других элементов, в том числе и курсор получается под окном, а не сверху.
Решить эту идеологию нужно уже на самом первом этапе, что бы затем не переделывать такие, управляемые дистанционно элементы экрана.
А сама реализация таких элементов - дело техники, вполне решаемая задача.
ЗЫ. Если с питанием мыши вопрос решить, то в дальнейшем можно было бы и в самой панели драйвер для мышки сделать и подключать ее прямо к панели, например через не используемый, как правило, порт Download.