Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизПоочерёдность задач! Найти похожие ветки
← →
FreeZ © (2007-03-13 23:05) [0]Вечер добрый! Снова к Вам за помощью!
Дано:
- устройство, подключено на сом-порт,
- Данные читаю с помощью команды ReadStr
- Записываю соответственно WriteStrvar
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