Добавление в эмулятор поддержки функции повторного цинкования, обновление README.md
This commit is contained in:
parent
157c0cb9e6
commit
66c69f4e0f
@ -5,10 +5,11 @@
|
|||||||
* нельзя отключить сразу все зоны цинкования или травления
|
* нельзя отключить сразу все зоны цинкования или травления
|
||||||
* коррекцию нужно описать так, чтобы не произошло ничего страшного
|
* коррекцию нужно описать так, чтобы не произошло ничего страшного
|
||||||
* время скапывания нельзя поставить больше 200 секунд (в текущей реализации можно до 8К секунд)
|
* время скапывания нельзя поставить больше 200 секунд (в текущей реализации можно до 8К секунд)
|
||||||
* время каждого процесса не больше чем 32К секунд (можно уменьшить до 8К для упрощения логики)
|
* время каждого процесса не больше чем 8К секунд
|
||||||
* устанавливать режим работы роботов (один робот/второй робот/два робота) можно только в ручном режиме
|
* устанавливать режим работы роботов (первый робот/второй робот/два робота) можно только в ручном режиме
|
||||||
|
|
||||||
## Известные баги
|
## Известные баги
|
||||||
|
|
||||||
|
* ночных барабанов на линии не может быть больше 8, если барабанов больше то они останутся в цинковании, поэтому следует
|
||||||
* не работают регистры добавления/удаления барабанов с панели
|
* не работают регистры добавления/удаления барабанов с панели
|
||||||
|
|
||||||
|
27
emulator.cpp
27
emulator.cpp
@ -56,6 +56,7 @@ char scheduler_en = 1;
|
|||||||
char scheduler_start_signal = 1;
|
char scheduler_start_signal = 1;
|
||||||
char auto_mode_pause = 0;
|
char auto_mode_pause = 0;
|
||||||
char hla_night_mode = 0;
|
char hla_night_mode = 0;
|
||||||
|
char hla_zinc_again = 0;
|
||||||
|
|
||||||
short hla_exchange_zone = ZONE_GALVANIZING_2;
|
short hla_exchange_zone = ZONE_GALVANIZING_2;
|
||||||
|
|
||||||
@ -228,15 +229,15 @@ static void showAll() {
|
|||||||
image_init();
|
image_init();
|
||||||
image_draw_borders();
|
image_draw_borders();
|
||||||
char tmp[64];
|
char tmp[64];
|
||||||
sprintf(tmp, "Lock2=%2d Lock1=%2d FNZ=%d", robot2_lock_zone, robot1_lock_zone, get_first_night_zone());
|
sprintf(tmp, "Lock2=%2d Lock1=%2d FNZ=%2d", robot2_lock_zone, robot1_lock_zone, get_first_night_zone());
|
||||||
image_insert_sprite(0, 2, tmp);
|
image_insert_sprite(0, 2, tmp);
|
||||||
|
|
||||||
collectBarrelsStatistic();
|
collectBarrelsStatistic();
|
||||||
sprintf(tmp, "barrels=%2d time=%d max_time=%d", barrels_count, barrels_time, max_time);
|
sprintf(tmp, "barrels=%02d time=%d max_time=%d", barrels_count, barrels_time, max_time);
|
||||||
image_insert_sprite(0, 30, tmp);
|
image_insert_sprite(0, 30, tmp);
|
||||||
|
|
||||||
sprintf(tmp, "MODE: night=%d pause=%d", hla_night_mode, auto_mode_pause);
|
sprintf(tmp, "MODE: night=%d pause=%d zinc_again=%d", hla_night_mode, auto_mode_pause, hla_zinc_again);
|
||||||
image_insert_sprite(0, 70, tmp);
|
image_insert_sprite(0, 66, tmp);
|
||||||
|
|
||||||
// рисование бочек
|
// рисование бочек
|
||||||
for (int i = 0; i < BARRELS_COUNT; i++) {
|
for (int i = 0; i < BARRELS_COUNT; i++) {
|
||||||
@ -339,12 +340,14 @@ int main() {
|
|||||||
// подсчитаем статистику
|
// подсчитаем статистику
|
||||||
collectBarrelsStatistic();
|
collectBarrelsStatistic();
|
||||||
|
|
||||||
// грузим не больше 5 барабанов
|
// грузим не больше 8 барабанов
|
||||||
// if (barrels_count < 5) {
|
// if (barrels_count < 8) {
|
||||||
// button_load = 1;
|
// button_load = 1;
|
||||||
// }
|
// }
|
||||||
|
// button_unload = 1;
|
||||||
|
// button_unload_end = 1;
|
||||||
|
|
||||||
// ======= БЛОК КОДА bittons_logic =======
|
// ======= БЛОК КОДА buttons_logic =======
|
||||||
|
|
||||||
// авто сброс кнопок на выгрузке, если там нет барабана
|
// авто сброс кнопок на выгрузке, если там нет барабана
|
||||||
if (!zone_is_busy(ZONE_UNLOAD)) {
|
if (!zone_is_busy(ZONE_UNLOAD)) {
|
||||||
@ -428,10 +431,6 @@ int main() {
|
|||||||
if (robot2_code.PC >= 0)
|
if (robot2_code.PC >= 0)
|
||||||
debug_print_robot_code(&robot2_code, 2, sock_fd);
|
debug_print_robot_code(&robot2_code, 2, sock_fd);
|
||||||
|
|
||||||
#ifdef DEBUG_CORRECTION
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
send_str("cmd >> ");
|
send_str("cmd >> ");
|
||||||
std::string in;
|
std::string in;
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -471,8 +470,12 @@ int main() {
|
|||||||
} else if (in == "p") {
|
} else if (in == "p") {
|
||||||
auto_mode_pause = !auto_mode_pause;
|
auto_mode_pause = !auto_mode_pause;
|
||||||
message = "Переключен режим паузы";
|
message = "Переключен режим паузы";
|
||||||
|
} else if (in == "z") {
|
||||||
|
hla_zinc_again = !hla_zinc_again;
|
||||||
|
message = "Переключен флаг повторного цинкования";
|
||||||
} else {
|
} else {
|
||||||
message = "Неизвестная команда. q - выход, u - выгрузка, 1 - загрузка 1, 2 - загрузка 2";
|
message = "Неизвестная команда. q - выход, u - выгрузка, 1 - загрузка 1, 2 - загрузка 2,\n"
|
||||||
|
" n - ночной режим, p - пауза, z - повторное цинкование";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current_tic++;
|
current_tic++;
|
||||||
|
2
utils.h
2
utils.h
@ -197,6 +197,7 @@ extern char auto_mode_pause;
|
|||||||
// Кнопки с панели
|
// Кнопки с панели
|
||||||
extern char hla_night_mode;
|
extern char hla_night_mode;
|
||||||
extern char hla_correct_command;
|
extern char hla_correct_command;
|
||||||
|
extern char hla_zinc_again;
|
||||||
|
|
||||||
// разрешение на работу планировщика
|
// разрешение на работу планировщика
|
||||||
extern char scheduler_en;
|
extern char scheduler_en;
|
||||||
@ -241,6 +242,7 @@ extern short scheduler_stage;
|
|||||||
|
|
||||||
#define auto_mode_pause _c_auto_mode_pause
|
#define auto_mode_pause _c_auto_mode_pause
|
||||||
#define hla_night_mode _c_hla_night_mode
|
#define hla_night_mode _c_hla_night_mode
|
||||||
|
#define hla_zinc_again _c_hla_zinc_again
|
||||||
#define hla_correct_command _c_hla_correct_command
|
#define hla_correct_command _c_hla_correct_command
|
||||||
|
|
||||||
#define scheduler_stage _c_scheduler_stage
|
#define scheduler_stage _c_scheduler_stage
|
||||||
|
Reference in New Issue
Block a user