Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

Поочерёдность задач!   Найти похожие ветки 

 
FreeZ ©   (2007-03-13 23:05) [0]

Вечер добрый! Снова к Вам за помощью!

Дано:
- устройство, подключено на сом-порт,
- Данные читаю с помощью команды ReadStr
- Записываю соответственно WriteStr

var
 Form1: TForm1;
 c: String;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Port.Open;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Port.WriteStr("?=" + #13); //Отправляю запрос на получение положения устройства.
Port.ReadStr(c,19); //Читаю положение устройства, и помешаю в String
end;

//Считываю примерно такое "+=abcdefghijklmn"
// Регистр букв, может меняться!!!

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if c[11]= "I" then Port.WriteStr("=A" + #13);  //Работает
if c[11]= "i" then Port.WriteStr("=a" + #13);  //Работает
if c[12]= "J" then Port.WriteStr("=D" + #13); //НЕ Работает, ПОЧЕМУ???
if c[11]= "j" then Port.WriteStr("=d" + #13); //НЕ Работает,  ПОЧЕМУ???
end;

end.


ПОЧЕМУ НЕ РАБОТАЮТ??? ПОМОГИТЕ!!!!

Ещё, чуть не забыл:

object Timer1: TTimer
   Interval = 250
   OnTimer = Timer1Timer
   Left = 64
   Top = 56
 end
 object Timer2: TTimer
   Interval = 700
   OnTimer = Timer2Timer
   Left = 128
   Top = 48
 end


 
DrPass ©   (2007-03-13 23:51) [1]


> if c[12]= "J" then Port.WriteStr("=D" + #13); //НЕ Работает,
>  ПОЧЕМУ???

Попробуй вместо c[12] указать c[11]


 
DrPass ©   (2007-03-13 23:52) [2]


> if c[11]= "j" then Port.WriteStr("=d" + #13);

Или наоборот, тут c[12]


 
Johnmen ©   (2007-03-14 00:20) [3]


> ПОЧЕМУ НЕ РАБОТАЮТ???

Кто не работают?

> Ещё, чуть не забыл:
> ...

Это очень важная инфа. Спасибо. Я записал...


 
Германн ©   (2007-03-14 01:01) [4]


> FreeZ ©   (13.03.07 23:05)
>
> Вечер добрый! Снова к Вам за помощью!
>
> Дано:
> - устройство, подключено на сом-порт,
> - Данные читаю с помощью команды ReadStr
> - Записываю соответственно WriteStr


> //Считываю примерно такое "+=abcdefghijklmn"
> // Регистр букв, может меняться!!!
>

1. Первый раз в своей жизни вижу "устройство", которое в ответ посылает алфавит. Бред, да и только. Может всё-таки это устройство посылает не текст, а набор байт?
2. Опять, блин, с СОМ-портом работают в синхронном режиме :(((((((((( Ну кто-нибудь наконец научится работать с СОМ-портом грамотно, т.е. естественно?
3. На кой, извините, хрен нужен тут таймер2?! Разбор полученной информации можно и нужно выполнять в Timer1Timer сразу после выполнения Port.ReadStr(c,19).
4. После принятия строки можно и нужно при её разборке проверять её длину.

P.S.
 Всё это только, если я правильно понял суть процедуры Port.ReadStr(c,19). Смущает меня наличие в ней второго параметра а также то, что посылка в порт строки подразумевает добавление #13.


 
FreeZ ©   (2007-03-14 01:22) [5]


>  Первый раз в своей жизни вижу "устройство", которое в ответ
> посылает алфавит. Бред, да и только. Может всё-таки это
> устройство посылает не текст, а набор байт?


Работа с устройством идёт в текстовом варанте! С ним можно работать даже через обычный виндовский хипертерменал!!!


>  Ну кто-нибудь наконец научится работать с СОМ-портом грамотно,
>  т.е. естественно?


Обьясни, как это??? Я же новичёк!

Можешь сам посмотреть на устройство и подсказать, буду очень благодарен!!!

http://www.anthillsolutions.com/main.html


 
RASkov   (2007-03-14 01:41) [6]

в случае применения PowerAnt программу управления Умным Домом с легкостью сможет
написать даже школьник (предварительно прочитав руководство программиста).


 
Германн ©   (2007-03-14 01:56) [7]


> FreeZ ©   (14.03.07 01:22) [5]
>
>
> >  Первый раз в своей жизни вижу "устройство", которое в
> ответ
> > посылает алфавит. Бред, да и только. Может всё-таки это
> > устройство посылает не текст, а набор байт?
>
>
> Работа с устройством идёт в текстовом варанте! С ним можно
> работать даже через обычный виндовский хипертерменал!!!
>
>
> >  Ну кто-нибудь наконец научится работать с СОМ-портом
> грамотно,
> >  т.е. естественно?
>
>
> Обьясни, как это??? Я же новичёк!
>
> Можешь сам посмотреть на устройство и подсказать, буду очень
> благодарен!!!
>
> http://www.anthillsolutions.com/main.html


Не. Я сам не хочу ничего смотреть, а точнее, не хочу изучать то, что меня не интересует. У меня и так забот хватает! Дай мне протокол связи с устройством, я может быть подскажу что делать.


 
SlymRO ©   (2007-03-14 04:19) [8]

откуда такая уверенность что c[12] наличиствует? а вдруг length(c)<12? или вообще равна 0?
1. Проверки на длинну/диапазон!
2. Зачем 2 таймера?


 
PowerAnt   (2007-03-17 10:38) [9]

Случайно наткнулся на обсуждение Вашего кусочка программы.

После посылки команды управления =A не вычитывается отчет о выполнении: +=
Получается посылаем 2 команды - теряем 2! отчета. Потом эти отчеты будут вычитаны в первом таймере (буферизацию данных никто не отменял), то есть длинна строки будет меньше 12 :).

Конструкцию типа c[] использовать не стоит - удобнее искать букву в строке. Это как раз решит ошибку c[12] или c[11].

Отсутствует логгирование команд и отчтов об их выполнении.

Использовать следует только 1 таймер в котором можно использовать команду ?%.

В программе есть стратегический просчет - следует всю работу с Муравьем вести через функцию, которая посылает команду удправления и сразу после этого вычитывает отчет о её выполнении. И то и другое следует логгировать.


 
PowerAnt   (2007-03-17 10:48) [10]

Посмотрите примеры программ на C, Visual Basik, Perl :). Они есть не только на сайте но и у Вас на компакт диске. Это коненчо не delphi, но кое что полезное оттуда подчерпнуть можно.



Страницы: 1 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
3-1169455907
AlexeyMir
2007-01-22 11:51
2007.04.08
Как в *.gdb в связанные таблицы добавить записи


2-1174382538
Malik
2007-03-20 12:22
2007.04.08
Вопрос про масштабирование StringGrid a для распечатки


2-1174385675
Adios
2007-03-20 13:14
2007.04.08
URL


15-1172649765
Vlad Oshin
2007-02-28 11:02
2007.04.08
Очередная рац.идея (боян?) :) Пульт от..


15-1173880615
shikitomedo2
2007-03-14 16:56
2007.04.08
Увольняются все в последнее время...