Возможно для связи эмулятора с "виртуальным контроллером" подойдут сокеты.
Но сокет это поток, а в реале могут возникать ситуации, когда данные в порт выдаются, но они не воспринимаются (пропускаются) получателем, по каким-то причинам.
Соответственно, эмуляцию этой ситуации нужно обмозговать.
Возможно эмулятор принимая поток должен просто обновлять инфу в регистре (эмулируемого порта Вектора), а выдавать программе Вектора соответственно текущее значение этого регистра, актуальное на момент чтения порта.