From 488707a834899a2aee23532e55bd662c9d3b5fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 17 Nov 2019 21:31:54 +0100 Subject: rename some functions --- Kod/bilbana/yc4/display/bar_graph.m | 7 +++++++ Kod/bilbana/yc4/display/box.m | 4 ++++ Kod/bilbana/yc4/display/clear.m | 3 +++ Kod/bilbana/yc4/display/clear_display.m | 3 --- Kod/bilbana/yc4/display/define_bar_graph.m | 7 ------- Kod/bilbana/yc4/display/define_flashing_area.m | 4 ---- Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m | 4 ---- Kod/bilbana/yc4/display/define_touch_key.m | 7 ------- Kod/bilbana/yc4/display/define_touch_switch.m | 7 ------- Kod/bilbana/yc4/display/delete_bar_graph.m | 7 ------- Kod/bilbana/yc4/display/draw_box.m | 4 ---- Kod/bilbana/yc4/display/draw_frame.m | 4 ---- Kod/bilbana/yc4/display/draw_frame_box.m | 4 ---- Kod/bilbana/yc4/display/draw_point.m | 4 ---- Kod/bilbana/yc4/display/draw_rectangle.m | 4 ---- Kod/bilbana/yc4/display/draw_single_line.m | 4 ---- Kod/bilbana/yc4/display/flashing_area.m | 4 ++++ Kod/bilbana/yc4/display/flashing_area_with_pattern.m | 4 ++++ Kod/bilbana/yc4/display/frame.m | 4 ++++ Kod/bilbana/yc4/display/frame_box.m | 4 ++++ Kod/bilbana/yc4/display/key.m | 7 +++++++ Kod/bilbana/yc4/display/line.m | 4 ++++ Kod/bilbana/yc4/display/point.m | 4 ++++ Kod/bilbana/yc4/display/put_text.m | 7 ------- Kod/bilbana/yc4/display/rectangle.m | 4 ++++ Kod/bilbana/yc4/display/set_add_line_spacing.m | 3 --- Kod/bilbana/yc4/display/set_line_spacing.m | 3 +++ Kod/bilbana/yc4/display/switch.m | 7 +++++++ Kod/bilbana/yc4/display/text.m | 7 +++++++ Kod/bilbana/yc4/display/toggle.m | 7 +++++++ 30 files changed, 73 insertions(+), 73 deletions(-) create mode 100644 Kod/bilbana/yc4/display/bar_graph.m create mode 100644 Kod/bilbana/yc4/display/box.m create mode 100644 Kod/bilbana/yc4/display/clear.m delete mode 100644 Kod/bilbana/yc4/display/clear_display.m delete mode 100644 Kod/bilbana/yc4/display/define_bar_graph.m delete mode 100644 Kod/bilbana/yc4/display/define_flashing_area.m delete mode 100644 Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m delete mode 100644 Kod/bilbana/yc4/display/define_touch_key.m delete mode 100644 Kod/bilbana/yc4/display/define_touch_switch.m delete mode 100644 Kod/bilbana/yc4/display/delete_bar_graph.m delete mode 100644 Kod/bilbana/yc4/display/draw_box.m delete mode 100644 Kod/bilbana/yc4/display/draw_frame.m delete mode 100644 Kod/bilbana/yc4/display/draw_frame_box.m delete mode 100644 Kod/bilbana/yc4/display/draw_point.m delete mode 100644 Kod/bilbana/yc4/display/draw_rectangle.m delete mode 100644 Kod/bilbana/yc4/display/draw_single_line.m create mode 100644 Kod/bilbana/yc4/display/flashing_area.m create mode 100644 Kod/bilbana/yc4/display/flashing_area_with_pattern.m create mode 100644 Kod/bilbana/yc4/display/frame.m create mode 100644 Kod/bilbana/yc4/display/frame_box.m create mode 100644 Kod/bilbana/yc4/display/key.m create mode 100644 Kod/bilbana/yc4/display/line.m create mode 100644 Kod/bilbana/yc4/display/point.m delete mode 100644 Kod/bilbana/yc4/display/put_text.m create mode 100644 Kod/bilbana/yc4/display/rectangle.m delete mode 100644 Kod/bilbana/yc4/display/set_add_line_spacing.m create mode 100644 Kod/bilbana/yc4/display/set_line_spacing.m create mode 100644 Kod/bilbana/yc4/display/switch.m create mode 100644 Kod/bilbana/yc4/display/text.m create mode 100644 Kod/bilbana/yc4/display/toggle.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/bar_graph.m b/Kod/bilbana/yc4/display/bar_graph.m new file mode 100644 index 0000000..e7c4b2c --- /dev/null +++ b/Kod/bilbana/yc4/display/bar_graph.m @@ -0,0 +1,7 @@ +function pkg = bar_graph(direction, no, x1, y1, x2, y2, start_value, end_value, type, pattern) +pkg = [] +args = [no, get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)] +args = [args, start_value, end_value, type, pattern] %TODO get_bytes or no ? + +pkg = get_package(strjoin({'B', direction}, ''), args) +end diff --git a/Kod/bilbana/yc4/display/box.m b/Kod/bilbana/yc4/display/box.m new file mode 100644 index 0000000..786f95e --- /dev/null +++ b/Kod/bilbana/yc4/display/box.m @@ -0,0 +1,4 @@ +function pkg = box(x1, y1, x2, y2, n1) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1]; +pkg = get_package('RO', arg); +end diff --git a/Kod/bilbana/yc4/display/clear.m b/Kod/bilbana/yc4/display/clear.m new file mode 100644 index 0000000..f921d9c --- /dev/null +++ b/Kod/bilbana/yc4/display/clear.m @@ -0,0 +1,3 @@ +function pkg = clear() +pkg = get_package('DL', []); +end diff --git a/Kod/bilbana/yc4/display/clear_display.m b/Kod/bilbana/yc4/display/clear_display.m deleted file mode 100644 index 45f1680..0000000 --- a/Kod/bilbana/yc4/display/clear_display.m +++ /dev/null @@ -1,3 +0,0 @@ -function pkg = clear_display() -pkg = get_package('DL', []); -end diff --git a/Kod/bilbana/yc4/display/define_bar_graph.m b/Kod/bilbana/yc4/display/define_bar_graph.m deleted file mode 100644 index d915cf1..0000000 --- a/Kod/bilbana/yc4/display/define_bar_graph.m +++ /dev/null @@ -1,7 +0,0 @@ -function pkg = define_bar_graph(direction, no, x1, y1, x2, y2, start_value, end_value, type, pattern) -pkg = [] -args = [no, get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)] -args = [args, start_value, end_value, type, pattern] %TODO get_bytes or no ? - -pkg = get_package(strjoin({'B', direction}, ''), args) -end diff --git a/Kod/bilbana/yc4/display/define_flashing_area.m b/Kod/bilbana/yc4/display/define_flashing_area.m deleted file mode 100644 index 3e581ea..0000000 --- a/Kod/bilbana/yc4/display/define_flashing_area.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = define_flashing_area(x1, y1, x2, y2) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; -pkg = get_package('QI', arg); -end diff --git a/Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m b/Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m deleted file mode 100644 index c5c190f..0000000 --- a/Kod/bilbana/yc4/display/define_flashing_area_with_pattern.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = define_flashing_area_with_pattern(x1, y1, x2, y2, n1) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1]; -pkg = get_package('QM', arg); -end diff --git a/Kod/bilbana/yc4/display/define_touch_key.m b/Kod/bilbana/yc4/display/define_touch_key.m deleted file mode 100644 index 69ed130..0000000 --- a/Kod/bilbana/yc4/display/define_touch_key.m +++ /dev/null @@ -1,7 +0,0 @@ -function pkg = define_touch_key(x1, y1, x2, y2, down_code, up_code, just, text) -arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; -arg_text = double(strjoin({just; text}, '')); -arg_null = 0; - -pkg = get_package('AT', [arg_location, down_code, up_code, arg_text, arg_null]); -end diff --git a/Kod/bilbana/yc4/display/define_touch_switch.m b/Kod/bilbana/yc4/display/define_touch_switch.m deleted file mode 100644 index e45f512..0000000 --- a/Kod/bilbana/yc4/display/define_touch_switch.m +++ /dev/null @@ -1,7 +0,0 @@ -function pkg = define_touch_switch(x1, y1, x2, y2, down_code, up_code, just, text) -arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; -arg_text = double(strjoin({just; text}, '')); -arg_null = 0; - -pkg = get_package('AK', [arg_location, down_code, up_code, arg_text, arg_null]); -end diff --git a/Kod/bilbana/yc4/display/delete_bar_graph.m b/Kod/bilbana/yc4/display/delete_bar_graph.m deleted file mode 100644 index 093cb2b..0000000 --- a/Kod/bilbana/yc4/display/delete_bar_graph.m +++ /dev/null @@ -1,7 +0,0 @@ -function pkg = define_bar_graph(num, keep_visible) -if keep_visible - keep_visible = 1 -else - keep_visible = 0 -pkg = get_package('BD', [num, keep_visible]) -end diff --git a/Kod/bilbana/yc4/display/draw_box.m b/Kod/bilbana/yc4/display/draw_box.m deleted file mode 100644 index 7ac4b70..0000000 --- a/Kod/bilbana/yc4/display/draw_box.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = draw_box(x1, y1, x2, y2, n1) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1]; -pkg = get_package('RO', arg); -end diff --git a/Kod/bilbana/yc4/display/draw_frame.m b/Kod/bilbana/yc4/display/draw_frame.m deleted file mode 100644 index 1a6ce3b..0000000 --- a/Kod/bilbana/yc4/display/draw_frame.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = draw_frame(x1, y1, x2, y2, n1) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; -pkg = get_package('RR', arg); -end diff --git a/Kod/bilbana/yc4/display/draw_frame_box.m b/Kod/bilbana/yc4/display/draw_frame_box.m deleted file mode 100644 index f2a247e..0000000 --- a/Kod/bilbana/yc4/display/draw_frame_box.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = draw_frame_box(x1, y1, x2, y2, n1) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1]; -pkg = get_package('RT', arg); -end diff --git a/Kod/bilbana/yc4/display/draw_point.m b/Kod/bilbana/yc4/display/draw_point.m deleted file mode 100644 index 34ba683..0000000 --- a/Kod/bilbana/yc4/display/draw_point.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = draw_point(x1, y1) -arg = [get_bytes(x1), get_bytes(y1)]; -pkg = get_package('GP', arg); -end diff --git a/Kod/bilbana/yc4/display/draw_rectangle.m b/Kod/bilbana/yc4/display/draw_rectangle.m deleted file mode 100644 index 3edff7c..0000000 --- a/Kod/bilbana/yc4/display/draw_rectangle.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = draw_rectangle(x1, y1, x2, y2) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; -pkg = get_package('GR', arg); -end diff --git a/Kod/bilbana/yc4/display/draw_single_line.m b/Kod/bilbana/yc4/display/draw_single_line.m deleted file mode 100644 index c1da8ab..0000000 --- a/Kod/bilbana/yc4/display/draw_single_line.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = draw_single_line(x1, y1, x2, y2) -arg = [mod(x1, 255), fix(x1 / 255), y1, 0, mod(x2, 255), fix(x2 / 255), y2, 0]; -pkg = get_package('GD', arg); -end diff --git a/Kod/bilbana/yc4/display/flashing_area.m b/Kod/bilbana/yc4/display/flashing_area.m new file mode 100644 index 0000000..e3ba624 --- /dev/null +++ b/Kod/bilbana/yc4/display/flashing_area.m @@ -0,0 +1,4 @@ +function pkg = flashing_area(x1, y1, x2, y2) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +pkg = get_package('QI', arg); +end diff --git a/Kod/bilbana/yc4/display/flashing_area_with_pattern.m b/Kod/bilbana/yc4/display/flashing_area_with_pattern.m new file mode 100644 index 0000000..e6dd61b --- /dev/null +++ b/Kod/bilbana/yc4/display/flashing_area_with_pattern.m @@ -0,0 +1,4 @@ +function pkg = flashing_area_with_pattern(x1, y1, x2, y2, n1) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1]; +pkg = get_package('QM', arg); +end diff --git a/Kod/bilbana/yc4/display/frame.m b/Kod/bilbana/yc4/display/frame.m new file mode 100644 index 0000000..093d6b5 --- /dev/null +++ b/Kod/bilbana/yc4/display/frame.m @@ -0,0 +1,4 @@ +function pkg = frame(x1, y1, x2, y2, n1) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +pkg = get_package('RR', arg); +end diff --git a/Kod/bilbana/yc4/display/frame_box.m b/Kod/bilbana/yc4/display/frame_box.m new file mode 100644 index 0000000..b28c61d --- /dev/null +++ b/Kod/bilbana/yc4/display/frame_box.m @@ -0,0 +1,4 @@ +function pkg = frame_box(x1, y1, x2, y2, n1) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2), n1]; +pkg = get_package('RT', arg); +end diff --git a/Kod/bilbana/yc4/display/key.m b/Kod/bilbana/yc4/display/key.m new file mode 100644 index 0000000..0187755 --- /dev/null +++ b/Kod/bilbana/yc4/display/key.m @@ -0,0 +1,7 @@ +function pkg = key(x1, y1, x2, y2, down_code, up_code, just, text) +arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +arg_text = double(strjoin({just; text}, '')); +arg_null = 0; + +pkg = get_package('AT', [arg_location, down_code, up_code, arg_text, arg_null]); +end diff --git a/Kod/bilbana/yc4/display/line.m b/Kod/bilbana/yc4/display/line.m new file mode 100644 index 0000000..f04adaf --- /dev/null +++ b/Kod/bilbana/yc4/display/line.m @@ -0,0 +1,4 @@ +function pkg = line(x1, y1, x2, y2) +arg = [mod(x1, 255), fix(x1 / 255), y1, 0, mod(x2, 255), fix(x2 / 255), y2, 0]; +pkg = get_package('GD', arg); +end diff --git a/Kod/bilbana/yc4/display/point.m b/Kod/bilbana/yc4/display/point.m new file mode 100644 index 0000000..cfb6b34 --- /dev/null +++ b/Kod/bilbana/yc4/display/point.m @@ -0,0 +1,4 @@ +function pkg = point(x1, y1) +arg = [get_bytes(x1), get_bytes(y1)]; +pkg = get_package('GP', arg); +end diff --git a/Kod/bilbana/yc4/display/put_text.m b/Kod/bilbana/yc4/display/put_text.m deleted file mode 100644 index 8455c83..0000000 --- a/Kod/bilbana/yc4/display/put_text.m +++ /dev/null @@ -1,7 +0,0 @@ -function [pkg] = put_text(x, y, justification, text) -arg1 = [mod(x, 256), x ./ 256, mod(y, 256), y ./ 256]; -arg2 = text; -arg3 = 0; - -pkg = get_package(strjoin({'Z', justification}, ''), [arg1 double(arg2) arg3]); -end diff --git a/Kod/bilbana/yc4/display/rectangle.m b/Kod/bilbana/yc4/display/rectangle.m new file mode 100644 index 0000000..595b7b7 --- /dev/null +++ b/Kod/bilbana/yc4/display/rectangle.m @@ -0,0 +1,4 @@ +function pkg = rectangle(x1, y1, x2, y2) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +pkg = get_package('GR', arg); +end diff --git a/Kod/bilbana/yc4/display/set_add_line_spacing.m b/Kod/bilbana/yc4/display/set_add_line_spacing.m deleted file mode 100644 index 33a0b4a..0000000 --- a/Kod/bilbana/yc4/display/set_add_line_spacing.m +++ /dev/null @@ -1,3 +0,0 @@ -function pkg = set_add_line_spacing(val) -pkg = get_package('ZY', [val]) -end diff --git a/Kod/bilbana/yc4/display/set_line_spacing.m b/Kod/bilbana/yc4/display/set_line_spacing.m new file mode 100644 index 0000000..95bfc49 --- /dev/null +++ b/Kod/bilbana/yc4/display/set_line_spacing.m @@ -0,0 +1,3 @@ +function pkg = set_line_spacing(val) +pkg = get_package('ZY', [val]) +end diff --git a/Kod/bilbana/yc4/display/switch.m b/Kod/bilbana/yc4/display/switch.m new file mode 100644 index 0000000..e45f512 --- /dev/null +++ b/Kod/bilbana/yc4/display/switch.m @@ -0,0 +1,7 @@ +function pkg = define_touch_switch(x1, y1, x2, y2, down_code, up_code, just, text) +arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +arg_text = double(strjoin({just; text}, '')); +arg_null = 0; + +pkg = get_package('AK', [arg_location, down_code, up_code, arg_text, arg_null]); +end diff --git a/Kod/bilbana/yc4/display/text.m b/Kod/bilbana/yc4/display/text.m new file mode 100644 index 0000000..e31ecc3 --- /dev/null +++ b/Kod/bilbana/yc4/display/text.m @@ -0,0 +1,7 @@ +function [pkg] = text(x, y, justification, text) +arg1 = [mod(x, 256), x ./ 256, mod(y, 256), y ./ 256]; +arg2 = text; +arg3 = 0; + +pkg = get_package(strjoin({'Z', justification}, ''), [arg1 double(arg2) arg3]); +end diff --git a/Kod/bilbana/yc4/display/toggle.m b/Kod/bilbana/yc4/display/toggle.m new file mode 100644 index 0000000..9dc42b0 --- /dev/null +++ b/Kod/bilbana/yc4/display/toggle.m @@ -0,0 +1,7 @@ +function pkg = toggle(x1, y1, x2, y2, down_code, up_code, just, text) +arg_location = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +arg_text = double(strjoin({just; text}, '')); +arg_null = 0; + +pkg = get_package('AK', [arg_location, down_code, up_code, arg_text, arg_null]); +end -- cgit v1.2.1 From 30dda57ab349e612f10377c7167c2487aeacfbe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 13 Nov 2019 17:15:53 +0100 Subject: Add pre-loop to input active track on display --- Kod/bilbana/yc4/display/get_response.m | 2 +- Kod/bilbana/yc4/main.m | 40 ++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/get_response.m b/Kod/bilbana/yc4/display/get_response.m index 0c77a00..aab66a6 100644 --- a/Kod/bilbana/yc4/display/get_response.m +++ b/Kod/bilbana/yc4/display/get_response.m @@ -36,7 +36,7 @@ pointer = pointer + 1; % total length data = struct; -while pointer < length(display_data) - 1 % last value is bcc +while pointer < length(display_data) - 1 % (last value is bcc) pointer = pointer + 1; if display_data(pointer) ~= 27 % TODO: no ESC? diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index cad395a..effe075 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -6,7 +6,7 @@ cd display/ClientServerApp/Release cd ../../.. display = struct; -display.data = [clear_display()]; +display.data = []; display.out = 0; display.shm = 0; display.shm_interp = struct; @@ -14,7 +14,6 @@ display.shm_interp.ack = 0; display.shm_interp.start_code = ''; display.shm_interp.data = []; display.last_send = tic; -display.last_request = tic; display.send_interval = 0.5; disp('Startar bilbanan. Avsluta med q.') @@ -64,6 +63,43 @@ highToc = 0; %% ASK ACTIVE CARS disp('J = Ja (automatiskt), M = Ja (manuellt), N = Nej'); +%% DRAW DISPLAY +matlabclient(1, get_smallpackage([ ... + put_text(160, 30, 'C', 'Choose which car to drive'), ... + define_touch_switch(98 , 60 , 130, 90 , 11, 12, 'C', '1'), ... + define_touch_switch(102, 98 , 126, 122, 13, 14, 'C', 'M'), ... + define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... + define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M'), ... + define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... +])); + +display.last_check = tic; +while 1 + pause(0.1); + if toc(display.last_check) > 0.5 + display.last_check = tic; + % read internal mem from last send + [display.out, display.shm] = matlabclient(2); + [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); + + % request internal mem + matlabclient(1, hex2dec(['12'; '01'; '53'; '66'])); + + if isempty(display.shm_interp.data) + disp('tomt') + continue + end + for i = 1:length(display.shm_interp.data) + disp(num2str(length(display.shm_interp.data))) + data = display.shm_interp.data(i); + disp(data) + if data.data == 31 + disp('WAHO') + end + end + end +end + car1.response = input('Vill du köra bil 1? [N] ', 's'); if car1.response == 'J' car1.running = true; -- cgit v1.2.1 From 3d13499d560f1e81bb594ac3596f1e768e154b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 13 Nov 2019 20:34:02 +0100 Subject: respond to buttons pressed + indents --- Kod/bilbana/yc4/main.m | 162 ++++++++++++++++++++++++++++++------------------- 1 file changed, 101 insertions(+), 61 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index effe075..c2521fd 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -60,67 +60,61 @@ car2.miss_probability = 0.05; t = 0; highToc = 0; -%% ASK ACTIVE CARS -disp('J = Ja (automatiskt), M = Ja (manuellt), N = Nej'); - %% DRAW DISPLAY matlabclient(1, get_smallpackage([ ... put_text(160, 30, 'C', 'Choose which car to drive'), ... define_touch_switch(98 , 60 , 130, 90 , 11, 12, 'C', '1'), ... define_touch_switch(102, 98 , 126, 122, 13, 14, 'C', 'M'), ... - define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... - define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M'), ... - define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... -])); + define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... + define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M'), ... + define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... + ])); +%% CHECK DISPLAY BUTTONS display.last_check = tic; +done = false; while 1 pause(0.1); - if toc(display.last_check) > 0.5 - display.last_check = tic; - % read internal mem from last send - [display.out, display.shm] = matlabclient(2); - [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); - - % request internal mem - matlabclient(1, hex2dec(['12'; '01'; '53'; '66'])); - - if isempty(display.shm_interp.data) - disp('tomt') - continue - end - for i = 1:length(display.shm_interp.data) - disp(num2str(length(display.shm_interp.data))) - data = display.shm_interp.data(i); - disp(data) - if data.data == 31 - disp('WAHO') - end - end - end -end - -car1.response = input('Vill du köra bil 1? [N] ', 's'); -if car1.response == 'J' - car1.running = true; - car1.automatic = true; -elseif car1.response == 'M' - car1.running = true; - car1.automatic = false; -else - car1.running = false; -end + if toc(display.last_check) > 0.5 + display.last_check = tic; + % read internal mem from last send + [display.out, display.shm] = matlabclient(2); + [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); + % request internal mem + matlabclient(1, hex2dec(['12'; '01'; '53'; '66'])); -car2.response = input('Vill du köra bil 2? [N] ', 's'); -if car2.response == 'J' - car2.running = true; - car2.automatic = true; -elseif car2.response == 'M' - car2.running = true; - car2.automatic = false; -else - car2.running = false; + if isempty(display.shm_interp.data) + continue + end + for i = 1:length(display.shm_interp.data) + disp(num2str(length(display.shm_interp.data))) + data = display.shm_interp.data(i); + disp(data) + if data.data == 32 + done = true + elseif data.data == 11 + car1.running = true + elseif data.data == 12 + car1.running = false + elseif data.data == 13 + car1.automatic = true + elseif data.data == 14 + car1.automatic = false + elseif data.data == 21 + car2.running = true + elseif data.data == 22 + car2.running = false + elseif data.data == 23 + car2.automatic = true + elseif data.data == 24 + car2.automatic = false + end + end + if done == true + break + end + end end %{ ref_time = input('Vilken referenstid ska användas? [13] ', 's'); @@ -137,16 +131,16 @@ matlabclient(1, get_smallpackage([define_bar_graph('O', 2, 266, 30, 290, 210, 0, %% MAIN LOOP while 1 - readTime = tic; - %% PRE-LOOP - if strcmp(get(hf,'currentcharacter'),'q') - close(hf) - break - end - - figure(hf) - drawnow - + readTime = tic; + %% PRE-LOOP + if strcmp(get(hf,'currentcharacter'),'q') + close(hf) + break + end + + figure(hf) + drawnow + [car1, car1.stop, display.data] = do_car(car1, t, display.data); [car2, car2.stop, display.data] = do_car(car2, t, display.data); @@ -158,6 +152,7 @@ while 1 disp('stopped by car 2'); break; end +<<<<<<< HEAD %% END OF LOOP while 1 %Whileloop med paus som k�rs till pausen �verskridit 0.07 sekunder @@ -202,8 +197,53 @@ while 1 end pause(0.001); end +======= + + %% END OF LOOP + while 1 %Whileloop med paus som k�rs till pausen �verskridit 0.07 sekunder + % DISPLAY + display.send_delay = tic; + if toc(display.last_send) > display.send_interval + % queue control signal + if car1.running && car1.automatic + display.data = [display.data, put_text(20, 16 + (16 * 1), 'L', num2str(car1.u))]; + end + if car2.running && car2.automatic + display.data = [display.data, put_text(20, 16 + (16 * 2), 'L', num2str(car2.u))]; + end + + % send all queued data + if ~isempty(display.data) + [display.out] = matlabclient(1, get_smallpackage(display.data)); + display.data = []; + end + display.last_send = tic; + + % read internal mem from last send + [display.out, display.shm] = matlabclient(2); + [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); + + % request internal mem + % matlabclient(1, hex2dec(['12'; '01'; '53'; '66'])); + end + % disp(strjoin({'display took additional ', num2str(toc(display.send_delay))})); + % ACTUAL END OF LOOP + t = toc(readTime); + + if t > 0.07 + if t > highToc + highToc = t; %Om det nya v�rdet p� pausen �r h�gre �n den tidigare h�gsta s� sparas det som den h�gsta + end + if t > 0.1 + % beep; + end + break; + end + pause(0.001); + end +>>>>>>> respond to buttons pressed + indents end - + %% END OF PROGRAM disp(highToc); disp(car1); -- cgit v1.2.1 From ce5be50ee6d0663d2a456ea88a6408306d0571d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Thu, 14 Nov 2019 09:58:02 +0100 Subject: comment out track-code --- Kod/bilbana/yc4/main.m | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index c2521fd..e6a1663 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -19,21 +19,21 @@ display.send_interval = 0.5; disp('Startar bilbanan. Avsluta med q.') hf=figure('position', [0 0 eps eps], 'menubar', 'none'); -initialize_counters(1) -initialize_counters(2) +% initialize_counters(1) +% initialize_counters(2) -config_IOs +% config_IOs load('bilbana\files\Bana1.mat') load('bilbana\files\Bana2.mat') -start_race(1) -start_race(2) +% start_race(1) +% start_race(2) car1 = struct; car1.num = 1; car1.running = false; -car1.automatic = true; +car1.automatic = false; car1.segment = 1; car1.lap = 0; car1.lap_times = []; @@ -47,7 +47,7 @@ car1.miss_probability = 0.0; car2 = struct; car2.num = 2; car2.running = false; -car2.automatic = true; +car2.automatic = false; car2.segment = 1; car2.lap = 0; car2.lap_times = []; @@ -92,23 +92,23 @@ while 1 data = display.shm_interp.data(i); disp(data) if data.data == 32 - done = true + done = true; elseif data.data == 11 - car1.running = true + car1.running = true; elseif data.data == 12 - car1.running = false + car1.running = false; elseif data.data == 13 - car1.automatic = true + car1.automatic = false; elseif data.data == 14 - car1.automatic = false + car1.automatic = true; elseif data.data == 21 - car2.running = true + car2.running = true; elseif data.data == 22 - car2.running = false + car2.running = false; elseif data.data == 23 - car2.automatic = true + car2.automatic = false; elseif data.data == 24 - car2.automatic = false + car2.automatic = true; end end if done == true -- cgit v1.2.1 From f9f5c7afa381ecaad5b9d9f608a49268de4b467e Mon Sep 17 00:00:00 2001 From: Albin Date: Thu, 14 Nov 2019 09:35:15 +0100 Subject: Add ref-time --- Kod/bilbana/yc4/main.m | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index e6a1663..052f59e 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -57,6 +57,8 @@ car2.seg_len = [0.0 2.53 3.05 4.92 7.60 8.84 10.65 14.68 17.76]; car2.map = Bana2; car2.miss_probability = 0.05; +ref_time = 13; + t = 0; highToc = 0; @@ -116,6 +118,7 @@ while 1 end end end + %{ ref_time = input('Vilken referenstid ska användas? [13] ', 's'); ref_time = str2double(ref_time); -- cgit v1.2.1 From 20667f30666d8fa9f112dd62837064df952585e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 00:21:53 +0100 Subject: Add ability to choose ref time from display Also additional comments --- Kod/bilbana/yc4/main.m | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 052f59e..7fdf005 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -65,11 +65,16 @@ highToc = 0; %% DRAW DISPLAY matlabclient(1, get_smallpackage([ ... put_text(160, 30, 'C', 'Choose which car to drive'), ... - define_touch_switch(98 , 60 , 130, 90 , 11, 12, 'C', '1'), ... - define_touch_switch(102, 98 , 126, 122, 13, 14, 'C', 'M'), ... - define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... - define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M'), ... - define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... + define_touch_switch(98 , 60 , 130, 90 , 11, 12, 'C', '1'), ... % ACTIVATE TRACK 1 + define_touch_switch(102, 98 , 126, 122, 13, 14, 'C', 'M'), ... % MANUAL CONTROL TRACK 1 + define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... % ACTIVATE TRACK 2 + define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M'), ... % MANUAL CONTROL TRACK 2 + put_text(160, 120, 'C', '13.0'), ... % CURRENT REFERENCE TIME + define_touch_key( 98 , 110, 130, 140, 41, 42, 'C', '-'), ... % DECREASE REFERENCE TIME + define_touch_key( 190, 110, 220, 140, 43, 44, 'C', '+'), ... % INCREASE REFERENCE TIME + define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... % START BUTTON + %TODO CLEAR BUTTON + put_text() ])); %% CHECK DISPLAY BUTTONS @@ -77,18 +82,17 @@ display.last_check = tic; done = false; while 1 pause(0.1); - if toc(display.last_check) > 0.5 - display.last_check = tic; + if toc(display.last_check) > 0.4 % read internal mem from last send [display.out, display.shm] = matlabclient(2); [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); % request internal mem matlabclient(1, hex2dec(['12'; '01'; '53'; '66'])); - if isempty(display.shm_interp.data) continue end + update_ref_time = false; for i = 1:length(display.shm_interp.data) disp(num2str(length(display.shm_interp.data))) data = display.shm_interp.data(i); @@ -111,11 +115,26 @@ while 1 car2.automatic = false; elseif data.data == 24 car2.automatic = true; + elseif data.data == 41 + % ignore + elseif data.data == 42 + ref_time = max(ref_time - 0.5, 12.0) + update_ref_time = true; + elseif data.data == 43 + % ignore + elseif data.data == 44 + ref_time = min(ref_time + 0.5, 15.0) + update_ref_time = true; end end if done == true break end + if update_ref_time == true + pause(0.4); + matlabclient(1, get_smallpackage(put_text(160, 120, 'C', num2str(ref_time, '%.1f')))); + end + display.last_check = tic; end end -- cgit v1.2.1 From 0ad78cdf0adc20fa67b3c6daa916d2b038934d35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 00:25:03 +0100 Subject: add debug-print-function --- Kod/bilbana/yc4/debug.m | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Kod/bilbana/yc4/debug.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/debug.m b/Kod/bilbana/yc4/debug.m new file mode 100644 index 0000000..12acbf4 --- /dev/null +++ b/Kod/bilbana/yc4/debug.m @@ -0,0 +1,3 @@ +function [] = debug(tag, strings) +disp(strjoin({'DEBUG (', tag, '): ', strings}, '')) +end -- cgit v1.2.1 From 9df65bb954975329d23be5bfba3fd91039f5bfce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 00:27:59 +0100 Subject: add debug-output when display is done --- Kod/bilbana/yc4/main.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 7fdf005..a7c8cea 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -147,7 +147,10 @@ elseif not(isreal(ref_time)) ref_time = 13; end %} -ref_time = 13; + +debug('DISPLAY', ['CAR1.RUNNING=', car1.running, ', CAR1.AUTOMATIC=', car1.automatic]) +debug('DISPLAY', ['CAR2.RUNNING=', car2.running, ', CAR2.AUTOMATIC=', car2.automatic]) +debug('DISPLAY', ['CHOSEN REFERENCE TIME=', ref_time]) matlabclient(1, get_smallpackage([define_bar_graph('O', 2, 266, 30, 290, 210, 0, 64, 1, 1)])); -- cgit v1.2.1 From b19ae6983f87076b986577f5534bcd20e3053dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 11:06:53 +0100 Subject: issues --- Kod/bilbana/yc4/main.m | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index a7c8cea..bfb18a2 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -68,14 +68,17 @@ matlabclient(1, get_smallpackage([ ... define_touch_switch(98 , 60 , 130, 90 , 11, 12, 'C', '1'), ... % ACTIVATE TRACK 1 define_touch_switch(102, 98 , 126, 122, 13, 14, 'C', 'M'), ... % MANUAL CONTROL TRACK 1 define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... % ACTIVATE TRACK 2 - define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M'), ... % MANUAL CONTROL TRACK 2 - put_text(160, 120, 'C', '13.0'), ... % CURRENT REFERENCE TIME + define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M') ... % MANUAL CONTROL TRACK 2 +])); +pause(0.5); +matlabclient(1, get_smallpackage([ ... + % TODO ????????????????????????????????????????? + put_text(160, 120, 'C', '13.0'), ... % CURRENT REFERENCE TIME define_touch_key( 98 , 110, 130, 140, 41, 42, 'C', '-'), ... % DECREASE REFERENCE TIME define_touch_key( 190, 110, 220, 140, 43, 44, 'C', '+'), ... % INCREASE REFERENCE TIME define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... % START BUTTON %TODO CLEAR BUTTON - put_text() - ])); +])); %% CHECK DISPLAY BUTTONS display.last_check = tic; @@ -83,6 +86,8 @@ done = false; while 1 pause(0.1); if toc(display.last_check) > 0.4 + display.last_check = tic; + % read internal mem from last send [display.out, display.shm] = matlabclient(2); [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); @@ -118,12 +123,12 @@ while 1 elseif data.data == 41 % ignore elseif data.data == 42 - ref_time = max(ref_time - 0.5, 12.0) + ref_time = max(ref_time - 0.5, 12.0); update_ref_time = true; elseif data.data == 43 % ignore elseif data.data == 44 - ref_time = min(ref_time + 0.5, 15.0) + ref_time = min(ref_time + 0.5, 15.0); update_ref_time = true; end end -- cgit v1.2.1 From 28f73daf8ded62734f9cdbb9db3fcc20d4183cfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 15 Nov 2019 15:22:20 +0100 Subject: Add test for drawing display graphs --- Kod/bilbana/yc4/display/text.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/text.m b/Kod/bilbana/yc4/display/text.m index e31ecc3..b6589d2 100644 --- a/Kod/bilbana/yc4/display/text.m +++ b/Kod/bilbana/yc4/display/text.m @@ -1,6 +1,6 @@ function [pkg] = text(x, y, justification, text) arg1 = [mod(x, 256), x ./ 256, mod(y, 256), y ./ 256]; -arg2 = text; +arg2 = strrep(text, '\n', '|'); arg3 = 0; pkg = get_package(strjoin({'Z', justification}, ''), [arg1 double(arg2) arg3]); -- cgit v1.2.1 From 6f56856ecdcea0f873a154369b4f544cef12f470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 16 Nov 2019 14:04:21 +0100 Subject: Fix put_text --- Kod/bilbana/yc4/display/text.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/text.m b/Kod/bilbana/yc4/display/text.m index b6589d2..8157a65 100644 --- a/Kod/bilbana/yc4/display/text.m +++ b/Kod/bilbana/yc4/display/text.m @@ -1,6 +1,6 @@ -function [pkg] = text(x, y, justification, text) -arg1 = [mod(x, 256), x ./ 256, mod(y, 256), y ./ 256]; -arg2 = strrep(text, '\n', '|'); +function [pkg] = put_text(x, y, justification, text) +arg1 = [get_bytes(x), get_bytes(y)]; +arg2 = text; arg3 = 0; pkg = get_package(strjoin({'Z', justification}, ''), [arg1 double(arg2) arg3]); -- cgit v1.2.1 From b5fb0790fd8c2820eae6c153bf7cd88beeaa0aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Tue, 19 Nov 2019 13:43:13 +0100 Subject: Add get_bars_from_values-function --- Kod/bilbana/yc4/display/get_bars_from_values.m | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Kod/bilbana/yc4/display/get_bars_from_values.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/get_bars_from_values.m b/Kod/bilbana/yc4/display/get_bars_from_values.m new file mode 100644 index 0000000..ff08075 --- /dev/null +++ b/Kod/bilbana/yc4/display/get_bars_from_values.m @@ -0,0 +1,22 @@ +function bars = get_bars_from_values(values1, values2) +bars = []; +for i = 1:9 + bar = struct; + bar.x_lo = 16 + 13 + (30 * i); + bar.x_hi = bar.x_lo; + bar.y_lo = 200; + bar.y_hi = round(152 * (values1(i) / max(values1))); + if isempty(values2) + bar.x_hi = bar.x_lo + 20; + bars = [bars bar1] + else + bar.x_hi = bar.x_lo + 10; + bar2 = struct; + bar2.x_lo = bar.x_lo + 10; + bar2.x_hi = bar2.x_hi + 10; + bar2.y_lo = 200; + bar2.y_hi = round(152 * (values2(i) / max(values2))); + bars = [bars bar1 bar2] + end +end +end -- cgit v1.2.1 From beb0792f35d52cb1f95ecb7c3c4342740b6bc53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 15:10:56 +0100 Subject: Rename conflicting function-names --- Kod/bilbana/yc4/display/clear.m | 3 --- Kod/bilbana/yc4/display/clear_disp.m | 3 +++ Kod/bilbana/yc4/display/draw_line.m | 4 ++++ Kod/bilbana/yc4/display/draw_rectangle.m | 4 ++++ Kod/bilbana/yc4/display/line.m | 4 ---- Kod/bilbana/yc4/display/put_text.m | 7 +++++++ Kod/bilbana/yc4/display/rectangle.m | 4 ---- Kod/bilbana/yc4/display/text.m | 7 ------- 8 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 Kod/bilbana/yc4/display/clear.m create mode 100644 Kod/bilbana/yc4/display/clear_disp.m create mode 100644 Kod/bilbana/yc4/display/draw_line.m create mode 100644 Kod/bilbana/yc4/display/draw_rectangle.m delete mode 100644 Kod/bilbana/yc4/display/line.m create mode 100644 Kod/bilbana/yc4/display/put_text.m delete mode 100644 Kod/bilbana/yc4/display/rectangle.m delete mode 100644 Kod/bilbana/yc4/display/text.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/clear.m b/Kod/bilbana/yc4/display/clear.m deleted file mode 100644 index f921d9c..0000000 --- a/Kod/bilbana/yc4/display/clear.m +++ /dev/null @@ -1,3 +0,0 @@ -function pkg = clear() -pkg = get_package('DL', []); -end diff --git a/Kod/bilbana/yc4/display/clear_disp.m b/Kod/bilbana/yc4/display/clear_disp.m new file mode 100644 index 0000000..70f66c3 --- /dev/null +++ b/Kod/bilbana/yc4/display/clear_disp.m @@ -0,0 +1,3 @@ +function pkg = clear_disp() +pkg = get_package('DL', []); +end diff --git a/Kod/bilbana/yc4/display/draw_line.m b/Kod/bilbana/yc4/display/draw_line.m new file mode 100644 index 0000000..0a43ef7 --- /dev/null +++ b/Kod/bilbana/yc4/display/draw_line.m @@ -0,0 +1,4 @@ +function pkg = draw_line(x1, y1, x2, y2) +arg = [mod(x1, 255), fix(x1 / 255), y1, 0, mod(x2, 255), fix(x2 / 255), y2, 0]; +pkg = get_package('GD', arg); +end diff --git a/Kod/bilbana/yc4/display/draw_rectangle.m b/Kod/bilbana/yc4/display/draw_rectangle.m new file mode 100644 index 0000000..3edff7c --- /dev/null +++ b/Kod/bilbana/yc4/display/draw_rectangle.m @@ -0,0 +1,4 @@ +function pkg = draw_rectangle(x1, y1, x2, y2) +arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +pkg = get_package('GR', arg); +end diff --git a/Kod/bilbana/yc4/display/line.m b/Kod/bilbana/yc4/display/line.m deleted file mode 100644 index f04adaf..0000000 --- a/Kod/bilbana/yc4/display/line.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = line(x1, y1, x2, y2) -arg = [mod(x1, 255), fix(x1 / 255), y1, 0, mod(x2, 255), fix(x2 / 255), y2, 0]; -pkg = get_package('GD', arg); -end diff --git a/Kod/bilbana/yc4/display/put_text.m b/Kod/bilbana/yc4/display/put_text.m new file mode 100644 index 0000000..8157a65 --- /dev/null +++ b/Kod/bilbana/yc4/display/put_text.m @@ -0,0 +1,7 @@ +function [pkg] = put_text(x, y, justification, text) +arg1 = [get_bytes(x), get_bytes(y)]; +arg2 = text; +arg3 = 0; + +pkg = get_package(strjoin({'Z', justification}, ''), [arg1 double(arg2) arg3]); +end diff --git a/Kod/bilbana/yc4/display/rectangle.m b/Kod/bilbana/yc4/display/rectangle.m deleted file mode 100644 index 595b7b7..0000000 --- a/Kod/bilbana/yc4/display/rectangle.m +++ /dev/null @@ -1,4 +0,0 @@ -function pkg = rectangle(x1, y1, x2, y2) -arg = [get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; -pkg = get_package('GR', arg); -end diff --git a/Kod/bilbana/yc4/display/text.m b/Kod/bilbana/yc4/display/text.m deleted file mode 100644 index 8157a65..0000000 --- a/Kod/bilbana/yc4/display/text.m +++ /dev/null @@ -1,7 +0,0 @@ -function [pkg] = put_text(x, y, justification, text) -arg1 = [get_bytes(x), get_bytes(y)]; -arg2 = text; -arg3 = 0; - -pkg = get_package(strjoin({'Z', justification}, ''), [arg1 double(arg2) arg3]); -end -- cgit v1.2.1 From a16acaf17caf06c53c2fc4e7f424f84f7ac4778a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 18:10:28 +0100 Subject: remove todo --- Kod/bilbana/yc4/main.m | 1 - 1 file changed, 1 deletion(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index bfb18a2..0d0f5f1 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -72,7 +72,6 @@ matlabclient(1, get_smallpackage([ ... ])); pause(0.5); matlabclient(1, get_smallpackage([ ... - % TODO ????????????????????????????????????????? put_text(160, 120, 'C', '13.0'), ... % CURRENT REFERENCE TIME define_touch_key( 98 , 110, 130, 140, 41, 42, 'C', '-'), ... % DECREASE REFERENCE TIME define_touch_key( 190, 110, 220, 140, 43, 44, 'C', '+'), ... % INCREASE REFERENCE TIME -- cgit v1.2.1 From 663f441fe7b1186b3ad60b8c8b24998696aa6b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 18:11:01 +0100 Subject: Rename clear_display() --- Kod/bilbana/yc4/display/clear_disp.m | 3 --- Kod/bilbana/yc4/display/clear_display.m | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 Kod/bilbana/yc4/display/clear_disp.m create mode 100644 Kod/bilbana/yc4/display/clear_display.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/clear_disp.m b/Kod/bilbana/yc4/display/clear_disp.m deleted file mode 100644 index 70f66c3..0000000 --- a/Kod/bilbana/yc4/display/clear_disp.m +++ /dev/null @@ -1,3 +0,0 @@ -function pkg = clear_disp() -pkg = get_package('DL', []); -end diff --git a/Kod/bilbana/yc4/display/clear_display.m b/Kod/bilbana/yc4/display/clear_display.m new file mode 100644 index 0000000..45f1680 --- /dev/null +++ b/Kod/bilbana/yc4/display/clear_display.m @@ -0,0 +1,3 @@ +function pkg = clear_display() +pkg = get_package('DL', []); +end -- cgit v1.2.1 From b68d8b291aa539f1f78dfa4c8869d7b528a44746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 18:11:33 +0100 Subject: Work --- Kod/bilbana/yc4/display/get_bars_from_values.m | 46 +++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/get_bars_from_values.m b/Kod/bilbana/yc4/display/get_bars_from_values.m index ff08075..cbae702 100644 --- a/Kod/bilbana/yc4/display/get_bars_from_values.m +++ b/Kod/bilbana/yc4/display/get_bars_from_values.m @@ -1,22 +1,44 @@ -function bars = get_bars_from_values(values1, values2) +function [bars, max_val, min_y, height] = get_bars_from_values(values1, values2) bars = []; + +% CONSTANT VALUES +min_y = 200; +height = 156; +min_x = 16+13; +bar_width = 10; % for a single bar, doubled if only one track +bar_inner_gap_width = 1; % double effect +bar_gap_width = 10; + +% switch 1 and 2 if 1 is empty +if isempty(values1) && ~isempty(values2) + values1 = values2; + values2 = []; +end + +max1 = max(values1); +max2 = 0; +if ~isempty(values2) + max2 = max(values2); +end +max_val = max([max1 max2]); + for i = 1:9 bar = struct; - bar.x_lo = 16 + 13 + (30 * i); + bar.x_lo = min_x + ((bar_width + bar_width + bar_gap_width) * (i-1)); bar.x_hi = bar.x_lo; - bar.y_lo = 200; - bar.y_hi = round(152 * (values1(i) / max(values1))); + bar.y_lo = min_y; + bar.y_hi = min_y - round(height * (values1(i) / max_val)); if isempty(values2) - bar.x_hi = bar.x_lo + 20; - bars = [bars bar1] + bar.x_hi = bar.x_lo + 2*bar_width; + bars = [bars bar]; else - bar.x_hi = bar.x_lo + 10; + bar.x_hi = bar.x_lo + bar_width; bar2 = struct; - bar2.x_lo = bar.x_lo + 10; - bar2.x_hi = bar2.x_hi + 10; - bar2.y_lo = 200; - bar2.y_hi = round(152 * (values2(i) / max(values2))); - bars = [bars bar1 bar2] + bar2.x_lo = bar.x_hi + bar_inner_gap_width*2; + bar2.x_hi = bar2.x_lo + bar_width; + bar2.y_lo = min_y; + bar2.y_hi = min_y - round((height * (values2(i) / max_val))); + bars = [bars bar bar2]; end end end -- cgit v1.2.1 From 7a0bb9ef69a74b67938af164fb541933ee33c9f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 18:11:58 +0100 Subject: Add ; --- Kod/bilbana/yc4/display/continue_line.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/continue_line.m b/Kod/bilbana/yc4/display/continue_line.m index 99b4074..fe863f7 100644 --- a/Kod/bilbana/yc4/display/continue_line.m +++ b/Kod/bilbana/yc4/display/continue_line.m @@ -1,4 +1,4 @@ function pkg = continue_line(x2, y2) arg = [get_bytes(x2), get_bytes(y2)]; -pkg = get_package('GW', arg) +pkg = get_package('GW', arg); end -- cgit v1.2.1 From d963e174c1ab177a934797c87dcb466b2f9ecd19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 18:12:09 +0100 Subject: Changes --- Kod/bilbana/yc4/display/bar_graph.m | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/bar_graph.m b/Kod/bilbana/yc4/display/bar_graph.m index e7c4b2c..bc04406 100644 --- a/Kod/bilbana/yc4/display/bar_graph.m +++ b/Kod/bilbana/yc4/display/bar_graph.m @@ -1,7 +1,6 @@ function pkg = bar_graph(direction, no, x1, y1, x2, y2, start_value, end_value, type, pattern) -pkg = [] -args = [no, get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)] -args = [args, start_value, end_value, type, pattern] %TODO get_bytes or no ? +args = [no, get_bytes(x1), get_bytes(y1), get_bytes(x2), get_bytes(y2)]; +args = [args, start_value, end_value, type, pattern]; %TODO get_bytes or no ? -pkg = get_package(strjoin({'B', direction}, ''), args) +pkg = get_package(strjoin({'B', direction}, ''), args); end -- cgit v1.2.1 From 3f20ff26d0c0082d5fe5a90474545eb440c7ddfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Wed, 20 Nov 2019 18:12:39 +0100 Subject: Add scenes for lap_graph and segment_bars --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 54 ++++++++++++++++++++++ Kod/bilbana/yc4/display/scenes/draw_segment_bars.m | 54 ++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 Kod/bilbana/yc4/display/scenes/draw_lap_graph.m create mode 100644 Kod/bilbana/yc4/display/scenes/draw_segment_bars.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m new file mode 100644 index 0000000..7d9e341 --- /dev/null +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -0,0 +1,54 @@ +function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time) +if isempty(car1_laptimes) + car1_laptimes = car2_laptimes; + car2_laptimes = []; +end + +laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); + +pause(0.2); +matlabclient(1, get_smallpackage(clear_display())); +pause(0.2); + +matlabclient(1, get_smallpackage(put_text(105, 8, 'C', 'Varvtider'))) +pause(0.2); + +matlabclient(1, get_smallpackage([ ... + key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... + key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... + key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... +])); +pause(0.2); + +matlabclient(1, get_smallpackage([ ... + draw_line(20, 24, 20, 200), ... % y-axis + continue_line(304, 200), ... % x-axis + draw_line(16, 32, 20, 24), ... % arrow on y, left part + continue_line(24, 32), ... % arrow on y, right part + draw_line(304, 196, 304, 204) ... % line on x +])); +pause(0.2); + +matlabclient(1, get_smallpackage([ ... + draw_line(190, 0, 190, 70), ... + continue_line(320, 70) ... +])); +pause(0.2); + +matlabclient(1, get_smallpackage(save_display_to_clipboard())); + +%% +matlabclient(1, get_smallpackage(draw_line(20, 103, 320, 103))); +matlabclient(1, get_smallpackage(draw_line(20, 135, 320, 135))); +matlabclient(1, get_smallpackage(draw_line(20, 167, 320, 167))); + +matlabclient(1, ) + +%% +matlabclient(1, get_smallpackage([ + put_text(304, 10, 'R', 'std: x.xxs'), ... + put_text(304, 30, 'R', 'mean: xx.xs'), ... + put_text(304, 50, 'R', 'target: xx.xs') ... +])); +pause(0.2); +end diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m new file mode 100644 index 0000000..fe750a7 --- /dev/null +++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m @@ -0,0 +1,54 @@ +function [] = draw_segment_bars(values1, values2) +pause(0.2); +matlabclient(1, get_smallpackage(clear_display())); +pause(0.2); + +matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Genomsnittlig tid per segment'))) +pause(0.2); + +% input(''); +matlabclient(1, get_smallpackage([ ... + key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... + key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... + key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... +])); +pause(0.2); + +matlabclient(1, get_smallpackage([ ... + draw_line(20, 24, 20, 200), ... % y-axis + continue_line(304, 200), ... % x-axis + draw_line(16, 32, 20, 24), ... % arrow on y, left part + continue_line(24, 32), ... % arrow on y, right part + draw_line(304, 196, 304, 204) ... % line on x +])); +pause(0.2); + +[bars, max_val, min_y, max_height] = get_bars_from_values(values1, values2); + +for bar = bars + matlabclient(1, get_smallpackage(fill_area(bar.x_lo, bar.y_lo, bar.x_hi, bar.y_hi))); + pause(0.2); +end + +for i = 0:8 + x = 16+13 + 10 + 30*i; + matlabclient(1, get_smallpackage(put_text(x, 204, 'C', num2str(i + 1)))); + pause(0.2); +end + +matlabclient(1, get_smallpackage(put_text(9, 25, 'C', 's'))); +pause(0.2); + +% matlabclient(1, get_smallpackage(set_line_pattern(2))) +% pause(0.2); +for i = 1:floor(max_val) + x = 20; + y = min_y - round(max_height * (i/max_val)); + matlabclient(1, get_smallpackage([draw_line(x, y, 320, y), ... + put_text(x-6, y-2, 'C', num2str(i))])); + pause(0.2); +end +% matlabclient(1, get_smallpackage(set_line_pattern(1))) +% pause(0.2); +end + -- cgit v1.2.1 From 4f252cf07c3b5482d78e595aa6cbca33d9e713ab Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 22 Nov 2019 10:27:47 +0100 Subject: Make working --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 7d9e341..67f2d75 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -4,7 +4,7 @@ if isempty(car1_laptimes) car2_laptimes = []; end -laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); +% laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); pause(0.2); matlabclient(1, get_smallpackage(clear_display())); @@ -41,8 +41,7 @@ matlabclient(1, get_smallpackage(save_display_to_clipboard())); matlabclient(1, get_smallpackage(draw_line(20, 103, 320, 103))); matlabclient(1, get_smallpackage(draw_line(20, 135, 320, 135))); matlabclient(1, get_smallpackage(draw_line(20, 167, 320, 167))); - -matlabclient(1, ) +pause(0.2); %% matlabclient(1, get_smallpackage([ -- cgit v1.2.1 From 81beac81fff0c32924f359e0da84990242dfc678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 22 Nov 2019 12:52:56 +0100 Subject: Add work done on lap-graph (and fixes on bar-graph) --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 55 ++++++++++++++-------- Kod/bilbana/yc4/display/scenes/draw_segment_bars.m | 8 +--- 2 files changed, 37 insertions(+), 26 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 67f2d75..3c33ffb 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -10,7 +10,7 @@ pause(0.2); matlabclient(1, get_smallpackage(clear_display())); pause(0.2); -matlabclient(1, get_smallpackage(put_text(105, 8, 'C', 'Varvtider'))) +matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Varvtider'))) pause(0.2); matlabclient(1, get_smallpackage([ ... @@ -21,33 +21,50 @@ matlabclient(1, get_smallpackage([ ... pause(0.2); matlabclient(1, get_smallpackage([ ... - draw_line(20, 24, 20, 200), ... % y-axis - continue_line(304, 200), ... % x-axis + draw_line(20, 24, 20, 144), ... % y-axis + put_text(9, 25, 'C', 's'), ... % label y-axis + continue_line(304, 144), ... % x-axis draw_line(16, 32, 20, 24), ... % arrow on y, left part continue_line(24, 32), ... % arrow on y, right part - draw_line(304, 196, 304, 204) ... % line on x + draw_line(304, 140, 304, 148) ... % line on x ])); pause(0.2); +y = 166; +margin_top = 6; matlabclient(1, get_smallpackage([ ... - draw_line(190, 0, 190, 70), ... - continue_line(320, 70) ... + draw_line(0, y, 320, y), ... + put_text(53 , y + margin_top, 'C', 'target'), ... + put_text(160, y + margin_top, 'C', 'mean'), ... + put_text(266, y + margin_top, 'C', 'std') ... ])); pause(0.2); -matlabclient(1, get_smallpackage(save_display_to_clipboard())); - -%% -matlabclient(1, get_smallpackage(draw_line(20, 103, 320, 103))); -matlabclient(1, get_smallpackage(draw_line(20, 135, 320, 135))); -matlabclient(1, get_smallpackage(draw_line(20, 167, 320, 167))); -pause(0.2); - -%% -matlabclient(1, get_smallpackage([ - put_text(304, 10, 'R', 'std: x.xxs'), ... - put_text(304, 30, 'R', 'mean: xx.xs'), ... - put_text(304, 50, 'R', 'target: xx.xs') ... +line = 12; +matlabclient(1, get_smallpackage([ ... + put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ... + put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... + put_text(53 , y + 2 + margin_top + line*1, 'C', 'xx.x'), ... + put_text(53 , y + 2 + margin_top + line*2, 'C', 'xx.x'), ... + put_text(160, y + 2 + margin_top + line*1, 'C', 'xx.x'), ... + put_text(160, y + 2 + margin_top + line*2, 'C', 'xx.x'), ... + put_text(266, y + 2 + margin_top + line*1, 'C', 'x.xx'), ... + put_text(266, y + 2 + margin_top + line*2, 'C', 'x.xx'), ... ])); pause(0.2); + +times = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]; +for i = 0:(length(times)-1) + x = 28 + i*10; + y = 144 - round(100 * (times(i+1) / max(times))); + matlabclient(1, get_smallpackage([ ... + set_point_size(3, 3), ... + point(x, y), ... + set_point_size(1, 1), ... + draw_line(x, 144-2, x, 144+2) ... + ])); + pause(0.15); +end + +% matlabclient(1, get_smallpackage(save_display_to_clipboard())); end diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m index fe750a7..d778323 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m +++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m @@ -16,6 +16,7 @@ pause(0.2); matlabclient(1, get_smallpackage([ ... draw_line(20, 24, 20, 200), ... % y-axis + put_text(9, 25, 'C', 's'), ... % label y-axis continue_line(304, 200), ... % x-axis draw_line(16, 32, 20, 24), ... % arrow on y, left part continue_line(24, 32), ... % arrow on y, right part @@ -36,11 +37,6 @@ for i = 0:8 pause(0.2); end -matlabclient(1, get_smallpackage(put_text(9, 25, 'C', 's'))); -pause(0.2); - -% matlabclient(1, get_smallpackage(set_line_pattern(2))) -% pause(0.2); for i = 1:floor(max_val) x = 20; y = min_y - round(max_height * (i/max_val)); @@ -48,7 +44,5 @@ for i = 1:floor(max_val) put_text(x-6, y-2, 'C', num2str(i))])); pause(0.2); end -% matlabclient(1, get_smallpackage(set_line_pattern(1))) -% pause(0.2); end -- cgit v1.2.1 From fd263fa24277daa3dc6ffb163edc9879c3e62e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 21:41:15 +0100 Subject: fix indents --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 64 ++++++++++++------------- 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 3c33ffb..139b18f 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -1,7 +1,7 @@ function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time) if isempty(car1_laptimes) - car1_laptimes = car2_laptimes; - car2_laptimes = []; + car1_laptimes = car2_laptimes; + car2_laptimes = []; end % laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); @@ -14,56 +14,56 @@ matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Varvtider'))) pause(0.2); matlabclient(1, get_smallpackage([ ... - key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... - key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... - key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... + key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... + key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... + key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... ])); pause(0.2); matlabclient(1, get_smallpackage([ ... - draw_line(20, 24, 20, 144), ... % y-axis - put_text(9, 25, 'C', 's'), ... % label y-axis - continue_line(304, 144), ... % x-axis - draw_line(16, 32, 20, 24), ... % arrow on y, left part - continue_line(24, 32), ... % arrow on y, right part - draw_line(304, 140, 304, 148) ... % line on x + draw_line(20, 24, 20, 144), ... % y-axis + put_text(9, 25, 'C', 's'), ... % label y-axis + continue_line(304, 144), ... % x-axis + draw_line(16, 32, 20, 24), ... % arrow on y, left part + continue_line(24, 32), ... % arrow on y, right part + draw_line(304, 140, 304, 148) ... % line on x ])); pause(0.2); y = 166; margin_top = 6; matlabclient(1, get_smallpackage([ ... - draw_line(0, y, 320, y), ... - put_text(53 , y + margin_top, 'C', 'target'), ... - put_text(160, y + margin_top, 'C', 'mean'), ... - put_text(266, y + margin_top, 'C', 'std') ... + draw_line(0, y, 320, y), ... + put_text(53 , y + margin_top, 'C', 'target'), ... + put_text(160, y + margin_top, 'C', 'mean'), ... + put_text(266, y + margin_top, 'C', 'std') ... ])); pause(0.2); line = 12; matlabclient(1, get_smallpackage([ ... - put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ... - put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... - put_text(53 , y + 2 + margin_top + line*1, 'C', 'xx.x'), ... - put_text(53 , y + 2 + margin_top + line*2, 'C', 'xx.x'), ... - put_text(160, y + 2 + margin_top + line*1, 'C', 'xx.x'), ... - put_text(160, y + 2 + margin_top + line*2, 'C', 'xx.x'), ... - put_text(266, y + 2 + margin_top + line*1, 'C', 'x.xx'), ... - put_text(266, y + 2 + margin_top + line*2, 'C', 'x.xx'), ... + put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ... + put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... + put_text(53 , y + 2 + margin_top + line*1, 'C', 'xx.x'), ... + put_text(53 , y + 2 + margin_top + line*2, 'C', 'xx.x'), ... + put_text(160, y + 2 + margin_top + line*1, 'C', 'xx.x'), ... + put_text(160, y + 2 + margin_top + line*2, 'C', 'xx.x'), ... + put_text(266, y + 2 + margin_top + line*1, 'C', 'x.xx'), ... + put_text(266, y + 2 + margin_top + line*2, 'C', 'x.xx'), ... ])); pause(0.2); times = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]; for i = 0:(length(times)-1) - x = 28 + i*10; - y = 144 - round(100 * (times(i+1) / max(times))); - matlabclient(1, get_smallpackage([ ... - set_point_size(3, 3), ... - point(x, y), ... - set_point_size(1, 1), ... - draw_line(x, 144-2, x, 144+2) ... - ])); - pause(0.15); +x = 28 + i*10; +y = 144 - round(100 * (times(i+1) / max(times))); +matlabclient(1, get_smallpackage([ ... + set_point_size(3, 3), ... + point(x, y), ... + set_point_size(1, 1), ... + draw_line(x, 144-2, x, 144+2) ... +])); +pause(0.15); end % matlabclient(1, get_smallpackage(save_display_to_clipboard())); -- cgit v1.2.1 From 49f712d1a24fba77a1f775af2333855849ddd87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 21:43:32 +0100 Subject: fix indents --- Kod/bilbana/yc4/display/scenes/draw_segment_bars.m | 50 +++++++++++----------- 1 file changed, 26 insertions(+), 24 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m index d778323..f2703b2 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m +++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m @@ -1,48 +1,50 @@ function [] = draw_segment_bars(values1, values2) -pause(0.2); +dt = 0.2; + +pause(dt); matlabclient(1, get_smallpackage(clear_display())); -pause(0.2); +pause(dt); matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Genomsnittlig tid per segment'))) -pause(0.2); +pause(dt); % input(''); matlabclient(1, get_smallpackage([ ... - key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... - key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... - key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... + key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... + key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... + key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... ])); -pause(0.2); +pause(dt); matlabclient(1, get_smallpackage([ ... - draw_line(20, 24, 20, 200), ... % y-axis - put_text(9, 25, 'C', 's'), ... % label y-axis - continue_line(304, 200), ... % x-axis - draw_line(16, 32, 20, 24), ... % arrow on y, left part - continue_line(24, 32), ... % arrow on y, right part - draw_line(304, 196, 304, 204) ... % line on x + draw_line(20, 24, 20, 200), ... % y-axis + put_text(9, 25, 'C', 's'), ... % label y-axis + continue_line(304, 200), ... % x-axis + draw_line(16, 32, 20, 24), ... % arrow on y, left part + continue_line(24, 32), ... % arrow on y, right part + draw_line(304, 196, 304, 204) ... % line on x ])); -pause(0.2); +pause(dt); [bars, max_val, min_y, max_height] = get_bars_from_values(values1, values2); for bar = bars - matlabclient(1, get_smallpackage(fill_area(bar.x_lo, bar.y_lo, bar.x_hi, bar.y_hi))); - pause(0.2); + matlabclient(1, get_smallpackage(fill_area(bar.x_lo, bar.y_lo, bar.x_hi, bar.y_hi))); + pause(dt); end for i = 0:8 - x = 16+13 + 10 + 30*i; - matlabclient(1, get_smallpackage(put_text(x, 204, 'C', num2str(i + 1)))); - pause(0.2); + x = 16+13 + 10 + 30*i; + matlabclient(1, get_smallpackage(put_text(x, 204, 'C', num2str(i + 1)))); + pause(dt); end for i = 1:floor(max_val) - x = 20; - y = min_y - round(max_height * (i/max_val)); - matlabclient(1, get_smallpackage([draw_line(x, y, 320, y), ... - put_text(x-6, y-2, 'C', num2str(i))])); - pause(0.2); + x = 20; + y = min_y - round(max_height * (i/max_val)); + matlabclient(1, get_smallpackage([draw_line(x, y, 320, y), ... + put_text(x-6, y-2, 'C', num2str(i))])); + pause(dt); end end -- cgit v1.2.1 From 81cf6bfafcb7b3f09a2627e57bb540b803d55df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 21:47:47 +0100 Subject: Group packages together --- Kod/bilbana/yc4/display/scenes/draw_segment_bars.m | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m index f2703b2..4aaf42f 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m +++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m @@ -1,5 +1,6 @@ function [] = draw_segment_bars(values1, values2) -dt = 0.2; +dt = 0.2; % delay for display +queue = []; % internal queue for packages to send to display pause(dt); matlabclient(1, get_smallpackage(clear_display())); @@ -35,8 +36,12 @@ end for i = 0:8 x = 16+13 + 10 + 30*i; - matlabclient(1, get_smallpackage(put_text(x, 204, 'C', num2str(i + 1)))); - pause(dt); + queue = [queue put_text(x, 204, 'C', num2str(i + 1))] + if i == 4 or i == 8 + matlabclient(1, get_smallpackage(queue)); + queue = []; + pause(dt); + end end for i = 1:floor(max_val) -- cgit v1.2.1 From 78ce5f87fbc4b538a159f4f7fc4663475a135186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 21:48:10 +0100 Subject: Fix indents --- Kod/bilbana/yc4/display/scenes/draw_segment_bars.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m index 4aaf42f..f34aa04 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m +++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m @@ -47,8 +47,10 @@ end for i = 1:floor(max_val) x = 20; y = min_y - round(max_height * (i/max_val)); - matlabclient(1, get_smallpackage([draw_line(x, y, 320, y), ... - put_text(x-6, y-2, 'C', num2str(i))])); + matlabclient(1, get_smallpackage([... + draw_line(x, y, 320, y), ... + put_text(x-6, y-2, 'C', num2str(i))... + ])); pause(dt); end end -- cgit v1.2.1 From f43db367ecbc2fe0bf2f787e085ed76edbe44898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 21:48:47 +0100 Subject: Add dt parameter --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 139b18f..704dee0 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -1,4 +1,6 @@ function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time) +dt = 0.2; % delay for display + if isempty(car1_laptimes) car1_laptimes = car2_laptimes; car2_laptimes = []; @@ -6,19 +8,19 @@ end % laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); -pause(0.2); +pause(dt); matlabclient(1, get_smallpackage(clear_display())); -pause(0.2); +pause(dt); matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Varvtider'))) -pause(0.2); +pause(dt); matlabclient(1, get_smallpackage([ ... key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... ])); -pause(0.2); +pause(dt); matlabclient(1, get_smallpackage([ ... draw_line(20, 24, 20, 144), ... % y-axis @@ -28,7 +30,7 @@ matlabclient(1, get_smallpackage([ ... continue_line(24, 32), ... % arrow on y, right part draw_line(304, 140, 304, 148) ... % line on x ])); -pause(0.2); +pause(dt); y = 166; margin_top = 6; @@ -38,7 +40,7 @@ matlabclient(1, get_smallpackage([ ... put_text(160, y + margin_top, 'C', 'mean'), ... put_text(266, y + margin_top, 'C', 'std') ... ])); -pause(0.2); +pause(dt); line = 12; matlabclient(1, get_smallpackage([ ... @@ -51,7 +53,7 @@ matlabclient(1, get_smallpackage([ ... put_text(266, y + 2 + margin_top + line*1, 'C', 'x.xx'), ... put_text(266, y + 2 + margin_top + line*2, 'C', 'x.xx'), ... ])); -pause(0.2); +pause(dt); times = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]; for i = 0:(length(times)-1) -- cgit v1.2.1 From fb66785644345d64ac27f53a8ba9b356b363b1cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 22:01:16 +0100 Subject: Strip empty values from laps --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 704dee0..ec7d6dc 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -6,6 +6,24 @@ if isempty(car1_laptimes) car2_laptimes = []; end + +%% strip empty values +tmp = []; +for i = 1:length(car1_laptimes) + if car1_laptimes(i) ~= 0 + tmp = [tmp car1_laptimes(i)]; + end +end +car1_laptimes = tmp; + +tmp = []; +for i = 1:length(car2_laptimes) + if car2_laptimes(i) ~= 0 + tmp = [tmp car2_laptimes(i)]; + end +end +car2_laptimes = tmp; + % laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); pause(dt); -- cgit v1.2.1 From 457b052ca449b0653368c81e4218b20d76cd515a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 22:02:03 +0100 Subject: Use calculated values for ref, mean and std --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index ec7d6dc..8c7a5d0 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -64,12 +64,12 @@ line = 12; matlabclient(1, get_smallpackage([ ... put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ... put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... - put_text(53 , y + 2 + margin_top + line*1, 'C', 'xx.x'), ... - put_text(53 , y + 2 + margin_top + line*2, 'C', 'xx.x'), ... - put_text(160, y + 2 + margin_top + line*1, 'C', 'xx.x'), ... - put_text(160, y + 2 + margin_top + line*2, 'C', 'xx.x'), ... - put_text(266, y + 2 + margin_top + line*1, 'C', 'x.xx'), ... - put_text(266, y + 2 + margin_top + line*2, 'C', 'x.xx'), ... + put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ... + put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ... + put_text(160, y + 2 + margin_top + line*1, 'C', num2str(mean(car1_laptimes), 1)), ... + put_text(160, y + 2 + margin_top + line*2, 'C', num2str(mean(car2_laptimes), 1), ... + put_text(266, y + 2 + margin_top + line*1, 'C', num2str(std(car1_laptimes), 2)), ... + put_text(266, y + 2 + margin_top + line*2, 'C', num2str(std(car2_laptimes), 2)), ... ])); pause(dt); -- cgit v1.2.1 From d195a43eef3817d6a1f926725eeaba6770345c17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sat, 23 Nov 2019 23:05:05 +0100 Subject: more work --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 157 ++++++++++++++++-------- Kod/bilbana/yc4/main.m | 68 ++-------- 2 files changed, 116 insertions(+), 109 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 8c7a5d0..68cfecf 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -1,11 +1,28 @@ -function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time) +function [] = draw_lap_graph(car1_laptimes, car2_laptimes, ref_time, change_car) dt = 0.2; % delay for display -if isempty(car1_laptimes) - car1_laptimes = car2_laptimes; - car2_laptimes = []; +% don't have to re-draw static elements, just the graphs +persistent in_clipboard; +if is_empty(in_clipboard) + in_clipboard = false; end +% draw the other car every time the function is called if the change_car flag is set +% this value is ignored if only one set of lap times are given +persistent current_car; +if is_empty(current_car) + % first call to function + current_car = 1; +else + % switch current_car + if change_car + if current_car == 1 + current_car = 2; + else + current_car = 1; + end + end +end %% strip empty values tmp = []; @@ -24,67 +41,103 @@ for i = 1:length(car2_laptimes) end car2_laptimes = tmp; -% laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); - pause(dt); matlabclient(1, get_smallpackage(clear_display())); pause(dt); -matlabclient(1, get_smallpackage(put_text(160, 8, 'C', 'Varvtider'))) -pause(dt); +% laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); +if ~(in_clipboard) + matlabclient(1, get_smallpackage([ ... + put_text(160, 8, 'C', 'Varvtider'), ... + key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... + key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... + key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta'), ... + key(300, 0 , 320, 24 , 70, 71, 'C', 'Byt bil') ... + ])); + pause(dt); -matlabclient(1, get_smallpackage([ ... - key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... - key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... - key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta') ... -])); -pause(dt); + matlabclient(1, get_smallpackage([ ... + draw_line(20, 24, 20, 144), ... % y-axis + put_text(9, 25, 'C', 's'), ... % label y-axis + continue_line(304, 144), ... % x-axis + draw_line(16, 32, 20, 24), ... % arrow on y, left part + continue_line(24, 32), ... % arrow on y, right part + draw_line(304, 140, 304, 148) ... % line on x + ])); + pause(dt); -matlabclient(1, get_smallpackage([ ... - draw_line(20, 24, 20, 144), ... % y-axis - put_text(9, 25, 'C', 's'), ... % label y-axis - continue_line(304, 144), ... % x-axis - draw_line(16, 32, 20, 24), ... % arrow on y, left part - continue_line(24, 32), ... % arrow on y, right part - draw_line(304, 140, 304, 148) ... % line on x -])); -pause(dt); + y = 166; + margin_top = 6; + matlabclient(1, get_smallpackage([ ... + draw_line(0, y, 320, y), ... + put_text(53 , y + margin_top, 'C', 'target'), ... + put_text(160, y + margin_top, 'C', 'mean'), ... + put_text(266, y + margin_top, 'C', 'std') ... + ])); + pause(dt); -y = 166; -margin_top = 6; -matlabclient(1, get_smallpackage([ ... - draw_line(0, y, 320, y), ... - put_text(53 , y + margin_top, 'C', 'target'), ... - put_text(160, y + margin_top, 'C', 'mean'), ... - put_text(266, y + margin_top, 'C', 'std') ... -])); -pause(dt); + car1 = struct; + car1.avg = '--.-' + car1.dev = '-.--' + if ~isempty(car1_laptimes) + car1.avg = num2str(mean(car1_laptimes), 1); + car1.dev = num2str(std(car1_laptimes), 2); + end + car2 = struct; + car2.avg = '--.-' + car2.dev = '-.--' + if ~isempty(car2_laptimes) + car2.avg = num2str(mean(car2_laptimes), 1); + car2.dev = num2str(std(car2_laptimes), 2); + end -line = 12; -matlabclient(1, get_smallpackage([ ... - put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ... - put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... - put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ... - put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ... - put_text(160, y + 2 + margin_top + line*1, 'C', num2str(mean(car1_laptimes), 1)), ... - put_text(160, y + 2 + margin_top + line*2, 'C', num2str(mean(car2_laptimes), 1), ... - put_text(266, y + 2 + margin_top + line*1, 'C', num2str(std(car1_laptimes), 2)), ... - put_text(266, y + 2 + margin_top + line*2, 'C', num2str(std(car2_laptimes), 2)), ... -])); -pause(dt); + line = 12; + matlabclient(1, get_smallpackage([ ... + put_text(6 , y + 3 + margin_top + line*1, 'L', '1'), ... + put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... + put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ... + put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ... + put_text(160, y + 2 + margin_top + line*1, 'C', car1.avg)), ... + put_text(160, y + 2 + margin_top + line*2, 'C', car2.avg)), ... + put_text(266, y + 2 + margin_top + line*1, 'C', car1.dev)), ... + put_text(266, y + 2 + margin_top + line*2, 'C', car2.dev)), ... + ])); + pause(dt); + + matlabclient(1, get_smallpackage(save_display_to_clipboard())); + pause(dt); +else + matlabclient(1, get_smallpackage(restore_display_from_clipboard())); + pause(dt); +end + +times = []; +car = 0; +if current_car == 1 && ~isempty(car1_laptimes) + times = car1_laptimes; + car = 1; +elseif current_car == 2 && ~isempty(car2_laptimes) + times = car2_laptimes; + car = 2; +elseif ~isempty(car1_laptimes) + times = car1_laptimes; + car = 1; +elseif ~isempty(car2_laptimes) + times = car2_laptimes; + car = 2 +else + % not supposed to get here +end -times = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]; for i = 0:(length(times)-1) -x = 28 + i*10; -y = 144 - round(100 * (times(i+1) / max(times))); -matlabclient(1, get_smallpackage([ ... + x = 28 + i*10; + y = 144 - round(100 * (times(i+1) / max(times))); + matlabclient(1, get_smallpackage([ ... set_point_size(3, 3), ... point(x, y), ... set_point_size(1, 1), ... draw_line(x, 144-2, x, 144+2) ... -])); -pause(0.15); + ])); + pause(dt); end - -% matlabclient(1, get_smallpackage(save_display_to_clipboard())); end diff --git a/Kod/bilbana/yc4/main.m b/Kod/bilbana/yc4/main.m index 0d0f5f1..64951aa 100644 --- a/Kod/bilbana/yc4/main.m +++ b/Kod/bilbana/yc4/main.m @@ -69,15 +69,15 @@ matlabclient(1, get_smallpackage([ ... define_touch_switch(102, 98 , 126, 122, 13, 14, 'C', 'M'), ... % MANUAL CONTROL TRACK 1 define_touch_switch(190, 60 , 222, 90 , 21, 22, 'C', '2'), ... % ACTIVATE TRACK 2 define_touch_switch(194, 98 , 218, 122, 23, 61, 'C', 'M') ... % MANUAL CONTROL TRACK 2 -])); + ])); pause(0.5); matlabclient(1, get_smallpackage([ ... - put_text(160, 120, 'C', '13.0'), ... % CURRENT REFERENCE TIME + put_text(160, 120, 'C', '13.0'), ... % CURRENT REFERENCE TIME define_touch_key( 98 , 110, 130, 140, 41, 42, 'C', '-'), ... % DECREASE REFERENCE TIME define_touch_key( 190, 110, 220, 140, 43, 44, 'C', '+'), ... % INCREASE REFERENCE TIME define_touch_key( 272, 192, 304, 224, 31, 32, 'C', 'S') ... % START BUTTON %TODO CLEAR BUTTON -])); + ])); %% CHECK DISPLAY BUTTONS display.last_check = tic; @@ -85,8 +85,8 @@ done = false; while 1 pause(0.1); if toc(display.last_check) > 0.4 - display.last_check = tic; - + display.last_check = tic; + % read internal mem from last send [display.out, display.shm] = matlabclient(2); [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); @@ -146,9 +146,9 @@ end ref_time = input('Vilken referenstid ska användas? [13] ', 's'); ref_time = str2double(ref_time); if isnan(ref_time) - ref_time = 13; -elseif not(isreal(ref_time)) - ref_time = 13; + ref_time = 13; + elseif not(isreal(ref_time)) + ref_time = 13; end %} @@ -181,52 +181,6 @@ while 1 disp('stopped by car 2'); break; end -<<<<<<< HEAD - - %% END OF LOOP - while 1 %Whileloop med paus som k�rs till pausen �verskridit 0.07 sekunder - % DISPLAY - display.send_delay = tic; - if toc(display.last_send) > display.send_interval - % queue control signal - if car1.running && car1.automatic - % display.data = [display.data, put_text(20, 16 + (16 * 1), 'L', num2str(car1.u))]; - end - if car2.running && car2.automatic - % display.data = [display.data, put_text(20, 16 + (16 * 2), 'L', num2str(car2.u))]; - display.data = [display.data, update_bar_graph(2, car2.u)]; - end - - % send all queued data - if ~isempty(display.data) - [display.out] = matlabclient(1, get_smallpackage(display.data)); - display.data = []; - end - display.last_send = tic; - - % read internal mem from last send - [display.out, display.shm] = matlabclient(2); - [display.shm_interp.ack, display.shm_interp.start_code, display.shm_interp.data] = get_response(display.shm); - - % request internal mem - % matlabclient(1, hex2dec(['12'; '01'; '53'; '66'])); - end - % disp(strjoin({'display took additional ', num2str(toc(display.send_delay))})); - % ACTUAL END OF LOOP - t = toc(readTime); - - if t > 0.07 - if t > highToc - highToc = t; %Om det nya v�rdet p� pausen �r h�gre �n den tidigare h�gsta s� sparas det som den h�gsta - end - if t > 0.1 - % beep; - end - break; - end - pause(0.001); - end -======= %% END OF LOOP while 1 %Whileloop med paus som k�rs till pausen �verskridit 0.07 sekunder @@ -235,10 +189,11 @@ while 1 if toc(display.last_send) > display.send_interval % queue control signal if car1.running && car1.automatic - display.data = [display.data, put_text(20, 16 + (16 * 1), 'L', num2str(car1.u))]; + % display.data = [display.data, put_text(20, 16 + (16 * 1), 'L', num2str(car1.u))]; end if car2.running && car2.automatic - display.data = [display.data, put_text(20, 16 + (16 * 2), 'L', num2str(car2.u))]; + % display.data = [display.data, put_text(20, 16 + (16 * 2), 'L', num2str(car2.u))]; + display.data = [display.data, update_bar_graph(2, car2.u)]; end % send all queued data @@ -270,7 +225,6 @@ while 1 end pause(0.001); end ->>>>>>> respond to buttons pressed + indents end %% END OF PROGRAM -- cgit v1.2.1 From e408d845a53e6fd843476bd18eb3eb6f93de313f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 24 Nov 2019 15:05:58 +0100 Subject: Add clamp.m --- Kod/bilbana/yc4/clamp.m | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Kod/bilbana/yc4/clamp.m (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/clamp.m b/Kod/bilbana/yc4/clamp.m new file mode 100644 index 0000000..97d21a5 --- /dev/null +++ b/Kod/bilbana/yc4/clamp.m @@ -0,0 +1,6 @@ +function val = clamp(m, n, M) +% returns n if n is between m and M, otherwise + % m if n < m + % M if n > m +val = min(max(m, n), N) +end -- cgit v1.2.1 From e9c9b820042ddc6848c508bc43702efe7391b950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 24 Nov 2019 15:06:03 +0100 Subject: Draw points according to lap_times --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 47 ++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 5 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 68cfecf..8323dad 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -8,7 +8,7 @@ if is_empty(in_clipboard) end % draw the other car every time the function is called if the change_car flag is set -% this value is ignored if only one set of lap times are given +% (this value is ignored if only one set of lap times are given) persistent current_car; if is_empty(current_car) % first call to function @@ -45,7 +45,7 @@ pause(dt); matlabclient(1, get_smallpackage(clear_display())); pause(dt); -% laps = max(length(graphs.car1.lap_times), length(graphs.car2.lap_times)); +%% DRAW STATICS (OR COPY STATICS FROM CLIPBOARD) if ~(in_clipboard) matlabclient(1, get_smallpackage([ ... put_text(160, 8, 'C', 'Varvtider'), ... @@ -111,7 +111,24 @@ else pause(dt); end +%% DRAW GRAPH FOR CAR + +laps = -1 +% want to keep the same scale in x-axis for both cars so set laps to max of both +laps = max(length(car1_laptimes), length(car2_laptimes)) % TODO check if max([]) == 0 +x_min = 20; +dx_max = 260; +% x[lap] = x_min + (dx_max * (i / laps))) + +y_min_val = ref_time - 1.5; % val for lowest y +y_max_val = ref_time + 1.5; % val for highest y +y_min = 144; +dy_max = -50; +y_mid = y_min + (dy_max) +% y[lap] = clamp(y_min, y_mid + (dy_max * (lap[i] / ref_time)), y_min + 2*dy_max) + times = []; +% choose which lap-times to graph car = 0; if current_car == 1 && ~isempty(car1_laptimes) times = car1_laptimes; @@ -119,6 +136,7 @@ if current_car == 1 && ~isempty(car1_laptimes) elseif current_car == 2 && ~isempty(car2_laptimes) times = car2_laptimes; car = 2; +% ignore current_car and choose the only carn_laptimes that exist elseif ~isempty(car1_laptimes) times = car1_laptimes; car = 1; @@ -129,9 +147,12 @@ else % not supposed to get here end -for i = 0:(length(times)-1) - x = 28 + i*10; - y = 144 - round(100 * (times(i+1) / max(times))); +for i = 1:(length(times)) + x = round(x_min + (dx_max * (i/laps))); + y = clamp(y_min, ... + round(y_mid + (dy_max * (times(i) / ref_time))), ... + y_min + 2*dy_max ... + ); matlabclient(1, get_smallpackage([ ... set_point_size(3, 3), ... point(x, y), ... @@ -140,4 +161,20 @@ for i = 0:(length(times)-1) ])); pause(dt); end +max_lap_nums = 9; +d_lap = floor(laps/max_lap_nums) + 1; +% examples: +% laps = 8 + % d_lap = floor(8/9) + 1 = 0 + 1 = 1 +% laps = 10 + % d_lap = floor(10/9) + 1 = 1 + 1 = 2 +for i = 1:(length(times)) + if mod(i, d_lap) == 0 + x = round(x_min + (dx_max * (i/laps))); + y = y_min + 4; + matlabclient(1, get_smallpackage([ ... + put_text(x, y, 'C', num2str(i)) ... + ])); + end +end end -- cgit v1.2.1 From 28de2319217341f7dd2ce8b8ecc091328a60eeaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 25 Nov 2019 10:24:03 +0100 Subject: std -> stdev --- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index 8323dad..b67b6f0 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -24,7 +24,7 @@ else end end -%% strip empty values +%% STRIP EMPTY VALUES tmp = []; for i = 1:length(car1_laptimes) if car1_laptimes(i) ~= 0 @@ -72,7 +72,7 @@ if ~(in_clipboard) draw_line(0, y, 320, y), ... put_text(53 , y + margin_top, 'C', 'target'), ... put_text(160, y + margin_top, 'C', 'mean'), ... - put_text(266, y + margin_top, 'C', 'std') ... + put_text(266, y + margin_top, 'C', 'stdev') ... ])); pause(dt); -- cgit v1.2.1 From 2246ff7466c252dff4e22ed894dee3f152f0f4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 25 Nov 2019 12:34:32 +0100 Subject: Changes - Add semicolons - Fix clamp - Fix syntax - Make testing (somewhat) modular --- Kod/bilbana/yc4/clamp.m | 4 +- Kod/bilbana/yc4/display/scenes/draw_lap_graph.m | 43 ++++++++++++---------- Kod/bilbana/yc4/display/scenes/draw_segment_bars.m | 4 +- 3 files changed, 27 insertions(+), 24 deletions(-) (limited to 'Kod/bilbana') diff --git a/Kod/bilbana/yc4/clamp.m b/Kod/bilbana/yc4/clamp.m index 97d21a5..78ddedd 100644 --- a/Kod/bilbana/yc4/clamp.m +++ b/Kod/bilbana/yc4/clamp.m @@ -1,6 +1,6 @@ -function val = clamp(m, n, M) +function val = clamp(n, m, M) % returns n if n is between m and M, otherwise % m if n < m % M if n > m -val = min(max(m, n), N) +val = min(max(n, m), M); end diff --git a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m index b67b6f0..ebee57e 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m +++ b/Kod/bilbana/yc4/display/scenes/draw_lap_graph.m @@ -3,18 +3,19 @@ dt = 0.2; % delay for display % don't have to re-draw static elements, just the graphs persistent in_clipboard; -if is_empty(in_clipboard) +if isempty(in_clipboard) in_clipboard = false; end % draw the other car every time the function is called if the change_car flag is set % (this value is ignored if only one set of lap times are given) persistent current_car; -if is_empty(current_car) +if isempty(current_car) % first call to function current_car = 1; else % switch current_car + disp('switching current car'); if change_car if current_car == 1 current_car = 2; @@ -52,7 +53,7 @@ if ~(in_clipboard) key(0 , 216, 107, 240, 51, 61, 'C', 'Varv'), ... key(107, 216, 213, 240, 52, 62, 'C', 'Segment'), ... key(213, 216, 320, 240, 53, 63, 'C', 'Avsluta'), ... - key(300, 0 , 320, 24 , 70, 71, 'C', 'Byt bil') ... + key(260, 0 , 320, 24 , 70, 71, 'C', 'Byt bil') ... ])); pause(dt); @@ -77,17 +78,17 @@ if ~(in_clipboard) pause(dt); car1 = struct; - car1.avg = '--.-' - car1.dev = '-.--' + car1.avg = '--.-'; + car1.dev = '-.--'; if ~isempty(car1_laptimes) - car1.avg = num2str(mean(car1_laptimes), 1); + car1.avg = num2str(mean(car1_laptimes), 3); car1.dev = num2str(std(car1_laptimes), 2); end car2 = struct; - car2.avg = '--.-' - car2.dev = '-.--' + car2.avg = '--.-'; + car2.dev = '-.--'; if ~isempty(car2_laptimes) - car2.avg = num2str(mean(car2_laptimes), 1); + car2.avg = num2str(mean(car2_laptimes), 3); car2.dev = num2str(std(car2_laptimes), 2); end @@ -97,10 +98,10 @@ if ~(in_clipboard) put_text(6 , y + 3 + margin_top + line*2, 'L', '2'), ... put_text(53 , y + 2 + margin_top + line*1, 'C', num2str(ref_time)), ... put_text(53 , y + 2 + margin_top + line*2, 'C', num2str(ref_time)), ... - put_text(160, y + 2 + margin_top + line*1, 'C', car1.avg)), ... - put_text(160, y + 2 + margin_top + line*2, 'C', car2.avg)), ... - put_text(266, y + 2 + margin_top + line*1, 'C', car1.dev)), ... - put_text(266, y + 2 + margin_top + line*2, 'C', car2.dev)), ... + put_text(160, y + 2 + margin_top + line*1, 'C', car1.avg), ... + put_text(160, y + 2 + margin_top + line*2, 'C', car2.avg), ... + put_text(266, y + 2 + margin_top + line*1, 'C', car1.dev), ... + put_text(266, y + 2 + margin_top + line*2, 'C', car2.dev), ... ])); pause(dt); @@ -113,9 +114,9 @@ end %% DRAW GRAPH FOR CAR -laps = -1 +laps = -1; % want to keep the same scale in x-axis for both cars so set laps to max of both -laps = max(length(car1_laptimes), length(car2_laptimes)) % TODO check if max([]) == 0 +laps = max(length(car1_laptimes), length(car2_laptimes)); % TODO check if max([]) == 0 x_min = 20; dx_max = 260; % x[lap] = x_min + (dx_max * (i / laps))) @@ -124,7 +125,8 @@ y_min_val = ref_time - 1.5; % val for lowest y y_max_val = ref_time + 1.5; % val for highest y y_min = 144; dy_max = -50; -y_mid = y_min + (dy_max) +max_diff_val = 1; +y_mid = y_min + (dy_max); % y[lap] = clamp(y_min, y_mid + (dy_max * (lap[i] / ref_time)), y_min + 2*dy_max) times = []; @@ -142,16 +144,16 @@ elseif ~isempty(car1_laptimes) car = 1; elseif ~isempty(car2_laptimes) times = car2_laptimes; - car = 2 + car = 2; else % not supposed to get here end for i = 1:(length(times)) x = round(x_min + (dx_max * (i/laps))); - y = clamp(y_min, ... - round(y_mid + (dy_max * (times(i) / ref_time))), ... - y_min + 2*dy_max ... + y = clamp(round(y_mid + dy_max), ... + round(y_mid + (dy_max * ((times(i) - ref_time) / max_diff_val))), ... + round(y_mid - dy_max) ... ); matlabclient(1, get_smallpackage([ ... set_point_size(3, 3), ... @@ -175,6 +177,7 @@ for i = 1:(length(times)) matlabclient(1, get_smallpackage([ ... put_text(x, y, 'C', num2str(i)) ... ])); + pause(dt); end end end diff --git a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m index f34aa04..6df2dab 100644 --- a/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m +++ b/Kod/bilbana/yc4/display/scenes/draw_segment_bars.m @@ -36,8 +36,8 @@ end for i = 0:8 x = 16+13 + 10 + 30*i; - queue = [queue put_text(x, 204, 'C', num2str(i + 1))] - if i == 4 or i == 8 + queue = [queue put_text(x, 204, 'C', num2str(i + 1))]; + if i == 4 || i == 8 matlabclient(1, get_smallpackage(queue)); queue = []; pause(dt); -- cgit v1.2.1