![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| kami |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Дались вам всем побайтовые посылки... Посылай не символы, а байты. Дело в том, что символ "0" ни разу <> байт 0. Делай так:
или, если уж работаешь с символами, то:
|
||||||
|
|||||||
| Gres |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.5.2009 Репутация: нет Всего: нет |
Спасибо Вам огромное за подсказку, в чем отличие символа от его кода я знаю В общем проблема была в компоненте ComPort Library, эта приблуда заточена специально для работы в режиме терминала(просто эмулирует нажатие клавиш), для отправки данных там всего две функции: Write и Writestr, в обоих функциях передаваемый параметр является типом PChar... В общем его получилось использовать со вторым методом предложенным Вами, но это слишком длинная и бесполезная работа(конвертировать символы туда и обратно). Пришлось "спрыгнуть с удобного кресла" под названием ComPort Library и вернуться к Win API, там с байтами все нормально работает... |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Вы просто его готовить не умеете. Хотя может и ошибаюсь - не пользовался этой библиотекой. Нужно смотреть на объявление функций Write и WriteStr. Это сообщение отредактировал(а) kami - 1.6.2009, 21:57 |
|||
|
||||
| Gres |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.5.2009 Репутация: нет Всего: нет |
Прочитав Ваше сообщение решил проверить исходники этого компонента, хотя неблагодарное это дело перелапачивать горы исходного кода ради одной функции которую можно гораздо проще реализовать на Win API. Можно и свой компонент накидать, но для меня это разовая работа и пока в нем нет нужды, а скопировать кусок кода из своих же исходников при необходимости я всегда смогу Вот то, что я нашел в том компоненте:
Далее кусок из другого паса объявленного в этом:
Как видно из всего этого, данный компонент не пригоден для моих целей, его конечно можно подправить, но не стоит тратить на это время если есть другой способ. Все равно спасибо Вам большое за помощь, я ни когда не работал с СОМ портом, это первый опыт, да и задача не совсем стандартная или вернее совсем не стандартная, научить железяку(пик контролер, в который тоже ваяю код) общаться с большим братом
|
||||||||
|
|||||||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
||||
|
||||
| Gres |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.5.2009 Репутация: нет Всего: нет |
Ошибочное в чем? Поясните пожалуйста. Насколько я понял из исходников данная функция позволяет передавать только символ типа PAnsiChar или родственные ему. Мне нужно передать один байт(десятичное число от 0 до 255) и принять такой же ответ. Эта функция не позволяет записать байт в порт, она передает значение(числовое значение или код) символа или я ошибаюсь? Поясните в чем. Модераторам: спасибо за поправку, впредь буду учитывать. Это сообщение отредактировал(а) Gres - 5.6.2009, 14:43 |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
||||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
ай-я...
не заметил const в описании Write... тогда так:
Это сообщение отредактировал(а) kami - 5.6.2009, 23:38 |
|||
|
||||
| Gres |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 31.5.2009 Репутация: нет Всего: нет |
Это практически тоже самое, что и во втором примере в верхнем посте на этой странице, как я и сказал оно работает нормально. Но для меня это лишнее преобразование, которое вызовет кучу перекодировки после приема... Просто компонент видимо еще сыроват, там есть функции внутри которые не доступны пользователю, но были бы очень интересны. Например, что мешает константу заменить на переменную и вывести ее наружу для смены типа посылаемых данных одним кликом... Изначально компонент использует вызовы все того же win api, просто как и все компоненты предназначен для более удобного использования и уменьшения рукописного труда разработчиков, тока заточен он изначально под терминальные (АТ) команды... Это сообщение отредактировал(а) Gres - 6.6.2009, 07:14 |
|||
|
||||
| Yump |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.1.2008 Репутация: нет Всего: нет |
Подскажите, плз.
Перешел на TComPort4Beta (Delphi2009) с CPortLib3.1.(Delphi2006) при асинхронном чтении из компорта в версии 3.1 можно было использовать любой тип в качестве буфера и я использовал такую конструкцию:
и дальше уже работаю с элементами массива... в 4-ой версии в качестве буфера можно использовать только TCPortBytes (PAnsiChar) и что-то я туплю, как с этим работать:
может кто-нибудь подсказать, что тут делать? |
||||
|
|||||
| alex003 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 20.2.2010 Репутация: нет Всего: нет |
Доброе время суток. Подскажите пожалуйста
Надо получить архивы с прибора. Подключаюсь через мою термин. программу к прибору и получаю с СОМ порта следующее: ---/00016661<0 >6==;83<<49;:8 3><0;1>?4388>< 2:000000003; Это ответ прибора на запрос из программы (здесь данные о температуре, расходе, давлении, перепаде). Как эту последовательность преобразовать в читабельный формат. С уважением Александр. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |