Repozitář maturitního projektu IVE. Vozítko ovládané přes internet, které sbírá data z modulů.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

149 lines
3.0 KiB

*
############
# COMMANDS #
############
COMMAND_CONTINUE
COMMAND_STOP
COMMAND_RIDE_FORWARD
COMMAND_FORWARD_STEER_LEFT
COMMAND_FORWARD_STEER_RIGHT
COMMAND_RIDE_BACKWARD
COMMAND_BACKWARD_STEER_LEFT
COMMAND_BACKWARD_STEER_RIGHT
COMMAND_TURN_LEFT
COMMAND_TURN_RIGHT
COMMAND_SEND_STATE
COMMAND_SET_PWM_BYTE
COMMAND_SET_SPEED_LEVEL
COMMAND_SET_SAFE_STOP_INTENSITY
COMMAND_SET_FREE_SPACE_MULTIPLIER
*/
var pressed_keys = new Set();
var old_pressed_keys = null;
var command = null;
// pressed_keys.add("UP");
setInterval(function(){
document.getElementById("keys").innerHTML = Array.from(pressed_keys).join(' ');
}, 50);
setInterval(function(){
document.getElementById("command").innerHTML = command;
}, 50)
setInterval(function(){
if (document.visibilityState == "visible") {
send_command('COMMAND_CONTINUE');
}
}, 1000);
document.addEventListener('keydown', function(event) {
switch (event.code){
case 'ArrowUp':
pressed_keys.add("UP");
break;
case 'ArrowDown':
pressed_keys.add("DOWN");
break;
case 'ArrowLeft':
pressed_keys.add("LEFT");
break;
case 'ArrowRight':
pressed_keys.add("RIGHT");
break;
}
update_state();
});
document.addEventListener('keyup', function(event) {
switch (event.code){
case 'ArrowUp':
pressed_keys.delete("UP");
break;
case 'ArrowDown':
pressed_keys.delete("DOWN");
break;
case 'ArrowLeft':
pressed_keys.delete("LEFT");
break;
case 'ArrowRight':
pressed_keys.delete("RIGHT");
break;
}
update_state();
});
function update_state() {
if (!old_pressed_keys == pressed_keys)
old_pressed_keys = new Set(pressed_keys);
else
return;
if (pressed_keys.size == 0) {
command = "COMMAND_STOP";
return;
}
else if (pressed_keys.size > 2) {
command = null;
return;
}
else {
command = map_key_with_command(pressed_keys);
send_command(command)
}
}
function map_key_with_command(pressed_keys) {
if (pressed_keys.has("UP")) {
if (pressed_keys.size == 1)
return "COMMAND_RIDE_FORWARD";
else if (pressed_keys.has("LEFT"))
return "COMMAND_FORWARD_STEER_LEFT";
else if (pressed_keys.has("RIGHT"))
return "COMMAND_FORWARD_STEER_RIGHT";
else if (pressed_keys.has("DOWN")) {
return "COMMAND_STOP";
}
}
else if (pressed_keys.has("DOWN")) {
if (pressed_keys.size == 1)
return "COMMAND_RIDE_BACKWARD";
else if (pressed_keys.has("LEFT"))
return "COMMAND_BACKWARD_STEER_LEFT";
else if (pressed_keys.has("RIGHT"))
return "COMMAND_BACKWARD_STEER_RIGHT";
}
else if (pressed_keys.has("LEFT")) {
return "COMMAND_TURN_LEFT";
}
else if (pressed_keys.has("RIGHT")) {
return "COMMAND_TURN_RIGHT";
}
return null;
}
function send_command(command) {
$.post(
send_command_url,
{
command : command
},
function(response){
if (response.status == "ERROR") {
alert(response.message);
}
});
}