Как позвонить и обновить sh мой OP C -UA сервер без ошибок? - PullRequest
0 голосов
/ 16 января 2020

Мне нужна ваша помощь, потому что у меня большой разрыв в Python.

Я хотел бы запустить мой модуль, содержащий мой сервер OPCUA, из моего основного с al oop, однако, когда я хочу обновить свои данные, появляется следующая ошибка:

OSError: ошибка [Errno 10048] при попытке связать по адресу ('192.168.1.2', 4840): только одно использование каждого адрес сокета (протокол / сетевой адрес / порт) обычно разрешен

Я не понимаю, как изменить мой код, чтобы больше не получать его. У вас есть идеи?

Основной код:

import server_opcua as srv
import time

def main():

    refreshment_speed = 3
    srv.start_server()

    while True: 

        srv.refresh_server()    
        time.sleep(refreshment_speed)

if __name__ == '__main__':

    main()

server_opcua (модуль) код:

from opcua import Server
import datetime
import print_requests as pr

srv_url = "opc.tcp://192.168.1.2:4840"
srv_name = "OPCUA_SERVER"

def start_server():

    server_opcua = Server()
    server_opcua.set_endpoint(srv_url)

    addspace = server_opcua.register_namespace(srv_name)            
    node = server_opcua.get_objects_node()

    param = node.add_object(addspace, "Parameters")

    time = param.add_variable(addspace, "Time", 0)
    time.set_writable()

    printer_status = param.add_variable(addspace, "Printer status", 0)
    printer_status.set_writable()

    server_opcua.start()

    print("Server started at {}".format(srv_url))


def refresh_server():

    refresh_time = datetime.datetime.now()
    refresh_status = pr.get_printer_status() 

    print('Printer status : ', refresh_status, refresh_time)

    start_server().time.set_value(refresh_time)
    start_server().printer_status.set_value(refresh_status)

Заранее спасибо!

...