В настоящее время я пытаюсь отправить двоичные данные через pexpect. По какой-то причине данные проходят через только поиск, за исключением 0x04, который просто пропущен. Я отслеживал вызов pexpect, чтобы определить, что все, что происходит, является вызовом os.write() для дескриптора файла, открытого из команды pty.fork().Персонажи, которые не делают это от ведущего к подчиненному псевдотерминалу
Любые идеи?
(пример кода, который иллюстрирует эту проблему)
import os, pty, sys
pid, child_fd = pty.fork()
if pid: # Parent
os.write(child_fd, b"'\x04hmm\x04'\n")
buf = os.read(child_fd, 100)
print buf
else: # Child
text = sys.stdin.readline()
print ''.join(["%02X " % ord(x) for x in text])
Результат:
$ python test.py
'hmm'
27 68 6D 6D 27 0A
Кроме того, драйвер pty выполняет локальное эхо для вас, как это видно, видя «хм» перед всем остальным. – Omnifarious