Python резьба и розетки - PullRequest
       4

Python резьба и розетки

0 голосов
/ 04 марта 2020

Я пытаюсь установить связь с прибором (Newport XPS D) через сокеты.

По сути, мне нужны два экземпляра интерфейса контроллера, поскольку XPS работает только с блокирующими сокетами. Один экземпляр будет использоваться для отправки команды перемещения, другой - для опроса позиции.

Есть кое-что, что я явно не понимаю, как работают потоки с тех пор, как я запускаю программу в двух windows терминалах (один обработка опроса, другой ход) работает нормально, но когда я запускаю оба интерфейса в разных потоках на одном и том же терминале, я получаю ошибку занятого сокета (я проверил, что идентификаторы потоков разные).

чтобы уточнить это код сбоя:

from XPS_unified import LTPXPS
import time
from threading import Thread, Timer

class my_indep_XPS(Thread):
    def __init__(self):
        super().__init__()
        self.this_xps = LTPXPS(xps_version="D")
        self.timer = None
        self.stopped = False
        self.polling = False
        .
        .
        .
    def run(self):
        print(f"Thread #{self.ident}")
        if self.polling:
            for _ in range(2 * 60 * 2):
                time.sleep(0.5)
                print(self.this_xps.get_position("Tx"))
        else:
            self.move(00)
[...]

if __name__ == "__main__":
    xps_pos_th = my_indep_XPS()
    xps_pos_th.toggle_polling()
    xps_pos_th.start()
    xps_mov_th = my_indep_XPS()

    time.sleep(5)
    print("move start")
    xps_mov_th.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...