@@ -95,33 +95,44 @@ async def initialise(self) -> None:
9595 @command ()
9696 async def execute (self ) -> None :
9797 """Execute the command."""
98- prefix = f"do { self ._module_name } :{ self ._command_name } "
99- response_prefix = f"done { self ._module_name } :{ self ._command_name } "
100-
101- if self .args is not None :
102- if self .raw_args :
103- cmd = f"{ prefix } { self .args .get ()} \n "
104- else :
105- cmd = f"{ prefix } { encode (self .args .get (), self ._datainfo ['argument' ])} \n "
106- else :
107- cmd = f"{ prefix } \n "
108-
109- logger .debug ("Sending command: '%s'" , cmd )
110- response = await self ._connection .send_query (cmd )
111- logger .debug ("Response: '%s'" , response )
112-
113- response = response .strip ()
114- if not response .startswith (response_prefix ):
115- logger .warning ("command '%s' failed (response='%s')" , prefix , response )
116- return
117-
118- response = response [len (response_prefix ) :].strip ()
119-
120- if self .result is not None :
121- if self .raw_result :
122- await self .result .update (orjson .dumps (orjson .loads (response )[0 ]).decode ())
98+ try :
99+ prefix = f"do { self ._module_name } :{ self ._command_name } "
100+ response_prefix = f"done { self ._module_name } :{ self ._command_name } "
101+
102+ if self .args is not None :
103+ if self .raw_args :
104+ cmd = f"{ prefix } { self .args .get ()} \n "
105+ else :
106+ cmd = f"{ prefix } { encode (self .args .get (), self ._datainfo ['argument' ])} \n "
123107 else :
124- await self .result .update (decode (response , self ._datainfo ["result" ], self .result ))
108+ cmd = f"{ prefix } \n "
109+
110+ logger .debug ("Sending command: '%s'" , cmd )
111+ response = await self ._connection .send_query (cmd )
112+ logger .debug ("Response: '%s'" , response )
113+
114+ response = response .strip ()
115+ if not response .startswith (response_prefix ):
116+ logger .warning ("command '%s' failed (response='%s')" , prefix , response )
117+ return
118+
119+ response = response [len (response_prefix ) :].strip ()
120+
121+ if self .result is not None :
122+ if self .raw_result :
123+ await self .result .update (orjson .dumps (orjson .loads (response )[0 ]).decode ())
124+ else :
125+ await self .result .update (
126+ decode (response , self ._datainfo ["result" ], self .result )
127+ )
128+ except Exception as e :
129+ logger .error (
130+ "command %s:%s failed: %s: %s" ,
131+ self ._module_name ,
132+ self ._command_name ,
133+ e .__class__ .__name__ ,
134+ e ,
135+ )
125136
126137
127138class SecopModuleController (Controller ):
@@ -318,7 +329,7 @@ async def check_idn(self) -> None:
318329 f"Not a SECoP device?"
319330 )
320331
321- print ( f "Connected to SECoP device with IDN='{ identification } '." )
332+ logger . info ( "Connected to SECoP device with IDN='%s '." , identification )
322333
323334 async def initialise (self ) -> None :
324335 """Set up FastCS for this SECoP node.
0 commit comments