Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2018, 13:10   #1
Анатолий24_7
Новичок
Джуниор
 
Регистрация: 05.09.2018
Сообщений: 8
По умолчанию Перевод цифр которые соответсвуют символам в кодировке ASCII в бинарный вид с последующей передачей по Serial.

Питон версии 3.5. Система Линукс.

Есть задача по отправке сообщения из 8 байт в формате HEX по com-порту. Если в списке цифр присутствеют цифры, которые соответствуют символам в кодировке ASCII, интерпретатор не переводит их в HEX.
Анатолий24_7 вне форума Ответить с цитированием
Старый 05.09.2018, 13:12   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А ваш код где? Проблема в чем?
p51x на форуме Ответить с цитированием
Старый 05.09.2018, 13:17   #3
Анатолий24_7
Новичок
Джуниор
 
Регистрация: 05.09.2018
Сообщений: 8
По умолчанию

Проблема вот в чем. Есть список из цифр, которые необходимо передать по порту, использую библиотеку serial. И вот если в этом списке присутствуют цифры, которым соответствует символ из кодировки ASCII, то при передаче этого списка на порт, устройство не может считать данный набор байт.
Анатолий24_7 вне форума Ответить с цитированием
Старый 05.09.2018, 13:22   #4
Анатолий24_7
Новичок
Джуниор
 
Регистрация: 05.09.2018
Сообщений: 8
По умолчанию

вот отрезок кода.

import serial
port = serial.Serial('/dev/ttyAMA0', baudrate=19200, stopbits=1, timeout=None)
command = [245, 38, 39, 45, 0, 0, 82, 245]
port.open()
port.write(command)
port.close()
Анатолий24_7 вне форума Ответить с цитированием
Старый 05.09.2018, 13:25   #5
Анатолий24_7
Новичок
Джуниор
 
Регистрация: 05.09.2018
Сообщений: 8
По умолчанию

Но если исключить эти цифры из списка устройство работает нормально.
Например если устройству передать по порту список [245, 2, 0, 0, 0, 0, 2, 245]
То эту команду оно видит прекрасно и реагирует на нее.
Анатолий24_7 вне форума Ответить с цитированием
Старый 05.09.2018, 14:02   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Не верится, если честно. Не должно ничего зависеть от диапазона данных. Или Вы дали не весь код. Но скорее всего просто ошибка в команде
Black Fregat вне форума Ответить с цитированием
Старый 05.09.2018, 14:15   #7
Анатолий24_7
Новичок
Джуниор
 
Регистрация: 05.09.2018
Сообщений: 8
По умолчанию

Сформулирую подругому:

command = bytearray([245, 38, 39, 45, 0, 0, 82, 245])
print(command)
bytearray(b"\xf5&\'-\x00\x00R\xf5")
>>>

Есть необходимость получить bytearray в HEX
Анатолий24_7 вне форума Ответить с цитированием
Старый 05.09.2018, 14:21   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

https://docs.python.org/3/library/bi...nascii.hexlify или просто hex() в новых версиях
p51x на форуме Ответить с цитированием
Старый 05.09.2018, 14:33   #9
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Вы точнее формулируйте..
Код:
>>> command = bytearray([245, 38, 39, 45, 0, 0, 82, 245])
>>> print(command.hex())
f526272d000052f5
Black Fregat вне форума Ответить с цитированием
Старый 05.09.2018, 15:05   #10
Анатолий24_7
Новичок
Джуниор
 
Регистрация: 05.09.2018
Сообщений: 8
По умолчанию

[QUOTE=Black Fregat;1748925]Вы точнее формулируйте..
Код:
>>> command = bytearray([245, 38, 39, 45, 0, 0, 82, 245])
>>> print(command.hex())
f526272d000052f5
[/QU
нам надо получить байтовое представление данной последовательности а не строковое
Анатолий24_7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все слова-числа, т.е. такие, которые состоят только из цифр. Известно, что количество цифр в каждом числе не более 9 (девяти vikichocolate Помощь студентам 1 21.12.2011 00:12
VBA не понимает или не распознает символ №179 по кодировке ASCII. Lays Microsoft Office Excel 10 14.12.2010 11:27
расшифровать в ASCII потом цифры расшифровать в бинарный код viorel Общие вопросы Delphi 1 07.05.2010 14:43
Jpeg в бинарный вид Ilitan Помощь студентам 3 21.03.2010 00:40