Мне нужна ваша помощь, потому что у меня большой разрыв в 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)
Заранее спасибо!