Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
serin
sanek Дата: Пн, 02.11.2009, 22:19  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 84
Репутация: 0   ±
Замечания:   ±
На сайте с 09.04.2009

Статус: Offline

Здравствуйте.У меня маленький вопросик по протону.
мне нужно принять по асинхронному каналу слово с заранее не известным количеством символов(ответ ТА на ат-команду)и отобразить на лсд, как это сделать МК 16F84A

Сообщение отредактировал sanek - Пн, 02.11.2009, 23:21
ЯНДЕКС Дата: 02.11.2009
ADMIN Дата: Вт, 03.11.2009, 15:01  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну у тебя экран будет ограничен каким-то числом символов, поэтому возьми максимальную длину, которая может быть, и которую способен отобразить LCD. Отталкивайся от этого.
sanek Дата: Вт, 03.11.2009, 19:07  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 84
Репутация: 0   ±
Замечания:   ±
На сайте с 09.04.2009

Статус: Offline

dim wer[16] as byte
serin porta.1,n9600,[str wer]
print at 1,1,str wer
END
Я так написал, но если текст меньше 16 символов, программа не переходит с serin на print
Dmitry Дата: Ср, 04.11.2009, 01:27  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

Принимай в цикле побайтно, а в серин добавь параметр timeout
sanek Дата: Ср, 04.11.2009, 17:14  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 84
Репутация: 0   ±
Замечания:   ±
На сайте с 09.04.2009

Статус: Offline

если добавляю timeout, принятое не соответствует переданному.

Добавлено (04.11.2009, 17.14.23)
---------------------------------------------
прошу прощения с timeout делал в пикбэйсик,получал всякую ерись, в протоне работает идеально.
спасибо.
как мне проверить "если STR wer="ring" тогда программа идет дальше"

Сообщение отредактировал sanek - Ср, 04.11.2009, 18:57
Dmitry Дата: Ср, 04.11.2009, 22:17  |                                                                                                                Сообщение # 6
Группа: Пользователи
Ранг:  Могу и подсказать
Сообщений: 157
Репутация: 6   ±
Замечания:   ±
На сайте с 12.05.2009

Статус: Offline

если бы это был 18F, то if string1=string2 then ...
(если бы у бабушки была борода до пупа ... smile )

а так опять побайтно, в цикле сравнивать элементы массива wer c нужными символами

ADMIN Дата: Чт, 05.11.2009, 06:43  |                                                                                                                Сообщение # 7
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

А вот так не годится?

Sub_OK:
SerIn PORTA.1 , T9600 , 300 , Sub_RING,[Wait("OK")] 'Ждем команду OK в течение 300 мс, если не пришла, то идем на следующую проверку
'------Здесь действия, которые будут выполняться если пришло OK
Sub_Ring:
SerIn PORTA.1 , T9600 , 300 , Sub_BUSY,[Wait("RING")] ' То же самое, но другая команда и подпрограмма
'------Здесь действия, которые будут выполняться если пришло RING

Sub_BUSY:
SerIn PORTA.1 , T9600 , 300 , Sub_NEXT,[Wait("BUSY")]
'------Здесь действия, которые будут выполняться если пришло BUSY

Sub_NEXT:

  • Страница 1 из 1
  • 1
Поиск: