Я не могу понять, как остановить преобразование шестнадцатеричного числа в байт, используя представления шестнадцатеричн ⇐ Python
Я не могу понять, как остановить преобразование шестнадцатеричного числа в байт, используя представления шестнадцатеричн
Я работаю с программой, которой необходимо вывести эту команду в последовательный порт:
b'\x01\x10\x00\x08\x00\x02\x04\x00\x00\x16\x43\xe7\xf5'
Он использует следующую функцию, чтобы принять предварительно отформатированную команду и упаковать ее перед отправкой по последовательной линии.
def pumpSendData(команда): темп = команда.split("%") если(temp[0] == "SETFLOW"): #data = (str(command_dict[temp[0]])).format(temp[1]) данные = "01 10 00 08 00 02 04 00 00 16 43 E7 F5" еще: данные = command_dict[str(temp[0])] распечатать (данные) данные = data.replace(" ","") распечатать (данные) data_bytes = bytes.fromhex(данные) печать (байты_данных) пытаться: ПМПсер.open() кроме: ПМПсер.закрыть() ПМПсер.open() PMPser.write(байты_данных) время.сон(0.1) ответ = PMPser.readline() response_str = ' '.join([format(res, '02X') для разрешения в ответе]) ПМПсер.закрыть() печать(response_str) вернуть ответ_строка Учитывая ожидания этой функции, я не могу понять, почему она преобразует 4-й шестнадцатеричный байт значения в представление ascii и объединяет его со значением, предшествующим ему, вместо того, чтобы просто создавать еще один раздел в последовательном файле. нить. Ниже приведен пример вывода терминала.
0110000800020400001643E7F5 b'\x01\x10\x00\x08\x00\x02\x04\x00\x00\x16C\xe7\xf5' Дайте мне знать, если у кого-нибудь есть идеи или вопросы по этой проблеме.
Я пробовал изменить способ предварительного форматирования команды, но, похоже, это ничего не меняет. Я не знаю, как запретить bytes.fromhex(data) использовать представление чисел в формате ascii.
Я работаю с программой, которой необходимо вывести эту команду в последовательный порт:
b'\x01\x10\x00\x08\x00\x02\x04\x00\x00\x16\x43\xe7\xf5'
Он использует следующую функцию, чтобы принять предварительно отформатированную команду и упаковать ее перед отправкой по последовательной линии.
def pumpSendData(команда): темп = команда.split("%") если(temp[0] == "SETFLOW"): #data = (str(command_dict[temp[0]])).format(temp[1]) данные = "01 10 00 08 00 02 04 00 00 16 43 E7 F5" еще: данные = command_dict[str(temp[0])] распечатать (данные) данные = data.replace(" ","") распечатать (данные) data_bytes = bytes.fromhex(данные) печать (байты_данных) пытаться: ПМПсер.open() кроме: ПМПсер.закрыть() ПМПсер.open() PMPser.write(байты_данных) время.сон(0.1) ответ = PMPser.readline() response_str = ' '.join([format(res, '02X') для разрешения в ответе]) ПМПсер.закрыть() печать(response_str) вернуть ответ_строка Учитывая ожидания этой функции, я не могу понять, почему она преобразует 4-й шестнадцатеричный байт значения в представление ascii и объединяет его со значением, предшествующим ему, вместо того, чтобы просто создавать еще один раздел в последовательном файле. нить. Ниже приведен пример вывода терминала.
0110000800020400001643E7F5 b'\x01\x10\x00\x08\x00\x02\x04\x00\x00\x16C\xe7\xf5' Дайте мне знать, если у кого-нибудь есть идеи или вопросы по этой проблеме.
Я пробовал изменить способ предварительного форматирования команды, но, похоже, это ничего не меняет. Я не знаю, как запретить bytes.fromhex(data) использовать представление чисел в формате ascii.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение