Вверх ↑
Этот топик читают: Гость
Ответов: 55
Рейтинг: 0
#1: 2011-03-03 15:14:00 ЛС | профиль | цитата
С приемом и обработкой информации от МК с помощью HiAsm справился хорошо.
Пришла пора давать указания МК.
Я сформировал строку
07 05 08 1C 1E D6
для передачи в МК и при передаче СОМ сообщает, что передано 18 байт.
Получается, что переданы все пробелы и все HEX по символам. Можно ли в элементе СОМ
убрать преобразование в символы или добавить Свойство с выбором типа данных: символы - HEX,
как сделано во многих терминалках?
карма: 0

0
Ответов: 1376
Рейтинг: 197
#2: 2011-03-03 15:43:01 ЛС | профиль | цитата
С помощью Trim убрать все пробелы и передать не пробовали?
карма: 1

0
Ответов: 55
Рейтинг: 0
#3: 2011-03-03 15:54:31 ЛС | профиль | цитата
Дело не в пробелах, а в том, что элемент СОМ все байты переводит в символы. Если принятые от МК HEX превращенные COM в символы в HiAsm можно преобразовать обратно в HEX, то зачем заставлять МК заниматься переводом. Ведь он и так маленький. Ведь железный СОМ просто
передает старт-байт-стоп. Я привык работать с терминалками, которые передают то что надо без проблем.
карма: 0

0
Ответов: 5446
Рейтинг: 323
#4: 2011-03-03 16:01:47 ЛС | профиль | цитата
AVladM, много раз обсуждалось. Элемент Convert тебе в помощь.
карма: 1

0
Ответов: 1376
Рейтинг: 197
#5: 2011-03-03 16:06:00 ЛС | профиль | цитата
[flood]iarspider, не хотим мы искать по форуму, влом, нам надо сейчас же и всё[/flood]
карма: 1

0
Ответов: 55
Рейтинг: 0
#6: 2011-03-03 17:13:40 ЛС | профиль | цитата
Извините, а каким боком я Convert засуну в МК?
карма: 0

0
Ответов: 1376
Рейтинг: 197
#7: 2011-03-03 17:38:13 ЛС | профиль | цитата
AVladM писал(а):
а каким боком я Convert засуну в МК?
Не в МК, а конвертировать как необходимо
карма: 1

0
Ответов: 55
Рейтинг: 0
#8: 2011-03-04 03:31:31 ЛС | профиль | цитата
Похоже товарищ не умеет читать и понимать, но имеет свое мнение.
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#9: 2011-03-04 08:55:33 ЛС | профиль | цитата
AVladM писал(а):
Похоже товарищ не умеет читать и понимать

На вас, кстати, это тоже похоже

code_22779.txt
карма: 22

0
файлы: 1code_22779.txt [858B] [174]
Ответов: 55
Рейтинг: 0
#10: 2011-03-04 15:21:16 ЛС | профиль | цитата
nesco от Вас то я не ожидал такого невнимания к первому посту.
Вы видимо тоже не знаете как работает элемент СОМ.
Все что проходит через этот элемент превращается им в последовательность символов.
Как я понял это особенность всех ЯВУ - работают со строками символов и похоже у них нет библиотечных функций для работы
с чистым HEX.
А с формированием строки я справился и теперь имею 12 байт символов в передаче, а поскольку их может быть только 16 и они компактно
лежат в двух группах, то МК с этим легко разберется.
"Используй то что под рукою и не ищи себе другое."
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#11: 2011-03-04 15:32:32 ЛС | профиль | цитата
AVladM писал(а):
с чистым HEX

Да будет известно, что нет такого понятия -- чистый HEX, есть понятие бинарные данные и строкове представление бинарных данных В строке, каждый символ представлен целым числом в диапазон от 0 до 255, представлющим индекс в таблице символов. И если вы хорошо разбираетесь в числах различной разрядности, то прекрасно должны знать, что знчения чисел от 0 до 255 есть ни что иное, как байт двоичной информации, те 2^8 бит. А HEX, есть строковое представление полубайтов информации, четыре бита есть один символ HEX, вот почему HEX занимает длину не один байт информации, а два, два символа -- два байта

Я представил схему, где ваши символы HEX прекрасно певращатся в набор символов Char, представляющих собой строку, где каждый такой символ Char есть один байт информации.
карма: 22

0
Ответов: 5446
Рейтинг: 323
#12: 2011-03-04 16:52:45 ЛС | профиль | цитата
nesco, ты бы внёс информацию про использование Convert в справку по компоненту COM, чтобы туда людей носом тыкать
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#13: 2011-03-04 17:35:52 ЛС | профиль | цитата
Мнея другое убивает -- некоторые думаю, что только они знают как работает COM порт, когда сами нифига не могут отличить HEX представление бинарных данных от самих бинарных данных
карма: 22

0
Ответов: 55
Рейтинг: 0
#14: 2011-03-05 04:04:47 ЛС | профиль | цитата
Можно ли в элементе СОМ
убрать преобразование в символы или добавить Свойство с выбором типа данных: символы - HEX,
как сделано во многих терминалках?
Напоминаю вопрос. И как понимаю ответ на него может дать только автор Dilma.
Весь прочий флуд про конвертацию к данному вопросу отношения не имеет.
nesco Ваш пример манипулирует текстом и, как Вы сами понимаете, никакого отношения к HEX не имеет.
Мне нужно, чтобы COM передавал байт HEX именно как байт, а не как два символа в виде HEX.
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#15: 2011-03-05 10:18:19 ЛС | профиль | цитата
AVladM писал(а):
на него может дать только автор Dilma

За этот компонент отвечает не только Dilma, но и я за него отвечаю
AVladM писал(а):
Мне нужно, чтобы COM передавал байт HEX именно как байт, а не как два символа в виде HEX

Млин, ну и упертый. Неужели впадлу применить конвертор и нужно именно доработать компонент, встраивая в него тот же конверторв -- разница в этом какая Не хочешь передавать строку передавай символ.


Add(Convertor,10256914,168,182)
{
Mode=5
link(onResult,10767894:doConvert,[])
}
Add(Convertor,10767894,217,182)
{
Mode=4
}

Ты предлагаешь все бросить и встроить вот эту схему, которую я предложил в компонент. Еще раз -- какой в этом смысл Я точно знаю, что 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

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)