Read analog inputs with TCP/IP

It looks like the analog I/Os aren’t included in the realtime datastream?

Client_Interfaces_1.1.3.xlsx

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?

This code uses port 30003 which is the old Matlab interface.
Analog IOs (masterboard or tool) are available in primary interface, you need to decode the masterboard data state message.

In your Excel file :

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?