9
9
"""
10
10
11
11
from ipywidgets import DOMWidget
12
- from traitlets import Unicode , Bool
12
+ from traitlets import Unicode , Bool , Integer
13
13
from ._frontend import module_name , module_version
14
14
from time import sleep
15
15
import asyncio
@@ -50,25 +50,25 @@ class NaoRobotWidget(DOMWidget):
50
50
_view_module = Unicode (module_name ).tag (sync = True )
51
51
_view_module_version = Unicode (module_version ).tag (sync = True )
52
52
53
- _response = None
54
53
value = Unicode ('Hello World' ).tag (sync = True )
55
54
connected = Unicode ("Disconnected" ).tag (sync = True )
56
55
status = Unicode ("Not busy" ).tag (sync = True )
57
56
synco = Unicode ("test message" ).tag (sync = True )
57
+ response = Unicode ("" ).tag (sync = True )
58
+ counter = Integer (0 ).tag (sync = True )
58
59
59
60
def __init__ (self , ** kwargs ):
60
61
super ().__init__ (** kwargs )
61
62
self .on_msg (self ._handle_frontend_msg )
62
- self .observe (self ._handle_value_change , names = "status" )
63
+ # self.observe(self._handle_value_change, names="status")
63
64
64
65
def _handle_frontend_msg (self , model , msg , buffer ):
65
- print ("Received frontend msg: " )
66
- print (msg )
67
- self ._response = msg
66
+ print ("Received frontend msg: " , msg )
67
+ # self.response = msg
68
68
69
69
def _handle_value_change (self , change ):
70
70
print ("HANDLE HANDLE HANDLE" , change )
71
- self .status = change ['new' ]
71
+ self .response = change ['new' ]
72
72
73
73
def wait_for_change (widget , value_name ):
74
74
future = asyncio .Future ()
@@ -80,33 +80,39 @@ def get_value_change(change):
80
80
widget .observe (get_value_change , names = value_name )
81
81
return future
82
82
83
- async def set_after (self , future , delay , value ):
84
- self ._response = None
85
-
86
- for i in range (15 ):
87
- print (i , " Sleep a blink ... " , self .status )
83
+ async def set_after (self , future , delay ):
84
+
85
+ for i in range (25 ):
86
+ print (i , " Sleep a blink > " , self .response , '< response' )
88
87
await asyncio .sleep (delay )
89
- print ( "fjdlkjf" )
90
- if i == 10 :
91
- print ( "setting the future" )
92
- future . set_result ( self . _response )
93
-
94
- self ._response = None
88
+ if ( self . response != '' ):
89
+ print ( "setting the future " , i )
90
+ future . set_result ( self . response )
91
+ break
92
+
93
+ self .response = ''
95
94
96
95
97
- async def go_sleep (self , tSeconds = 2 ):
96
+ async def go_sleep (self , out , tSeconds = 2 ):
98
97
data = {}
99
98
data ["command" ] = str ("goSleep" )
100
99
data ["tSeconds" ] = tSeconds
101
100
self .send (data )
102
101
103
- loop = asyncio .get_running_loop ()
104
- future = loop .create_future ()
102
+ try :
103
+ await self .wait_for_change ('counter' )
104
+ except Exception as e :
105
+ print ('Something wrong: ' , e )
106
+ out .append_stdout ('something wrong' + str (e ))
107
+
108
+
109
+ # loop = asyncio.get_running_loop()
110
+ # future = loop.create_future()
105
111
106
- print ("hello ..." )
107
- loop .create_task (self .set_after (future , 0.1 , '... world' ))
112
+ # print("Go sleep ...")
113
+ # loop.create_task(self.set_after(future, 0.5 ))
108
114
109
- return future
115
+ # return future
110
116
111
117
112
118
def connect (self , ip_address = "nao.local" , port = "80" ):
0 commit comments