Преглед изворни кода

modified: improve registerIr UI

Satoshi Yoneda пре 6 година
родитељ
комит
803d848ce6
1 измењених фајлова са 32 додато и 26 уклоњено
  1. 32 26
      tree/usr/local/bin/registerIr.py

+ 32 - 26
tree/usr/local/bin/registerIr.py

@@ -38,24 +38,24 @@ IR_CONF='/etc/lirc/lircd.conf.d/remocon.lircd.conf'
 
 MODE2CMD=['/usr/bin/mode2', '--device', '/dev/lirc0', '--driver','default']
 
-BUTTONS=[ {'label': 'PLAY', 'prompt': 'プレイ', 'code': None},\
-          {'label': 'STOP', 'prompt': 'ストップ', 'code': None},\
-          {'label': 'PAUSE', 'prompt': '一時停止', 'code': None},\
-          {'label': 'NEXT', 'prompt': '次曲', 'code': None},\
-          {'label': 'PREV', 'prompt': '前曲', 'code': None},\
-          {'label': 'VOLUP', 'prompt': '音量上げ', 'code': None},\
+BUTTONS=[ {'label': 'PLAY',    'prompt': 'プレイ',    'code': None},\
+          {'label': 'STOP',    'prompt': 'ストップ',   'code': None},\
+          {'label': 'PAUSE',   'prompt': '一時停止', 'code': None},\
+          {'label': 'NEXT',    'prompt': '次曲',    'code': None},\
+          {'label': 'PREV',    'prompt': '前曲',    'code': None},\
+          {'label': 'VOLUP',   'prompt': '音量上げ', 'code': None},\
           {'label': 'VOLDOWN', 'prompt': '音量下げ', 'code': None},\
-          {'label': 'MENU', 'prompt': 'メニュー', 'code': None},\
-          {'label': '0', 'prompt': '数字0', 'code': None},\
-          {'label': '1', 'prompt': '数字1', 'code': None},\
-          {'label': '2', 'prompt': '数字2', 'code': None},\
-          {'label': '3', 'prompt': '数字3', 'code': None},\
-          {'label': '4', 'prompt': '数字4', 'code': None},\
-          {'label': '5', 'prompt': '数字5', 'code': None},\
-          {'label': '6', 'prompt': '数字6', 'code': None},\
-          {'label': '7', 'prompt': '数字7', 'code': None},\
-          {'label': '8', 'prompt': '数字8', 'code': None},\
-          {'label': '9', 'prompt': '数字9', 'code': None},\
+          {'label': 'MENU',    'prompt': 'メニュー',   'code': None},\
+          {'label': '0',       'prompt': '数字0',   'code': None},\
+          {'label': '1',       'prompt': '数字1',   'code': None},\
+          {'label': '2',       'prompt': '数字2',   'code': None},\
+          {'label': '3',       'prompt': '数字3',   'code': None},\
+          {'label': '4',       'prompt': '数字4',   'code': None},\
+          {'label': '5',       'prompt': '数字5',   'code': None},\
+          {'label': '6',       'prompt': '数字6',   'code': None},\
+          {'label': '7',       'prompt': '数字7',   'code': None},\
+          {'label': '8',       'prompt': '数字8',   'code': None},\
+          {'label': '9',       'prompt': '数字9',   'code': None},\
         ]
 
 STR_GUIDE=['リモコンの登録を',\
@@ -72,10 +72,13 @@ STR_MESSAGE=['ボタンを',\
              '(2分以内)',
             ]
 
-STR_ERR = ['タイムアウト',\
+STR_ERR = ['タイムアウトまたは',\
+           'エラー発生',\
            'リモコンの信号が',\
            '受信できません',\
           ]
+
+STR_CONFIRM = ['信号確認']
           
 STR_END = ['登録完了です',\
            '自動的に再起動',\
@@ -117,7 +120,6 @@ def receiveIr(timeout=120*1000):
 	with subprocess.Popen(MODE2CMD, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) as proc:
 		p = select.poll()
 		p.register(proc.stdout)
-		i = 0
 		fstart = False
 		while True:
 			ret = p.poll(timeout)
@@ -129,14 +131,15 @@ def receiveIr(timeout=120*1000):
 			code = line.split(' ')[1]
 			if not fstart:
 				if type == 'pulse':
-					fstart = True
-			
+					fstart = True			
 			if fstart:
-				codes.append(code)
-				i += 1
-			
-			if i >= 67:
+				if type == 'pulse' or type == 'space':
+					codes.append(code)
+			if len(codes) >= 67:
 				break
+			if proc.returncode is not None:
+				if len(codes) < 67:
+					return None
 				
 		proc.terminate()
 	return codes
@@ -185,6 +188,9 @@ if __name__ == "__main__":
 		if r is None:
 			timeout()
 		item['code'] = r
+		LCD.clear()
+		LCD.message(STR_CONFIRM)
+		time.sleep(1)
 	
 	# config
 	# print(BUTTONS)
@@ -214,6 +220,6 @@ if __name__ == "__main__":
 		print('end remote'                     , file=f)
 	LCD.clear()
 	LCD.message(STR_END)
-	time.sleep(30)
+	time.sleep(5)
 	os.system('/sbin/reboot')
 	sys.exit(0)