Connect Camera

import sys

from NovitecCameraAPIWinPy import NovitecCamera


def get_device_index_from_user() -> int:
    while True:
        try:
            index = int(input("Enter the device index to connect: "))
            if index >= 0:
                return index
            else:
                print("Please enter a non-negative integer.")
        except ValueError:
            print("Invalid input. Please enter an integer.")


def print_device_info(index, info):
    is_network_compatible = "Yes" if info.isNetworkCompatible else "No"

    print(f"Device {index}:")
    print(f"  Model Name        : {info.modelName.decode().strip()}")
    print(f"  Serial Number     : {info.serialNumber.decode().strip()}")
    print(f"  Firmware Version  : {info.firmwareVersion.decode().strip()}")
    print(f"  MAC Address       : {':'.join(f'{b:02x}' for b in info.macAddress)}")
    print(f"  IP Address        : {'.'.join(str(b) for b in info.ipAddress)}")
    print(f"  Subnet Mask       : {'.'.join(str(b) for b in info.subnetMask)}")
    print(f"  Default Gateway   : {'.'.join(str(b) for b in info.defaultGateway)}")
    print(f"  Network Compatible: {is_network_compatible}")


# Create an instance of the NovitecCamera class
novitec_camera = NovitecCamera()

# Discover available devices
ret, num_of_device = novitec_camera.discover()
if ret.errCode != 0:
    print(f"Error discovering devices: {ret.errMessage}")
    sys.exit()

print(f"Number of devices discovered: {num_of_device}")

# Iterate over each discovered device and print its information
for device_index in range(num_of_device):
    ret, device_info = novitec_camera.get_device_info(device_index)
    if ret.errCode != 0:
        print(f"Error retrieving information for device {device_index}: {ret.errMessage}")
    else:
        print_device_info(device_index, device_info)

# Prompt the user to select a device index to connect
device_index = get_device_index_from_user()

# Fetch the information for the selected device
ret, device_info = novitec_camera.get_device_info(device_index)
if ret.errCode != 0:
    print(f"Error fetching information for the selected device {device_index}: {ret.errMessage}")
    sys.exit()
else:
    serial_number = device_info.serialNumber.decode().strip()

# Connect to the device using its serial number
ret = novitec_camera.connect_by_serial_number(serial_number)
if ret.errCode != 0:
    print(f"Connection failed for the device with serial number {serial_number}: {ret.errMessage}")
    sys.exit()
else:
    print(f"Connection successful for the device with serial number {serial_number}")