![]() |
|
![]() ![]() ![]() |
|
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Я хочу посылать команду СОМ порту в своей программе из окна Edit. В окне Edit текст команды $ST+TEST=0000:
Мне надо дополнить команду символом возврата коретки с переводом строки. Как отправить такую команду порту? Так не правильно посылать в порт?: Edit1->Text = "$ST+TEST=0000\r\n"; |
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Я вот так посылал команду в порт:
Потом читал ответ (на порту находился GSM-модем), приходило: ATZ\r\r\nOK\r\n. Я не знаю, что там у вас за устройство на порту, но у меня всё нормально работало, когда команда завершалась символом \r. При использовании \r\n то ли не работало, то ли было всё также как при \r. А при \n вроде не работало. Но я уже плохо помню -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
||||
|
||||
orthrus |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 400 Регистрация: 30.10.2007 Где: г. Усть-Илимск(Ир кутская обл.) Репутация: 4 Всего: 16 |
можно так:
и так как ты делаешь тоже можно:
ещё можно использовать сторонние компоненты для работы с com портом -------------------- У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой ![]() |
||||||
|
|||||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Лена, почему вы считаете, что ваша строка не отправляется?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Вот этот переделанный вариант, у меня заработал:
|
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Тебе очень повезло, что заработал - не должен был ![]() У тебя массив char Command[128];, который отсылается через WriteFile локальный в функции, т.е. память, занимаемая им будет переиспользованна сразу после выхода из функции. WriteFile вызывается в Overlapped режиме, т.е. содержимое этого, уже невалидного массива, будет по прежнему передаваться (в фоне). Результат непредсказуемый.
|
||||||
|
|||||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Выход сделать char Command[128] глобальной переменной? Еще есть не дочеты?
![]() |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Да. Либо вообще сделать запись в порт в не Overlapped режиме - запись в любом случае производится во внутренний буфер драйвера сериального порта и отправка будет происходить в фоновом режиме. Overlapped при записи в порт нужен только если в порт пишется непрерывный поток.
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |