— Arduino CLI
Содержание
cc/arduino/cli/monitor/v1/monitor.proto
- Конфигурация монитора
- StreamingOpenRequest
- StreamingOpenResponse
- MonitorConfig.TargetType
- МониторСервис
- Типы скалярных значений
Топ
cc/arduino/cli/monitor/v1/monitor.proto
Конфигурация монитора
Сообщает монитору, какую цель открыть, и предоставляет дополнительные параметры, которые могут потребоваться для настройки цели. или сам монитор. ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕНИИ: MonitorConfig устарел и будет удален в будущем выпуске. Использовать Вместо этого используются ArduinoCoreService.Monitor и ArduinoCoreService.EnumerateMonitorPortSettings.
Поле | Тип | Этикетка | Описание |
---|---|---|---|
цель | строка | Имя цели. | |
тип | MonitorConfig.TargetType | ||
дополнительная_конфигурация | google.protobuf.Struct | Дополнительные параметры, которые могут потребоваться для настройки цели или самого монитора. | |
recv_rate_limit_buffer | int32 | Этот параметр указывает, сколько байтов должно быть буферизовано на стороне сервера перед удалением. Если >0, то сервер включит ограничитель скорости и будет отправлять входящие данные клиенту только тогда, когда клиент это разрешит: подробности см. в параметре StreamingOpenReq.recv_acknowledge. |
StreamingOpenRequest
Сообщение верхнего уровня, отправленное клиентом для метода StreamingOpen
. Несколько сообщений StreamingOpenReq
могут быть
отправлено, но первое сообщение должно содержать сообщение monitor_config
для инициализации цели монитора.
monitor_config
. УСТАРЕВАНИЕ
ПРЕДУПРЕЖДЕНИЕ. StreamingOpenRequest устарел и будет удален в будущем выпуске. Используйте ArduinoCoreService.Monitor и
Вместо этого используйте ArduinoCoreService.EnumerateMonitorPortSettings.Поле | Тип | Этикетка | Описание |
---|---|---|---|
конфигурация | Конфигурация монитора | Предоставляет монитору информацию, указывающую, что является целью. Первое сообщение StreamingOpenReq должно содержать сообщение config . | |
данные | байт | Данные для отправки отслеживаемой цели. | |
recv_acknowledge | int32 | Если ограничитель скорости включен, этот параметр используется для сообщения о количестве успешно обработанных сообщений StreamingOpenResp (с данными). |
StreamingOpenResponse
ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕНИИ: StreamingOpenResponse устарел и будет удален в будущем выпуске. Использовать Вместо этого используются ArduinoCoreService.Monitor и ArduinoCoreService.EnumerateMonitorPortSettings.
Поле | Тип | Этикетка | Описание |
---|---|---|---|
данные | байт | Данные, полученные от цели. | |
упал | int32 | Количество потерянных байтов. Во время регулярных обновлений это число должно быть равно 0, но в случае, если клиент не может достаточно быстро обработать окно recv, этот параметр сообщит о количестве потерянных байтов. |
MonitorConfig.TargetType
Имя | Номер | Описание |
---|---|---|
TARGET_TYPE_SERIAL | 0 | |
TARGET_TYPE_NULL | 99 |
МониторСервис
MonitorService предоставляет услуги по мониторингу плат. ПРЕДУПРЕЖДЕНИЕ ОБ УСТАРЕНИИ: MonitorService устарел и будет удалены в будущем выпуске. Вместо этого используйте ArduinoCoreService.Monitor и ArduinoCoreService.EnumerateMonitorPortSettings.
Название метода | Тип запроса | Тип ответа | Описание |
---|---|---|---|
StreamingOpen | Поток StreamingOpenRequest | Поток StreamingOpenResponse | Открытие двунаправленного потока монитора. Это можно использовать для реализации чего-то похожего на последовательный монитор Arduino IDE. |
Типы скалярных значений
.прото Тип | Примечания | С++ | Ява | Питон | Перейти | С# | PHP | Рубин |
---|---|---|---|---|---|---|---|---|
двойной | двойной | двойной | поплавок | поплавок64 | двойной | поплавок | Поплавок | |
поплавок | поплавок | поплавок | поплавок | поплавок32 | поплавок | поплавок | Поплавок | |
int32 | Использует кодировку переменной длины. Неэффективно для кодирования отрицательных чисел — если в вашем поле могут быть отрицательные значения, используйте вместо этого sint32. | int32 | интервал | интервал | int32 | интервал | целое число | Bignum или Fixnum (при необходимости) |
int64 | Использует кодировку переменной длины. Неэффективно для кодирования отрицательных чисел — если в вашем поле могут быть отрицательные значения, используйте вместо этого sint64. | int64 | длинный | внутр./длинн. | int64 | длинный | целое/строка | Бигнум |
uint32 | Использует кодировку переменной длины. | uint32 | интервал | внутр./длинн. | uint32 | и | целое число | Bignum или Fixnum (при необходимости) |
uint64 | Использует кодировку переменной длины. | uint64 | длинный | внутр./длинн. | uint64 | улонг | целое/строка | Bignum или Fixnum (при необходимости) |
синт32 | Использует кодировку переменной длины. Целочисленное значение со знаком. Они более эффективно кодируют отрицательные числа, чем обычные int32. | int32 | интервал | интервал | int32 | интервал | целое число | Bignum или Fixnum (при необходимости) |
uint64 | длинный | внутр./длинн. | uint64 | улонг | целое/строка | Бигнум | ||
фиксированный32 | Всегда четыре байта. | int32 | интервал | интервал | int32 | интервал | целое число | Bignum или Fixnum (при необходимости) |
фиксированный64 | Всегда восемь байт. | int64 | длинный | внутр./длинн. | int64 | длинный | целое/строка | Бигнум |
логический | логический | логическое значение | логическое значение | логический | логический | логическое значение | Истинный класс/ложный класс | |
строка | Строка всегда должна содержать кодировку UTF-8 или 7-битный текст ASCII. | строка | Строка | стр/юникод | строка | строка | строка | Строка (UTF-8) |
байт | Может содержать любую произвольную последовательность байтов. | строка | БайтСтрока | ул | []байт | БайтСтрока | строка | Строка (ASCII-8BIT) |
Форматирование целочисленного списка в шестнадцатеричную строку — Шесть способов Pythonic — Finxter
от Криса
5/5 — (1 голос)
Формулировка задачи
💬 Вопрос : Как создать строку шестнадцатеричных цифр из списка целых чисел ( 0
– 255
), чтобы каждая шестнадцатеричная цифра состояла из двух цифр, таких как "00",
"01"
, …, "fe"
, "ff"
?
Вот пример пары ввода/вывода:
В : [0, 1, 2, 3, 255, 254, 253] Out : '00010203fffefd'
Метод 1: Bytearray
Самый простой способ преобразовать список целых чисел в шестнадцатеричную строку — использовать bytearray(ints)
для создания bytearray
и вызова метода bytearray(ints). hex()
Вот простой пример:
ints = [0, 1, 2, 3, 255, 254, 253] my_hex = массив байтов (целые).hex() печать (my_hex) # 00010203fffefd
Теперь, если вы похожи на меня, вам не слишком удобно работать с байтовыми массивами и их сравнением с простым типом байт
в Python. Если вы хотите освежить свою память, не стесняйтесь проверить наш интересный учебник:
🌍 Рекомендуемое руководство : Bytes vs Bytearrays в Python
Метод 2: f-String
Выражение ''.join(f'{i:02x}' for i in ints)
список целых чисел в одну двухзначную шестнадцатеричную строку с использованием f-строк и объединяет все эти двухзначные шестнадцатеричные строки в одну большую строку с использованием метода
.
целых = [0, 1, 2, 3, 255, 254, 253] my_hex = ''.join(f'{i:02x}' для i в целых числах) печать (my_hex) # 00010203fffefd
Вы можете узнать больше о выражении генератора, используемом в методе join(), в нашем подробном руководстве здесь:
🌍 Рекомендуемое руководство : Понимание списков в Python — Полное руководство
Метод 3: Оператор процента
Выражение ''.join('%02x'%i for i in ints)
преобразует каждое целое число из списка целых чисел в одну двухзначную шестнадцатеричную строку с использованием оператора процентного форматирования и объединяет все эти двухзначные шестнадцатеричные строки в одну большая строка с использованием метод string.join()
.
целых = [0, 1, 2, 3, 255, 254, 253] my_hex = ''. join('%02x'%i для i в целых числах) печать (my_hex) # 00010203fffefd
Интересным для вас может быть следующее руководство, в котором показано, как использовать различные операторы форматирования строк для преобразования целого числа в шестнадцатеричную строку — это лежит в основе того, что мы делаем в предыдущем фрагменте кода:
🌍 Рекомендуемое руководство : Python Int to Hex | Форматирование строк
Метод 4: string.format()
Выражение ''.join('{:02x}'.format(i) for i in ints)
преобразует каждое целое число из списка целых чисел в одну двухзначную шестнадцатеричную строку с использованием string.format( )
и объединяет все эти двухзначные шестнадцатеричные строки в одну большую строку, используя метод string.join()
.
целых = [0, 1, 2, 3, 255, 254, 253] my_hex = ''. join('{:02x}'.format(i) для i в целых числах) печать (my_hex) # 00010203fffefd
Я создал целый учебник по 9Метод 0092 string.format() — посмотрите здесь.
Метод 5: format()
Выражение ''.join(format(i, '02x') for i in ints)
преобразует каждое целое число из списка целых чисел в одну двухзначную шестнадцатеричную строку, используя встроенная функция Python format()
и объединяет все эти двухзначные шестнадцатеричные строки в одну большую строку, используя метод string.join()
.
целых = [0, 1, 2, 3, 255, 254, 253] my_hex = ''.join (формат (i, '02x') для i в целых числах) печать (my_hex) # 00010203fffefd
На самом деле я предпочитаю этот подход, если вы не хотите использовать f-строки, потому что он чист, и в нем мало ненужного синтаксического сахара, такого как символ процента, скобки или что-то еще.
Вы можете узнать больше о встроенной функции здесь:
🌍 Рекомендуемое руководство : Функция Python format(): Руководство по примерам без BS вы хотите использовать более двух цифр в шестнадцатеричной строке, которая была результатом преобразования из отдельного целого числа в список?
Скажем, 3 цифры в шестнадцатеричной строке?
Чтобы использовать более двух цифр в шестнадцатеричной строке при преобразовании списка целых чисел в одну строку из n
-значных шестнадцатеричных чисел, используйте спецификатор формата 0nx
, заменив n
нужным количеством цифр.
-
0
означает «добавить 0 символов влево, чтобы убедиться, что все шестнадцатеричные строки имеют одинаковую ширину» -
n
означает «ширину шестнадцатеричной строки после преобразования» . Это количество0
добавлено, чтобы каждая шестнадцатеричная строка содержала одинаковое количество цифр. -
x
означает «преобразование в шестнадцатеричное строковое представление» . Вы также можете конвертировать в другие системы счисления, такие как двоичная или восьмеричная. Но мы не будем здесь. 😉
Например, выражение ' '.join(f'{i:03x}' for i in ints)
может дать эту шестнадцатеричную строку '000 001 002 003 0ff 0fe 0fd'
:
ints = [0 , 1, 2, 3, 255, 254, 253] my_hex = ' '.join(f'{i:03x}' для i в целых числах) печать (my_hex) # 000 001 002 003 0ff 0fe 0fd
Существует больше способов преобразования целого числа в шестнадцатеричное. Я мог бы придумать произвольное множество комбинаций методов, просто варьируя разные подходы, но я думаю, что вы уловили идею.
Если вы хотите узнать больше о методах для использования в качестве выражения в выражении генератора всех предыдущих фрагментов кода, ознакомьтесь с этим руководством.