Skip to content

Commit e0d2b2b

Browse files
authored
Merge pull request #2 from hganchev/addGetDigitalInputsFunc
add: get digital inputs to rt statuses and ur_control
2 parents 7e2b896 + 6fc4042 commit e0d2b2b

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

ToDo.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@
2020
- other?
2121
* [] Examples
2222
- ~~pick and place~~
23+
- path following (generated from G-code) with force control
2324
- more examples?

src/pyUR/realtime/realtime_statuses.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
_program_state : float = None
77
_robot_mode : float = None
88
_digital_outputs: list = None
9+
_digital_inputs : list = None
910

1011
_q_act_base:float = None
1112
_q_act_shoulder:float = None
@@ -33,7 +34,7 @@ def __init__():
3334
:param status: status to unpack
3435
'''
3536
def unpack(data:bytes):
36-
global _program_state, _robot_mode,_digital_outputs,\
37+
global _program_state, _robot_mode,_digital_outputs,_digital_inputs,\
3738
_q_act_base,_q_act_shoulder,_q_act_elbow,_q_act_wrist1,_q_act_wrist2,_q_act_wrist3,\
3839
_tool_act_x,_tool_act_y,_tool_act_z,_tool_act_rx,_tool_act_ry,_tool_act_rz
3940

@@ -47,6 +48,9 @@ def unpack(data:bytes):
4748
# robot mode
4849
_robot_mode = (struct.unpack('!d', data[94*8:95*8]))[0]
4950

51+
# digital inputs
52+
_digital_inputs = _double_to_8bit_list(struct.unpack('!d', data[85*8:86*8])[0])
53+
5054
# digital outputs
5155
_digital_outputs = _double_to_8bit_list((struct.unpack('!d', data[130*8:131*8]))[0])
5256

@@ -67,6 +71,9 @@ def unpack(data:bytes):
6771
# robot mode
6872
_robot_mode = (struct.unpack('!d', data[94*8:95*8]))[0]
6973

74+
# digital inputs
75+
_digital_inputs = _double_to_8bit_list(struct.unpack('!d', data[85*8:86*8])[0])
76+
7077
# digital outputs
7178
_digital_outputs = _double_to_8bit_list(struct.unpack('!d', data[130*8:131*8])[0])
7279

@@ -103,6 +110,10 @@ def get_digital_outputs():
103110
global _digital_outputs
104111
return _digital_outputs
105112

113+
def get_digital_inputs():
114+
global _digital_inputs
115+
return _digital_inputs
116+
106117
def get_robot_act_pose():
107118
global _tool_act_x, _tool_act_y, _tool_act_z, _tool_act_rx, _tool_act_ry, _tool_act_rz
108119
return list[_tool_act_x, _tool_act_y, _tool_act_z, _tool_act_rx, _tool_act_ry, _tool_act_rz]

src/pyURControl/ur_control.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,32 @@ def _wait_digital_output_is_set(output: int=0, value: bool=False):
180180
digital_outputs = get_digital_outputs()
181181
if digital_outputs[output] == value:
182182
break
183-
sleep(0.001)
183+
sleep(0.001)
184+
185+
'''
186+
get digital inputs
187+
'''
188+
def get_digital_inputs() -> list:
189+
# Receive responce
190+
responce = realtime.receive_status()
191+
192+
# Unpack responce
193+
realtime_statuses.unpack(responce)
194+
195+
# Get program state
196+
digital_inputs = realtime_statuses.get_digital_inputs()
197+
return digital_inputs
198+
199+
'''
200+
get digital input
201+
:param input: input number 0-7
202+
'''
203+
def get_digital_input(input: int=0) -> bool:
204+
# Receive responce
205+
responce = realtime.receive_status()
206+
207+
# Unpack responce
208+
realtime_statuses.unpack(responce)
209+
210+
digital_inputs = get_digital_inputs()
211+
return digital_inputs[input]

0 commit comments

Comments
 (0)