![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
wanderervb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.3.2008 Репутация: нет Всего: нет |
Доброго времени суток!
Подскажите пожалуйста, как правильно присвоить значения буфера, переменной? Для тестирования канала, поставил перемычку между Rx и Tx выводами порта. Отсылаю и принимаю строку “tttttttttttttttttttt”, но дальше буфера дело не продвинулось. При шаговой отладке программы, видно, что буфер получил строку, но при присвоении значения буфера строковой переменной, значение буфера «обнуляется», а переменная не получает значение буфера. Подскажите, в чем проблема?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ты полностью пренебрегаешь физикой работы СОМ-порта. Одной перемычки между Rx и Tx катастрофически мало.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
JusTalionis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 11.7.2006 Репутация: 6 Всего: 17 |
Теоретически, должно быть еще две перемычки: RTS-CTS и DSR-DTR.
Тем не менее, в FAQе Cardinal выложил проект терминала на контроле ( http://forum.vingrad.ru/faq/topic-158053.html ), и он отлично работает без них. Однако, должен заметить, что применение контрола лишает прогу переносимости: на какой-нибудь другой машине скомпилированный екзешник может не заработать. Предупреждаю, ибо сам на это нарвался, и до сих пор пока не решил проблему (но продолжаю). Это сообщение отредактировал(а) JusTalionis - 30.4.2008, 17:57 |
|||
|
||||
wanderervb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.3.2008 Репутация: нет Всего: нет |
Линии DTR, RTS, CTS, DSR, DCD и RI это линии квитирования и используются в основном в модемах. |
|||
|
||||
JusTalionis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 11.7.2006 Репутация: 6 Всего: 17 |
Ну да. И вот чтобы порт не ждал ответа- и соединяют его сам на себя: оправку запроса на прием ответа. Так и получаются две перемычки. Но, повторяю, у меня без них работало. Может это от конкретной модели порта зависит тоже (у меня был эмулированный: на кабеле через USB).
А почему у тебя Input_com = MSComm1.Input стоит в цикле? ИМХО, достаточно один раз присвоить - и содержимое всего буфера перекачается в переменную. |
|||
|
||||
wanderervb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 26.3.2008 Репутация: нет Всего: нет |
Это время ожидания ответа от устройства, но я пробовал и без цикла, всеравно неполучается. В буфере MSComm1.Input видно, что ответ пришел “tttttttttttttttttttt”, но при присвоение значения буфера строковой переменной непроисходит Input_com = “” Нет, иногда присваиваются первые один или два элемента строки, но почему так и непонятно |
|||
|
||||
JusTalionis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 11.7.2006 Репутация: 6 Всего: 17 |
Первые две? - наблюдал такое на очень медленной скорости передачи. Если сразу после передачи: команда отправки и сразу после нее команда приема, - не принимает НИЧЕГО.
Тогда разнес передачу и прием на две кнопки: передал - обождал две-три секунды - прием: тогда принимается целиком. А если через маленькое время (полсекунды) - то вот так вот - первые несколько символов. А если ты используешь контрол - зачем тебе ожидание вообще? Используй событие "приход данных" - и всё автоматически получится. Ну скачай из FAQа пример терминала (дал ссылку выше), посмотри как Cardinal сделал - всё ведь у него работает прекрасно. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |