It looks like the analog I/Os aren’t included in the realtime datastream?
I can’t install ur-rtde, so I would be happy to find an analog read example of any other (working) kind
It looks like the analog I/Os aren’t included in the realtime datastream?
I can’t install ur-rtde, so I would be happy to find an analog read example of any other (working) kind
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
s.connect((HOST, 30003)) #30003
packet_1 = s.recv(4)
packet_2 = s.recv(8)
packet_3 = s.recv(48)
packet_4 = s.recv(48)
packet_5 = s.recv(48)
packet_6 = s.recv(48)
packet_7 = s.recv(48)
packet_81 = s.recv(8)
q1 = str(packet_81)
q1 = struct.unpack('!d', packet_81)[0]
packet_82 = s.recv(8)
q2 = str(packet_82)
q2 = struct.unpack('!d', packet_82)[0]
packet_83 = s.recv(8)
q3 = str(packet_83)
q3 = struct.unpack('!d', packet_83)[0]
packet_84 = s.recv(8)
q4 = str(packet_84)
q4 = struct.unpack('!d', packet_84)[0]
packet_85 = s.recv(8)
q5 = str(packet_85)
q5 = struct.unpack('!d', packet_85)[0]
packet_86 = s.recv(8)
q6 = str(packet_86)
q6 = struct.unpack('!d', packet_86)[0]
packet_9 = s.recv(48)
packet_10 = s.recv(48)
packet_11 = s.recv(48)
packet_12 = s.recv(48)
packet_13 = s.recv(48)
packet_14 = s.recv(48)
packet_15 = s.recv(48)
packet_16 = s.recv(48)
packet_170 = s.recv(8)
dI = str(packet_170)
dI = struct.unpack('!d', packet_170)[0]
print("DIGITAL INPUT")
dIint = int(dI)
print(bin(dIint))
print("")
packet_18 = s.recv(48)
packet_19 = s.recv(8)
packet_20 = s.recv(8)
packet_211 = s.recv(8)
robmod = str(packet_211)
robmod = struct.unpack('!d', packet_211)[0]
print("ROBOT MODE BITS")
robmodint = int(robmod)
print(bin(robmodint))
print("")
packet_22 = s.recv(48)
packet_23 = s.recv(8)
packet_24 = s.recv(48)
packet_25 = s.recv(24)
packet_26 = s.recv(48)
packet_27 = s.recv(8)
packet_28 = s.recv(8)
packet_29 = s.recv(8)
packet_30 = s.recv(8)
packet_31 = s.recv(8)
packet_32 = s.recv(8)
packet_33 = s.recv(8)
packet_34 = s.recv(48)
packet_350 = s.recv(8)
dO = str(packet_350)
dO = struct.unpack('!d', packet_350)[0]
print("DIGITAL OUTPUT")
dOint = int(dO)
print(bin(dOint))
packet_36 = s.recv(8)
packet_37 = s.recv(24)
packet_38 = s.recv(24)
x = q1*180/3.1415926536
y = q2*180/3.1415926536
z = q3*180/3.1415926536
rx = q4*180/3.1415926536
ry = q5*180/3.1415926536
rz = q6*180/3.1415926536
print("POSE: " + str(q1) + ", " + str(q2) + ", " + str(q3) + ", " + str(q4) + ", " + str(q5) + ", " + str(q6))
print("")
This works well but where are the Analog I/Os located?
Thanks for your answer,
import socket
import struct
import sys
HOST = '169.254.63.28'
PORT = 30001
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.connect((HOST, PORT))
while 1:
data = s.recv(4096)
length_overall_package = (struct.unpack('!i', data[0:4]))[0]
robot_message_type = (struct.unpack('!B', data[4:5]))[0]
print("length_overall_package: " + str(length_overall_package))
print("robot_message_type: " + str(robot_message_type))
It is receiving message type 16 but how to decode analog state in ROBOT_STATE_
PACKAGE_TYPE_TOOL_DATA = 2
data = s.recv(4096)
i = 0
package_length = (struct.unpack('!i', data[0:4]))[0]
robot_msg_type = (struct.unpack('!B', data[4:5]))[0]
if robot_msg_type == 16:
while i + 5 < package_length:
length_sub_package = (struct.unpack('!i', data[5 + i:9 + i]))[0]
package_type = (struct.unpack('!B', data[9:10]))[0]
event.wait(0.2)
print("Package type")
print(package_type)
if package_type == 0:
sub_package = data[5:i + length_sub_package]
timestamp = struct.unpack('!Q', sub_package[5:13])[0]
robot_connected = struct.unpack('!?', sub_package[13:14])[0]
robot_enabled = struct.unpack('!?', sub_package[14:15])[0]
robot_on = struct.unpack('!?', sub_package[15:16])[0]
emergency_stop = struct.unpack('!?', sub_package[16:17])[0]
protective_stop = struct.unpack('!?', sub_package[17:18])[0]
program_running = struct.unpack('!?', sub_package[18:19])[0]
program_paused = struct.unpack('!?', sub_package[19:20])[0]
robot_mode = struct.unpack('!B', sub_package[20:21])[0]
control_mode = struct.unpack('!B', sub_package[21:22])[0]
print("Timestamp: " + str(timestamp))
print("Robot connected: " + str(robot_connected))
print("Robot enabled: " + str(robot_enabled))
print("Robot on: " + str(robot_on))
print("Emergency stop: " + str(emergency_stop))
print("Protective stop: " + str(protective_stop))
print("Program running: " + str(program_running))
print("Program paused: " + str(program_paused))
print("Robot mode: " + str(robot_mode))
print("Control mode: " + str(control_mode))
i = length_sub_package + i
So this works, but it never receives anything else than package_type 0, so where is the other data?