|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
Кодировка символов для порта08.06.2017, 14:01. Показов 3626. Ответов 13
Здравствуйте.
![]() У меня задача - передать по COM-порту данные в двоичном коде. Я разобрался как передавать по нему данные но в кодировке ANSII, т.е. число возможных кодов 7F, по материалам http://www.kernelchip.ru/pcports.php и скачанной от туда библиотекой. Как я понял действо там происходит через стандартный дескриптор и порт представлен как файл. Проблема такова что некотоыре байты нужно передавать.. превышая ограничения ANSII, например FF, или A2 (числа к примеру). Потому вопрос - можно ли как то .. программно присвоить определенному символу двухбитный код который бы соответствовал, например FF? Или нужно как то изменить кодировку вообще, на UTF8 и т.п? Но как я понял это повлечет то что каждый символ будет занимать по 2 байта?
0
|
|
| 08.06.2017, 14:01 | |
|
Ответы с готовыми решениями:
13
Кодировка русских символов для html Кодировка в делфи и мускуле, для отображения русских символов |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 08.06.2017, 14:08 | |
|
nzt, COM-порт может передавать любые байты без изменений. Если конечно в той библиотеке не намудрено что-то с преобразованием конца строки или ещё чего-нибудь.
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 08.06.2017, 14:10 [ТС] | |
|
Сейчас сообразил что мало будет посылать данные в нужной кодировке - их так же нужно и принимать распознавая. Банальный тест с отправкой на компорт символа 'ы' показал что приходит с компорта уже иной символ 'k'. Значит нужно менять кодировку приложения?
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 08.06.2017, 14:13 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
||||||
| 08.06.2017, 14:29 [ТС] | ||||||
|
Сейчас ищу код- пример.
По теме UTF8 - ДА, от 1 до 6, но когда 1 байт - менять можно только 7 битов, так же как в ANSII, а ежели делать 2 байта - то я все равно не могу контролировать все 8 разом. Верно? Добавлено через 11 минут Ну вот пример : (Ранее мой код, но потом от него ушел)
0
|
||||||
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,559
|
||||||
| 08.06.2017, 14:39 | ||||||
|
Передавай не массив char, а массив unsigned char.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 08.06.2017, 15:19 [ТС] | |
|
John Prick, Уважаемый, несмотря на то что этот код я скорее всего уже не использую, можете пояснить, что даст ваш вариант?
Я пришел к мысли что можно попробовать производить побитовый сдвиг и грубо говоря загонять данные в нужный разряд.. Однако сообразил что это может вылиться в еще большую мороку.. Идеально было бы.. Производить ввод числа сразу как шеснадцатеричный код, и пихать его в ком порт. Т.е. число 99 - переводить в код 10011001, и отправлять. Кто нибудь в курсе как такое сделать?
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 08.06.2017, 15:31 | |
|
nzt, чтобы из символа '9' который у вас в строке, сделать число 9, нужно из символа вычесть символ '0'. Это будет справедливо для практически всех кодировок (ну за исключением таких, у которых бы числа шли не по порядку или в обратном порядке
, хотя таких ни разу не встречал). Чтобы из 'F' сделать 15, тоже нужно вычесть '0', и это тоже для подавляющего числа кодировок верно (внимание, верхний регистр! В случае сомнений в кодировке или для нижнего нужно делать 'f'-'a'+10).
0
|
|
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,559
|
|
| 08.06.2017, 15:35 | |
|
nzt, ком-порт оперирует байтами, а не символами. Ему совершенно всё равно, что там именно закодировано и каким количеством байт. unsigned char здесь аналог байта просто. Представляем наш массив данных как массив байтов (для этого и используется приведение типа) и отправляем. На принимающей стороне делаем обратное приведение, или какое-то другое преобразование, если надо.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 08.06.2017, 15:47 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 08.06.2017, 16:28 [ТС] | |
|
John Prick, не могли бы вы подтолкнуть в тему где можно глянуть на код программы которая пересылает в компорт любые данные, а не исключительно строки или магию типа LPSTR(не помню точно название).
Пока у меня появилась мысль строку введенных числе дополнить '0x' и посмотреть - получится ли 16-й код.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||
| 08.06.2017, 16:35 | |||||||||||
|
nzt, вместо
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 08.06.2017, 17:15 [ТС] | |
|
TRam_, Блин.. Вы совершенно правы. Черт. Большущее спасибо. Теперь осталось понять.. как в такой вид переводить данные типа char. Я сумел вывести только char*.. Т.е. вводишь 123, а выходит "Ох123" .. но это массив а не шеснадцатиричное число..
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 08.06.2017, 18:03 | |
|
http://www.c-cpp.ru/content/scanf, http://www.c-cpp.ru/content/printf и http://www.c-cpp.ru/content/sprintf
0
|
|
| 08.06.2017, 18:03 | |
|
Помогаю со студенческими работами здесь
14
Кодировка символов Кодировка символов в С++ Кодировка символов кодировка символов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|