Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.062 c
1-1171386575
cando
2007-02-13 20:09
2007.04.08
буфер обмена


2-1174432039
koha
2007-03-21 02:07
2007.04.08
Function WinSvc.GetServiceDisplayName


2-1173949007
Choco
2007-03-15 11:56
2007.04.08
фильтр не работает


3-1168947590
vlad2
2007-01-16 14:39
2007.04.08
Есть ли альтернатива Paradox y?


15-1173949758
Darvin
2007-03-15 12:09
2007.04.08
Перезагрузка WinXP при попытке работы с устройством





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский