Файл: Манипулятор с микроконтроллерным управлением.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.10.2023

Просмотров: 89

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
public
Form1
parent;
public
Form2
(
Form1
parent)
// Конструктор для инициализации компонентов формы и создания
обработчиков событий
{
InitializeComponent
();
this.parent = parent;
this.MouseMove +=
new
System.Windows.Forms.MouseEventHandler(
Form2_MouseMove
);
this.MouseDown +=
new
System.Windows.Forms.MouseEventHandler(
Form2_MouseDown
);
this.MouseUp +=
new
System.Windows.Forms.MouseEventHandler(
Form2_MouseUp
);
this.KeyDown +=
new
System.Windows.Forms.KeyEventHandler(
Form2_KeyDown
);
this.KeyUp +=
new
System.Windows.Forms.KeyEventHandler(
Form2_KeyUp
);
}
private
void
Form2_MouseMove
(
object
sender,
MouseEventArgs
e)
// Обработчик события
движения курсора. Возвращает курсор обратно в центр формы
{
int
min = center - (
45
-speed);
int
max = center + (
45
-speed);
int
x =
Cursor
.Position.X - this.Left -
3
;
int
y =
Cursor
.Position.Y - this.Top -
23
;
if
(x < min || x > max || y < min || y > max)
{
Cursor
.Position =
new
System.Drawing.
Point
(this.Left + center +
3
, this.Top + center +
23
);
}
if
(x < min) xCount--;
if
(x > max) xCount++;
if
(y < min) yCount++;
if
(y > max) yCount--;
}
private
void
Form2_MouseDown
(
object
sender,
MouseEventArgs
e)
// Обработчик события
нажатия на кнопки мыши
{
if
(e.Button ==
MouseButtons
.Left)
{
buttonData &=
0xfd
;
buttonData |=
0x01
;
}
if
(e.Button ==
MouseButtons
.Left && e.Clicks ==
2
)
{
buttonData &=
0xfe
;
buttonData |=
0x02
;
}
if
(e.Button ==
MouseButtons
.Middle)
{
buttonData |=
0x04
;
}
if
(e.Button ==
MouseButtons
.Middle && e.Clicks ==
2
)
{

60
buttonData |=
0x08
;
}
if
(e.Button ==
MouseButtons
.Right)
{
buttonData |=
0x10
;
r_label.Text =
"*"
;
}
if
(e.Button ==
MouseButtons
.Right && e.Clicks ==
2
)
{
buttonData |=
0x20
;
}
if
(e.Button ==
MouseButtons
.XButton1)
{
speed = --speed <
1
?
1
: speed;
label11.Text =
Convert
.
ToString
(speed);
}
if
(e.Button ==
MouseButtons
.XButton2)
{
speed = ++speed >
50
?
50
: speed;
label11.Text =
Convert
.
ToString
(speed);
}
}
private
void
Form2_MouseUp
(
object
sender,
MouseEventArgs
e)
// Обработчик события
отжатия на кнопки мыши
{
if
(e.Button ==
MouseButtons
.Left)
{
buttonData &=
0xfc
;
}
if
(e.Button ==
MouseButtons
.Middle)
{
buttonData &=
0xf3
;
}
if
(e.Button ==
MouseButtons
.Right)
{
buttonData &=
0xcf
;
r_label.Text =
" "
;
}
}
private
void
Form2_Load
(
object
sender,
EventArgs
e)
// Установка курсора в нужную точку на
форме
{
Cursor
.Clip =
new
Rectangle
(this.Location.X +
33
, this.Location.Y +
53
,
130
,
130
);
}
private
void
exit_bt_Click
(
object
sender,
EventArgs
e)
// (Обработчик события нажатия на
кнопку Esc)
{
Form1
.controlPanel = null;
Cursor
.Clip =
Rectangle
.Empty;


61
this.parent.
btClose_Click
(null, null);
this.
Close
();
}
public
void
set_data
()
{
switch
(
Form1
.rxAdd)
{
case
0x01
: xCountMax =
Form1
.rxData;
break
;
case
0x02
: xCountMin =
Form1
.rxData;
break
;
case
0x03
: yCountMax =
Form1
.rxData;
break
;
case
0x04
: yCountMin =
Form1
.rxData;
break
;
case
0x11
: xCount =
Form1
.rxData;
break
;
case
0x12
: yCount =
Form1
.rxData;
break
;
default
:
break
;
}
}
private
void
sendData
()
// В этом методе происходит формирование сообщений для записи в
Serial порт
{
this.parent.
sendData
(
"ff"
);
this.parent.
sendData
(
"aa"
);
this.parent.
sendData
(((xCount >>
8
) &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
((xCount &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
(((yCount >>
8
) &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
((yCount &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
(((zCount >>
8
) &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
((zCount &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
(((rCount >>
8
) &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
((rCount &
0x00FF
).
ToString
(
"x"
));
this.parent.
sendData
(buttonData.
ToString
(
"x"
));
}
private
void
timer1_Tick
(
object
sender,
EventArgs
e)
// Обработчик события такта таймера
{
try
{
if
(xCount_lst != xCount || yCount_lst != yCount || zCount_lst != zCount || rCount_lst != rCount
|| ( buttonData &
0xff
) !=
0x00
)
{
xCount = xCount < xCountMin ? xCountMin : xCount;
xCount = xCount > xCountMax ? xCountMax : xCount;
yCount = yCount < yCountMin ? yCountMin : yCount;
yCount = yCount > yCountMax ? yCountMax : yCount;
zCount = zCount < zCountMin ? zCountMin : zCount;
zCount = zCount > zCountMax ? zCountMax : zCount;
rCount = rCount < rCountMin ? rCountMin : rCount;
rCount = rCount > rCountMax ? rCountMax : rCount;
label4.Text =
Convert
.
ToString
(xCount);
label5.Text =
Convert
.
ToString
(yCount);
label1.Text =
Convert
.
ToString
(zCount);


62
label20.Text =
Convert
.
ToString
(rCount);
sendData
();
xCount_lst = xCount;
yCount_lst = yCount;
zCount_lst = zCount;
rCount_lst = rCount;
buttonData_lst = buttonData;
}
}
catch
(
Exception
Err)
{
MessageBox
.
Show
(
"Timing errors!"
+ Err.Message,
"MouseControl"
);
timer1.Enabled =
false
;
Form2Closing
();
}
}
private
void
Form2_KeyDown
(
object
sender,
KeyEventArgs
e)
// Обработчик событий нажатия
клавиш клавиатуры
{
switch
(e.KeyData)
{
case
Keys
.Oemplus:
speed = ++speed >
50
?
50
: speed;
label11.Text =
Convert
.
ToString
(speed);
break
;
// Увеличение уменьшение скорости
case
Keys
.OemMinus:
speed = --speed <
1
?
1
: speed;
label11.Text =
Convert
.
ToString
(speed);
break
;
case
Keys
.W:
// вверх Naklonverhnii
keyData |=
0x01
;
yCount +=
1
;
break
;
case
Keys
.S:
// вниз Naklonverhnii
keyData |=
0x02
;
yCount -=
1
;
break
;
case
Keys
.D:
// вправо Osnova
keyData |=
0x08
;
xCount +=
1
;
break
;
case
Keys
.A:
// влево Osnova
keyData |=
0x04
;
xCount -=
1
;
break
;
case
Keys
.Q:
// вниз Naklonnizhnii
buttonData &=
0x7f
;
buttonData |=
0x40
;
zCount -=
1
;
break
;
case
Keys
.E:
// вверх Naklonnizhnii

63
buttonData &=
0xbf
;
buttonData |=
0x80
;
zCount +=
1
;
break
;
case
Keys
.Z:
// влево Povorotzahvata
buttonData &=
0x7f
;
buttonData |=
0x50
;
rCount -=
1
;
break
;
case
Keys
.X:
// вправо Povorotzahvata
buttonData &=
0xbf
;
buttonData |=
0x90
;
rCount +=
1
;
break
;
}
}
private
void
Form2_KeyUp
(
object
sender,
KeyEventArgs
e)
//
Обработчик событий отжатия клавиш клавиатуры
{
if
(e.KeyData ==
Keys
.Z || e.KeyData ==
Keys
.X)
{
buttonData &=
0x3f
;
// label1.Text = "None";
}
if
(e.KeyData ==
Keys
.Q || e.KeyData ==
Keys
.E)
{
buttonData &=
0x2f
;
// label1.Text = "None";
// r_label.Text = "F";
}
if
(e.KeyData ==
Keys
.W)
{
keyData &=
0xfe
;
}
if
(e.KeyData ==
Keys
.S)
{
keyData &=
0xfd
;
}
if
(e.KeyData ==
Keys
.D)
{
keyData &=
0xf7
;
}
if
(e.KeyData ==
Keys
.A)
{
keyData &=
0xfb
;
}
}


64
private
void
Form2_FormClosing
(
object
sender,
FormClosingEventArgs
e)
// Приватный метод для закрытия формы
{
timer1.Enabled =
false
;
Form1
.controlPanel = null;
Cursor
.Clip =
Rectangle
.Empty;
this.parent.
btClose_Click
(null, null);
}
public
void
Form2Closing
()
// Публичный метод для закрытия формы
{
timer1.Enabled =
false
;
Form1
.controlPanel = null;
Cursor
.Clip =
Rectangle
.Empty;
this.parent.
btClose_Click
(null, null);
this.
Close
();
}
private
void
label1_Click
(
object
sender,
EventArgs
e)
{
}
private
void
label20_Click
(
object
sender,
EventArgs
e)
{
}
private
void
groupBox1_Enter
(
object
sender,
EventArgs
e)
{
}
}
}

65