![]() |
|
![]() ![]() ![]() |
|
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Порт получает сообщение 21 символ(цифры), терминал отображает сообщение полностью, а при использовании события терминала, чтения строки, в переменной AnsiString Str терминала - оказывается всякая ерунда которая однако при выводе Str в Memo распадается на 3 строчки похоже по 8 символов(в строке есть пробелы поэтому трудно подсчитать).
Подскажите пожалуйста может кто использовал компанент как получить нормальную строку 21 символ (Вариант собирать строку из 3-х строчек Memo пробавал. |
|||
|
||||
pandrew |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 27.3.2006 Репутация: 3 Всего: 3 |
А что такое компанент TComPort? И где ты его взял? И зачем он тебе? И зачем подглядывать за его терминалом? И что там такое написано, что и процитировать нельзя?
Если идет двоичная цифирь ее не получится засунуть в AnsiString. М.б. начать с цели - быстрее поможем. |
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Спасибо pandrew за желание помочь, но вопрос касался тех, кто такой компанент уже использовал. А взял я его по ссылке у нас на форуме. Компанент для работы с com портом.
|
|||
|
||||
Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: нет Всего: 2 |
А зачем тебе ComTerminal, там есть компанента TComPort у нее есть событие OnRxChar (есть данные в буфере приема)
и делай с данными все что хочешь, хочешь выводи в Memo, хочешь обрабатывай бинарные данные. А вообще глучная компанента, но за неименеем лучшего тоже ее использую. Незабудь расшарить AnsiString FPort, (непомню в каком файле) иначе невозможно изменять порт программно. -------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Спасибо, что откликнулся Ivan. Вкратце обЪясню ситуацию. Устройство посылает 21 символ. И ждёт ответа -1 байт (06hex) подтверждение того, что сообщение доставлено. Если я засылаю этот байт напрямую в TComPort то он его корёжет и устройство считает, что ответа нет. Поэтому посылаю, через терминал, через терминал принимает нормально. Но при подключении терминала вычитать из ComPort-а уже не даёт только из терминала. Причем в терминале показывает всю строку целиком, при выводе в Label показывет только последний символ, при выводе в Мемо разбивает её на три, то есть вычитывает её в три приема (ставил счетчик). Почему? Как получить всю строчку из терминала или запихнуть в СomPort ответ устройству, чтобы он его не корёжил?
|
|||
|
||||
Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: нет Всего: 2 |
Прикинь, писал тебе длинное сообщение, нажал из программы на ссылочку, чтобы вставить ее в сообщение, а она открылась в томже окне ВСЕ ПРОПАЛО!!!
Ладно, повторим: -- Забыл что писал -- TComTerminal перехватывает события и обрабатывает данные как текст и тебе в TComPort-е уже ничего не остается. Если ты хочешь получать полные, неискаженные данные не используй TComTerminal. сам обрабатывай данные от события TComPort::OnRxChar. В примере, каторый я привел, выгрузка данных в AnsiString очень удобна - ты никогда не вылезешь из выделенной памяти, какой бы объем данных там небыл. Но выводить AnsiString в Memo - это не логично, ведь символ '\0' может оказаться где угодно. При отправке данных через метод TComPort::Write(const void *Buffer, int Count) данные никогда не пропадут и не искожаться (проверено годами). Для отладки протоколов я бы посоветовал взять какой нибудь терминал (например http://bray.velenje.cx/avr/terminal/ или http://www.ptronix.com/ но его надо ломать и он не конектится к порту от BlueTooth) и виртуальный COM-порт (например www.eltima.com) он создает пару виртуальных COM-портов соединенных нуль модемом. с одной стороны цепляешь TComPort, с другой стороны какой нибудь терминал и общаешься. -------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Про терминал понял, спасибо. А в порт я так и писал поначалу. Но символ ответа (06hex) визуально неотображаемый, в строчке он выглядит как |, может поэтому ComPort его корёжит. Как мне его корректно передать? Все визуальные символы проскакивают на Ура. А отлаживаю так, спаял три проводка и соеденил между собой Com порты компа. На Сом1 цепляю свою прогу а на Сом2 цепляю прогу Эмулятора.
|
|||
|
||||
Ivan. |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 2.11.2004 Репутация: нет Всего: 2 |
Скорее это эмулятор его корежит а не ComPort. скачай http://eltima.com и никаких проводов тебе непонадобиться.
Пример:
я тебя уверяю, байт никуда не денется и не искарежиться. Далее, скачай терминал http://bray.velenje.cx/avr/terminal/ и подсоедини его к другой стороне нуль модема и ты увидишь, что все идеально -------------------- Я могу ВСЁ, вопрос - сколько времени у меня это займет! |
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Сейчас попробую
|
|||
|
||||
knopka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 187 Регистрация: 17.1.2006 Где: Россия: Петербург Репутация: нет Всего: 1 |
Большое Вам спасибо Ivan всё получилось
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |