С приемом и обработкой информации от МК с помощью HiAsm справился хорошо.
Пришла пора давать указания МК.
Я сформировал строку
07 05 08 1C 1E D6
для передачи в МК и при передаче СОМ сообщает, что передано 18 байт.
Получается, что переданы все пробелы и все HEX по символам. Можно ли в элементе СОМ
убрать преобразование в символы или добавить Свойство с выбором типа данных: символы - HEX,
как сделано во многих терминалках?
Этот топик читают: Гость
Ответов: 55
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 1376
Рейтинг: 197
|
|||
С помощью Trim убрать все пробелы и передать не пробовали?
|
|||
карма: 1 |
|
Ответов: 55
Рейтинг: 0
|
|||
Дело не в пробелах, а в том, что элемент СОМ все байты переводит в символы. Если принятые от МК HEX превращенные COM в символы в HiAsm можно преобразовать обратно в HEX, то зачем заставлять МК заниматься переводом. Ведь он и так маленький. Ведь железный СОМ просто
передает старт-байт-стоп. Я привык работать с терминалками, которые передают то что надо без проблем. |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
AVladM, много раз обсуждалось. Элемент Convert тебе в помощь.
|
|||
карма: 1 |
|
Ответов: 1376
Рейтинг: 197
|
|||
[flood]iarspider, не хотим мы искать по форуму, влом, нам надо сейчас же и всё[/flood]
|
|||
карма: 1 |
|
Ответов: 55
Рейтинг: 0
|
|||
Извините, а каким боком я Convert засуну в МК?
|
|||
карма: 0 |
|
Ответов: 1376
Рейтинг: 197
|
|||
AVladM писал(а): а каким боком я Convert засуну в МК? |
|||
карма: 1 |
|
Ответов: 55
Рейтинг: 0
|
|||
Похоже товарищ не умеет читать и понимать, но имеет свое мнение.
|
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
AVladM писал(а): Похоже товарищ не умеет читать и пониматьНа вас, кстати, это тоже похоже code_22779.txt |
|||
карма: 22 |
| ||
файлы: 1 | code_22779.txt [858B] [174] |
Ответов: 55
Рейтинг: 0
|
|||
nesco от Вас то я не ожидал такого невнимания к первому посту.
Вы видимо тоже не знаете как работает элемент СОМ. Все что проходит через этот элемент превращается им в последовательность символов. Как я понял это особенность всех ЯВУ - работают со строками символов и похоже у них нет библиотечных функций для работы с чистым HEX. А с формированием строки я справился и теперь имею 12 байт символов в передаче, а поскольку их может быть только 16 и они компактно лежат в двух группах, то МК с этим легко разберется. "Используй то что под рукою и не ищи себе другое." |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
AVladM писал(а): с чистым HEXДа будет известно, что нет такого понятия -- чистый HEX, есть понятие бинарные данные и строкове представление бинарных данных В строке, каждый символ представлен целым числом в диапазон от 0 до 255, представлющим индекс в таблице символов. И если вы хорошо разбираетесь в числах различной разрядности, то прекрасно должны знать, что знчения чисел от 0 до 255 есть ни что иное, как байт двоичной информации, те 2^8 бит. А HEX, есть строковое представление полубайтов информации, четыре бита есть один символ HEX, вот почему HEX занимает длину не один байт информации, а два, два символа -- два байта Я представил схему, где ваши символы HEX прекрасно певращатся в набор символов Char, представляющих собой строку, где каждый такой символ Char есть один байт информации. |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, ты бы внёс информацию про использование Convert в справку по компоненту COM, чтобы туда людей носом тыкать
|
|||
карма: 1 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Мнея другое убивает -- некоторые думаю, что только они знают как работает COM порт, когда сами нифига не могут отличить HEX представление бинарных данных от самих бинарных данных
|
|||
карма: 22 |
|
Ответов: 55
Рейтинг: 0
|
|||
Можно ли в элементе СОМ
убрать преобразование в символы или добавить Свойство с выбором типа данных: символы - HEX, как сделано во многих терминалках? Напоминаю вопрос. И как понимаю ответ на него может дать только автор Dilma. Весь прочий флуд про конвертацию к данному вопросу отношения не имеет. nesco Ваш пример манипулирует текстом и, как Вы сами понимаете, никакого отношения к HEX не имеет. Мне нужно, чтобы COM передавал байт HEX именно как байт, а не как два символа в виде HEX. |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
AVladM писал(а): на него может дать только автор DilmaЗа этот компонент отвечает не только Dilma, но и я за него отвечаю AVladM писал(а): Мне нужно, чтобы COM передавал байт HEX именно как байт, а не как два символа в виде HEXМлин, ну и упертый. Неужели впадлу применить конвертор и нужно именно доработать компонент, встраивая в него тот же конверторв -- разница в этом какая Не хочешь передавать строку передавай символ.
Ты предлагаешь все бросить и встроить вот эту схему, которую я предложил в компонент. Еще раз -- какой в этом смысл Я точно знаю, что Dilma скажет то жк самое ------------ Дoбавленo в 09.07: AVladM писал(а): Ваш пример манипулирует текстом и, как Вы сами понимаете, никакого отношения к HEX не имеетПривет. А что, HEX не тест И что, передав 0F через конвертор, на другом конце порта не получат 15 бинарным байтом (00001111) ------------ Дoбавленo в 10.18: Я, кажется, начинаю понимать бознь пользователя передавать строку через COM порт -- действительно, если передставить,что классический текст, есть набор не специальных, а текстовых символов -- да, так оно и есть, но это если использовать классическое представление строки, как nulterminate (ограниченную нулем) набор неслужебнвых символов. Но строка, передаваемая компоненту COM, не является nulterminate строкой, она представлет собой копию участка памяти определенной длины, содержащую в себе весь диапазон сиволов от 0 до 255, те представляет собой не строку как текст, а строку, как набор символов. Определимся с HEX. Возьмем конвертор HEXToStr и подадим на него 00010203, на выходе получим Chr(0) + Chr(1) + Chr(2)+ Chr(3) (00000000 00000001 00000002 00000003 в бинарных данных), в отладчике мы это не увидим, а вот подав эот набор символов на вход COM порта на другом конце ответного порта получим тот же набор символов -- Chr(0) + Chr(1) + Chr(2) + Chr(3) |
|||
карма: 22 |
|