Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 06:52   #1
RockForr
Форумчанин
 
Аватар для RockForr
 
Регистрация: 28.04.2009
Сообщений: 112
По умолчанию Срабатывание датчика по таймеру

Пишу программу для модуля подключенного к компу, все в моей программе работает, осталось обработать информацию с датчиков подключенных к модулю. ТАКИМ ОБРАЗОМ, ЧТОБЫ ПО ТАЙМЕРУ ПРОГРАММА ОПРАШИВАЛА ПОРТЫ ОТ МОДУЛЯ, НАПРИМЕР ЕСЛИ СРАБОТАЛ ДАТЧИК, ТО КАРТИНКА В ПРОГРАММЕ МЕНЯЛАСЬ.
ПОДСКАЖИТЕ ПОЖАЛУЙСТА, МОЙ КОД НЕ РАБОТАЕТ.

procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD);stdcall;
begin
CRbyte := 13; // HEX 0x0D
LFbyte := 10; // HEX 0x0A
buffer:= '$KE,RD,18,1' + Char(CRbyte) + Char(LFbyte);
WriteFile(CommHandle, PChar(buffer)^, Length(buffer), NumberWritten, nil);
Form2.Image19.Visible:=true;
Form2.Image20.Visible:=false;
end;
RockForr вне форума Ответить с цитированием
Старый 23.05.2009, 07:57   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А ваша процедура procedure FNTimeCallBack к какой форме привязана?
Если вы ее внесете в текст Unit2 и поставите
procedure Form2.FNTimeCallBack
то все будет работать...
При условии, конечно, что в Image19 и Image20 предварительно загружены какие-то изображения....\

Последний раз редактировалось mihali4; 23.05.2009 в 08:00.
mihali4 вне форума Ответить с цитированием
Старый 24.05.2009, 13:17   #3
RockForr
Форумчанин
 
Аватар для RockForr
 
Регистрация: 28.04.2009
Сообщений: 112
По умолчанию

Я пробовал, не получается, может быть какую-нибудь другую процедуру посоветуете?
Или подскажите процедуру для КНОПОЧКИ НА МОДУЛЕ, чтобы при её нажатии, в программе отображалось, что она нажата.

Пользуйтесь кнопкой "Правка"!

Последний раз редактировалось mihali4; 24.05.2009 в 22:45. Причина: Объединение постов
RockForr вне форума Ответить с цитированием
Старый 24.05.2009, 16:02   #4
Zloy_Doomer
Форумчанин
 
Аватар для Zloy_Doomer
 
Регистрация: 25.04.2008
Сообщений: 277
По умолчанию

Цитата:
Сообщение от RockForr Посмотреть сообщение
Или подскажите процедуру для КНОПОЧКИ НА МОДУЛЕ, чтобы при её нажатии, в программе отображалось, что она нажата.
Ну для етого тебе нада ждать от твоего модуля, который подключен к компу определенную команду, которая будет послана при нажатии на кнопку... Ну и дальше типа чето: If такая т окоманда Then Делать то то...

Ди и еще...По моему в вашей процедуре вы не опрашиваете ком порт а пытаетесь чето в него записать...Что противоречит вашим желаниям...Если вы хотите опросить датчик то нада использовать ReadFile а не WriteFile...
it is a good day to die

Последний раз редактировалось Zloy_Doomer; 24.05.2009 в 16:04.
Zloy_Doomer вне форума Ответить с цитированием
Старый 24.05.2009, 17:16   #5
RockForr
Форумчанин
 
Аватар для RockForr
 
Регистрация: 28.04.2009
Сообщений: 112
По умолчанию

С портом все нормально, эту часть я сделал. А вот процедуру на кнопку с модуля не могу, пробовал, не получается

Код:
procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD);stdcall;
begin
CRbyte := 13; // HEX 0x0D
LFbyte := 10; // HEX 0x0A
if V=1 then
buffer:= '$KE,RD,18,1' + Char(CRbyte) + Char(LFbyte);
ReadFile(CommHandle, BinBuf, 128, NumberWritten, nil);
Form2.Image19.Visible:=true;
Form2.Image20.Visible:=false;
end;

