|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.05.2015, 13:58 | #1 |
Регистрация: 02.04.2015
Сообщений: 9
|
Чтение данных с COM-порта и вывод их в memo
Здравствуйте.
Аналогичные проблемы множество раз уже обсуждались и не только тут, поэтому прошу прощения если повторяюсь. Старался использовать решения в старых постах, но к сожалению полностью решить стоящую передо мной задачу пока так и не смог. Имеется устройство работающее по COM-порту. На данный момент удаётся подключаться к этому девайсу и включать/выключать передачу данных с него на компьютер. Данные передаются в HEX формате и представляют из себя набор из 18 чисел, которые при каждой итерации обновляются. Необходимо считывать данные с этого устройства и заполнять ими memo. Вот с этим возникли сложности. Проблемный участок кода находится в самом конце. Хотел считать данные в массив и из него уже постить их в мемо. Однако вылетает ошибка. [DCC Error] Unit1.pas(136): E2033 Types of actual and formal var parameters must be identical [DCC Error] Unit1.pas(137): E2250 There is no overloaded version of 'IntToStr' that can be called with these arguments Вероятно потому, что ComPort.Read возвращает string. Код:
|
18.05.2015, 14:09 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
var Resive :array [0..18] of byte;
... IntToStr(Resive) -- ???
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
18.05.2015, 14:26 | #3 |
Регистрация: 02.04.2015
Сообщений: 9
|
Спасибо за скорый ответ! Пытался использовать следующий пример в своей программе, но поскольку давно не работал с дельфи, видимо написал что-то не то.
Код:
|
20.05.2015, 10:12 | #4 |
Регистрация: 02.04.2015
Сообщений: 9
|
И так, удалось реализовать вывод данных в мемо (последняя процедура).
Код:
Информация в мемо представляется в виде следующих крякозябликов: Ϳႀ퉿橿 摿 ㅿ⑿텿婿 큿屿 晾ހ큿橿 Хочется, чтобы данные отображались корректно. Если верить монитору СОМ-порта, то после того, как устройство получает команду на передачу данных, на порт начинает поступать информация, имеющая вид 18 числовых значений в HEX виде, которые (кроме первых двух значений) изменяются с каждой итерацией. Выглядит это всё примерно так: 00 00 FF FF 75 EF 7E 26 7E 4C 7F FA 75 1C 7F A7 7E 95 00 00 FF FF 78 03 7E E9 7E 8C 7F FB 76 D4 7F A9 7E 7D и т.д. Соответственно в идеале, хотелось бы, чтобы данные в memo выводились по 18 HEX значений на строку: 00 00 FF FF 75 EF 7E 26 7E 4C 7F FA 75 1C 7F A7 7E 95 00 00 FF FF 78 03 7E E9 7E 8C 7F FB 76 D4 7F A9 7E 7D И т.д. |
20.05.2015, 10:23 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
20.05.2015, 10:48 | #6 | |
Регистрация: 02.04.2015
Сообщений: 9
|
Цитата:
Мне не очень понятно как именно мне поможет IntToHex, если массив у меня Char. Или нужно переделать массив из char в byte? Но опять же, будет ли работать с byte функция IntToHex? И последний этап, мне нужно будет вывести данные в memo, где формат string. |
|
20.05.2015, 11:04 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно переделать, а можно и так IntToHex(Ord(MyBuff[i]),2)
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 20.05.2015 в 11:13. |
|
20.05.2015, 11:18 | #8 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,894
|
Цитата:
|
|
20.05.2015, 11:34 | #9 | |
Регистрация: 02.04.2015
Сообщений: 9
|
Цитата:
Так это выглядит сейчас: FFFF 380 00 467F 387F 897E E17F 01 01 FFFF FD7F 00 3C7F 357F 657E DF7F 01 01 FFFF F57F 00 407F 2E7F 7C7E E17F А вот так должно выглядеть: 00 00 FF FF 75 EF 7E 26 7E 4C 7F FA 75 1C 7F A7 7E 95 00 00 FF FF 78 03 7E E9 7E 8C 7F FB 76 D4 7F A9 7E 7D Код:
|
|
20.05.2015, 11:47 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Байты-то из буфера нужно в цикле выбирать, а не огульно с непонятным значением i. По поводу таймера не скажу, нет опыта работы с периферией через com
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Мгновенное чтение и вывод данных | Parallelogram | JavaScript, Ajax | 2 | 08.04.2014 10:03 |
Дикий тупняк - чтение данных с com порта. | GMX | Компоненты Delphi | 8 | 26.03.2014 15:39 |
Delphi.Чтение файла в Memo, вычисление, добавление строк в Memo | antonio_sk | Помощь студентам | 0 | 26.04.2013 18:01 |
Вывод и чтение данных | Joker_vad | Общие вопросы Delphi | 3 | 30.03.2013 16:03 |
Чтение данных с COM порта 232 | Dimitr_88 | Общие вопросы C/C++ | 10 | 03.09.2010 10:39 |