Refresh CLI output by input.

Change-Id: I3257d418e3af3d668d17d2c16e1bd7ec9d2b01ea
This commit is contained in:
Shuhei Iitsuka
2018-09-12 15:44:04 +09:00
parent 4b1db14aef
commit ba11dcdf60
4 changed files with 26 additions and 7 deletions

View File

@@ -31,8 +31,10 @@ LED_CHASSIS.off()
import argparse import argparse
import os import os
import unicodedata
from nazoru import get_default_graph_path from nazoru import get_default_graph_path
from nazoru.core import create_keyboard_recorder, Bluetooth, NazoruPredictor from nazoru.core import (
create_keyboard_recorder, Bluetooth, NazoruPredictor, clear_screen)
def main(): def main():
FLAGS = None FLAGS = None
@@ -60,7 +62,7 @@ def main():
LED_BLUE.blink(1) LED_BLUE.blink(1)
LED_CHASSIS.set_brightness(5) LED_CHASSIS.set_brightness(5)
print('Ready. Please input your scrrible.') print('Ready. Please scrrible on your keyboard.')
while True: while True:
data, command = recorder.record() data, command = recorder.record()
if command is not None: if command is not None:
@@ -86,13 +88,19 @@ def main():
LED_RED.off() LED_RED.off()
LED_CHASSIS.set_brightness(5) LED_CHASSIS.set_brightness(5)
print('\n=== RESULTS ===') clear_screen()
print('\n===== RESULTS =====')
for item in result: for item in result:
print(u'%s (%s): %.5f' % (item[0], item[1], item[2])) if unicodedata.east_asian_width(item[0]) in {'W', 'F'}:
print('===============\n') surface = item[0]
else:
surface = item[0] + ' '
print(u'%s (%4s): %.5f' % (surface, item[1], item[2]))
print('===================\n')
most_likely_result = result[0] most_likely_result = result[0]
print(u'%s (%s)' % (most_likely_result[0], most_likely_result[1])) print(u'prediction: %s (%s)' % (
most_likely_result[0], most_likely_result[1]))
bt_connection.send(most_likely_result[1]) bt_connection.send(most_likely_result[1])
if __name__ == '__main__': if __name__ == '__main__':

View File

@@ -23,4 +23,4 @@ from .nazorunet import nazorunet
from .nazorunet import Conv from .nazorunet import Conv
from .nazorunet import DepthSepConv from .nazorunet import DepthSepConv
from .predictor import NazoruPredictor from .predictor import NazoruPredictor
from .utils import clear_screen

View File

@@ -23,6 +23,7 @@ import os
import struct import struct
import sys import sys
import termios import termios
from .utils import clear_screen
try: try:
import evdev import evdev
@@ -130,10 +131,12 @@ class KeyboardRecorderFromConsole(KeyboardRecorder):
if not recording: if not recording:
recording = True recording = True
start_time = datetime.datetime.now() start_time = datetime.datetime.now()
clear_screen()
elapsed_time = now - start_time elapsed_time = now - start_time
elapsed_ms = int(elapsed_time.total_seconds() * 1000) elapsed_ms = int(elapsed_time.total_seconds() * 1000)
last_time = now last_time = now
data.append((key, elapsed_ms)) data.append((key, elapsed_ms))
sys.stdout.write('%s\r' % (' '.join(datum[0] for datum in data)))
self.log(key, elapsed_ms) self.log(key, elapsed_ms)
if last_time and (now - last_time).total_seconds() > wait_seconds: if last_time and (now - last_time).total_seconds() > wait_seconds:
break break
@@ -260,6 +263,8 @@ class KeyboardRecorderFromEvdev(KeyboardRecorder):
start_time = now start_time = now
elapsed_ms = int((now - start_time).total_seconds() * 1000) elapsed_ms = int((now - start_time).total_seconds() * 1000)
data.append((self.KEYS[event.code], elapsed_ms)) data.append((self.KEYS[event.code], elapsed_ms))
clear_screen()
sys.stdout.write('%s\r' % (' '.join(datum[0] for datum in data)))
return (data, None) return (data, None)
InputSource = Enum('InputSource', 'EVDEV CONSOLE') InputSource = Enum('InputSource', 'EVDEV CONSOLE')

View File

@@ -15,6 +15,7 @@
# limitations under the License. # limitations under the License.
import time import time
import sys
class Measure(): class Measure():
def __init__(self, tag): def __init__(self, tag):
@@ -26,3 +27,8 @@ class Measure():
def __exit__(self, type, value, traceback): def __exit__(self, type, value, traceback):
now = time.time() now = time.time()
print('[{0}] {1} ms'.format(self._tag, (now - self._start)*1E3)) print('[{0}] {1} ms'.format(self._tag, (now - self._start)*1E3))
def clear_screen():
sys.stdout.write('\033[2J')
sys.stdout.write('\033[H')
sys.stdout.flush()