Последний раз редактировалось Stilet; 25.05.2009 в 13:14.
RockForr вне форума Ответить с цитированием
Старый 24.05.2009, 21:11   #6
Zloy_Doomer
Форумчанин
 
Аватар для Zloy_Doomer
 
Регистрация: 25.04.2008
Сообщений: 277
По умолчанию

Непанятно зачем присваивать переменной buffer какое то значение, в нее ведь будет считано то значение которое примется с устройства...Ну да лдно, в принципе вы идете по верному пути, после того как считали то что пришло с девайса проверяем на наличие нужного нам содержимого...Если да то делаем то то если нет другое...
it is a good day to die
Zloy_Doomer вне форума Ответить с цитированием
Старый 25.05.2009, 05:28   #7
RockForr
Форумчанин
 
Аватар для RockForr
 
Регистрация: 28.04.2009
Сообщений: 112
По умолчанию

Подскажите какая процедура для кнопки на модуле, чтобы кнопка реагировала
Расшифруйте эту строку, это случайно не процедура для нажатия кнопки на модуле?
(StrLComp(BinBuf, PChar(Buffer), Length(Buffer)) = 1)

Еще раз - есть кнопка "Правка" !

Последний раз редактировалось mihali4; 25.05.2009 в 11:58. Причина: Объединение постов
RockForr вне форума Ответить с цитированием
Старый 25.05.2009, 09:38   #8
Zloy_Doomer
Форумчанин
 
Аватар для Zloy_Doomer
 
Регистрация: 25.04.2008
Сообщений: 277
По умолчанию

Цитата:
Сообщение от RockForr Посмотреть сообщение
Подскажите какая процедура для кнопки на модуле, чтобы кнопка реагировала
Ну я не знаю какая там команда посылается при нажатии на кнопку(если вообще посылается какая нить) Ето вам лучше знать, точнее тому человеку который писал микропрограмму для вашего устройства...Узнайте что именно посылает в ком порт девайс при нажатии на кнопку и проверяйте в момент нажатия та ли инфа поступила или нет...В случае если же нету микропрограммы то читайте ман по ком портам и смотрите какой вывод куда смотрит...

А нащет StrlComp:

Функция StrlComp. Сравнивает строки. Заголовок:

Function StrlComp(Strl, Str2: PChar): PChar; .
Функция сравнивает строки, игнорируя возможную разницу в высоте букв. Возвращает такой же результат, как и StrComp. Замечу, что функция правильно работает лишь с латиницей. Для кириллицы ее нужно модифицировать

или

Функция StrLComp. Сравнивает строки. Заголовок:

Function StrLComp(Dest, Source: PChar; MaxLen: Word): PChar;

В отличие от StrComp сравнивает не более MaxLen символов строк. Возвращаемый результат такой же, как и у StrComp.
it is a good day to die

Последний раз редактировалось Zloy_Doomer; 25.05.2009 в 09:44.
Zloy_Doomer вне форума Ответить с цитированием
Старый 26.05.2009, 16:32   #9
RockForr
Форумчанин
 
Аватар для RockForr
 
Регистрация: 28.04.2009
Сообщений: 112
По умолчанию

Кто-нибудь подскажите команду, очень надо
RockForr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнить файл целыми числами из отрезка [—100; 100] с помощью датчика случайных чисел. ALEX-7-7-7 Паскаль, Turbo Pascal, PascalABC.NET 4 05.04.2009 14:51
COM, TThread, обращение по таймеру Антон Ю.Б. Общие вопросы Delphi 2 17.02.2009 09:23
Автосохранения по таймеру ScreN Общие вопросы Delphi 13 09.01.2009 18:49
Нечто подобное таймеру Артэс Общие вопросы C/C++ 8 11.02.2008 19:19
Вызов функции по таймеру Lexicss Общие вопросы Delphi 4 30.05.2007 22:47