Вверх ↑
Этот топик читают: Гость
Ответов: 55
Рейтинг: 0
#1: 2011-01-19 17:49:36 ЛС | профиль | цитата
Я несколько раз пытался освоить HiAsm и каждый раз терпел неудачу, потому что не мог получить на компьютере данные с СОМ порта.
В последний раз до меня дошло, что данные в компьютер поступают в виде символов. Я привык при работе с разными терминалами получать данные в HEX,так как их отправляет контроллер.Есть ли возможность в стандартном элементе Компорта отключить преобразование в символы? А то проиходит двойное преобразование: элемент Компорта преобразует HEX в символы, а я вынужден преобразовывать их обратно.
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#2: 2011-01-19 18:03:24 ЛС | профиль | цитата
AVladM писал(а):
HEX в символы

Все правильно -- десятичне значение символа и есть байт информации в десятичном представлении. А HEX, кстати, строковое представление этого самого байта
карма: 22

0
Ответов: 55
Рейтинг: 0
#3: 2011-01-20 06:08:32 ЛС | профиль | цитата
Спасибо за ответ.Я всхищен возможностями HiAsm.Пытался сделать такой же графический интерфейс на LabVIEW, но там сложно получить исполняемый файл ну и слишком дорого.Какие инструменты (программы Pascal, Delphi) мне нужны для того, чтобы самому подправить элемент COM для получения на выходе HEX?
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#4: 2011-01-20 09:08:41 ЛС | профиль | цитата
AVladM писал(а):
чтобы самому подправить элемент COM для получения на выходе HEX?

Знание Delphi. Но вопрос -- зачем его править, неужели не хватает штатных компонентов для такого преобразования
Вот посимвольное преобразование в HEX выходных данных



Add(Convertor,3387536,168,196)
{
Mode=3
link(onResult,1901018:doConvert,[])
}
Add(Convertor,1901018,217,196)
{
Mode=6
}


И строки в HEX



Add(StreamConvertor,3017968,161,294)
{
Mode=2
}

------------ Дoбавленo в 09.08:
AVladM, а может всю схему загнать в IC, а, может так проще будет Это уже не ново -- каждый новичек в HiAsm-e сразу пытается править компоненты под себя и только потом понимает, что морозил глупость, и в большинстве случаев, править-то его и не надо было
карма: 22

1
Голосовали:Konst
Ответов: 55
Рейтинг: 0
#5: 2011-01-20 11:59:56 ЛС | профиль | цитата
Спасибо.Сейчас я использую связку COM и StreamConvertor.
Желание поправить от недопонимания механизма работы HiAsm.
Вроде переискал весь сайт, но так и не понял: куда вставлять эти коды и как использовать файл.txt, который я вчера получил по CRC8.
Вроде нашел, что нужно скопировать текст и вставить в редактор а в другом месте, что нужно использовать утилиту ECreator.
Подскажите, пожалуйста.

карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2148
#6: 2011-01-20 12:19:28 ЛС | профиль | цитата
AVladM писал(а):
Подскажите, пожалуйста

Копируем текст с форума или текстового файла по Ctrl+C и вставляем на поле HiAsm-a по Ctrl+V. Текстовый файл, еще к тому же, можно скачать и переименовать расширение в *.sha, а затем его запустить
------------ Дoбавленo в 12.19:
AVladM писал(а):
нужно использовать утилиту ECreator

Для этой цели ECreator не нужен
карма: 22

0
Ответов: 55
Рейтинг: 0
#7: 2011-01-20 12:22:30 ЛС | профиль | цитата
Спасибо!
карма: 0

0
Ответов: 55
Рейтинг: 0
#8: 2013-06-20 04:24:27 ЛС | профиль | цитата
Для таких же как я составил небольшую схему-памятку по работе с микроконтроллерами через Comport средствами HiAsm.
Primer будет работать с МК передающим три байта данных в СОМ1 на скорости 9600.
Период опроса порта 1 секунда.
Первый байт любой ненулевой(служебный для исключения ошибки приема нулевых байт)
Второй и третий байты данные 8бит АЦП. В программе первый байт АЦП приводится к диапазону 5,12 , а
второй - 255.
Графики отображают 100 точек с последующим замещением начальных данных.
Проект HiAsm я постарался подробно прокомментировать и дальнейшее увеличение числа каналов, я думаю,
не доставит больших трудностей.

Если нужно что-то сообщить МК из программы от HiAsm, то можно поступить так:
Формируем строку и передаем на doWrite элемента СОМ, а как это произойдет лучше объяснить "на пальцах":
К примеру нужно передать два HEX-байта 0x5B и 0x1F. В программе от HiAsm формируем строку 5B1F и отправляем.
В МК получим четыре байта HEX 35 42 31 46 (коды ASCII) и причешем их по примерно такому алгоритму:
Если байт меньше 0х40, то отнимем 0х30
иначе через небольшой свитч
0х41 = 0х0А
......
......
0х46 = 0х0F
получим вот такие четыре байта 05 0В 01 0F.
А дальше совсем просто:
HEX1 = (байт1 << 4) + байт2;
HEX2 = (байт3 << 4) + байт4;
И теперь наш МК знает, что ему хотели сказать.
code_31289.txt

карма: 0

0
файлы: 1code_31289.txt [4KB] [152]
Ответов: 5446
Рейтинг: 323
#9: 2013-06-20 10:20:11 ЛС | профиль | цитата
AVladM, а зачем нагружать микроконтроллер преобразованием HEX->INT, если можно то же самое возложить на процессор ПК? Компонент Convertor в режиме HexToInt тебе в этом поможет.
карма: 1

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