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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2012, 01:22   #1
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию Delphi и COM-порт.

Есть платка с 3 кнопками, подключенная к com порту. По нажатию на каждую из кнопок в com порт отсылаются символы 1,2 и 3 соответственно. В проге они считываются с com-порта. Использую CPortLib.
Необходимо сделать что-то типа тестирования с выбором ответа с этих кнопок. Пробовал реализовать считывание с com-порта при помощи repeat until, с первым вопросом проходит все нормально: программа принимает символ, сравнивает с правильным ответом, а со следующими вопросом такое не проходит. Так как прога берет первый принятый символ и сравнивает сразу со всеми вопросами(вариантами ответов).
Как реализовать задачу так, чтобы при нажатии на кнопку сравнивался ответ только с текущим вопросом, а не со всеми сразу? т.е 1ый вопрос > нажатие кнопки > сравнивание с ответом > результат (правильно/не правильно) > 2ой вопрос > нажатие кнопки > сравнивание с ответом > результат... и т.д.
буду благодарен любой помощи....)
ArcaN0id вне форума Ответить с цитированием
Старый 10.03.2012, 02:41   #2
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Здравствуйте, приехали. А исходный код где?

На самом деле все делается очень просто. Например, вы можете хранить номер текущего вопроса в переменной. А считывание производить с помощью таймера.

Грубо говоря:
Таймер.
Код:
*код получения сигнала с компорта*
***
If (Num_Question=2) and (Answer=3) then ShowMessage('Вы совершенно верно ответили на второй вопрос!');
***
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 10.03.2012, 16:25   #3
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

приходила в голову идея с таймером... ладно вечером попробую, если что напишу
ArcaN0id вне форума Ответить с цитированием
Старый 10.03.2012, 21:55   #4
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

с таймером вообще не получается... пробую все также с repeat until... сейчас пробую хотябы чтоб по очереди к label1,2,3... присваивался номер нажатой кнопки.... но почему - то при первом нажатии всем лэйблам присваивается номер нажатой кнопки одновременно... как сделать так чтобы прога после первого нажатия присвоила к первому лэйблу, после второго - второму и т.д


Код:
begin
i:=0;
for i:=1 to 5 do
begin
repeat
ComPort1.ReadStr(s,1);
Application.ProcessMessages;
s1:=s;
s:='';
until (s1='1') or (s1='2') or (s1='3');
if i=1 then label1.Caption:=s1;
if i=2 then label2.Caption:=s1;
if i=3 then label3.Caption:=s1;
if i=4 then label4.Caption:=s1;
if i=5 then label5.Caption:=s1;
end;
if (s1='1') or (s1='2') or (s1='3') then i:=i+1;
end;
end.
ArcaN0id вне форума Ответить с цитированием
Старый 11.03.2012, 04:06   #5
ArcaN0id
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 62
По умолчанию

проблема в том что во время нажатия кнопки, в порт каждую мс отсылается символ, т.е получаем 1111111111. Как сделать чтобы прога приняла только первый символ?
ArcaN0id вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lpt порт и delphi _PROGRAMM_ Общие вопросы Delphi 9 25.10.2011 08:29
Проблема с отправкой строки в com-порт. Delphi KopfSchuss Помощь студентам 5 26.04.2011 20:54
[Delphi] подача определенного питание на УСБ порт MASSIOMO Помощь студентам 5 15.04.2009 21:39
Delphi 7, Com порт, Win XP dagarik Win Api 5 30.12.2008 08:26