На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU
  
> Очень специфичный таймер
    Ребят, у меня есть просьба следующего плана:
    Мне нужен таймер для ВинМобайл очень своеобразный, но проблема в том, что я под эту ось никогда не писал и честно-говоря не совсем представляю как и чего пишется.

    Таймер нужен следующий:
    - есть 4 поля ввода, куда вводят числа (время паузы между сигналами в секундах)
    - 5-ое поле ввода - количество повторений N
    - кнопка "поехали"

    Нужно, чтобы при нажатии на этой кнопке таймер сделал N повторений следующего цикла:
    пауза1 бипнули неким образом, пауза2 бипнули, пауза3 - бипнули, пауза4 - бипнули

    Если какая-то из пауз нулевая - фазу можно пропустить.

    На Делфи это выглядело бы примерно так:

    ExpandedWrap disabled
      procedure timer()
      const paus_cnt = 4;
      var
        n, i, j : word;
        pause   : array [1..paus_cnt] word;
      begin
      //тут заполнение n и  массива pause
      {
      ИЗ серии
      pause[1]:=strtoint(form1.edit1.text);
      pause[2]:=strtoint(form1.edit2.text);
      pause[3]:=strtoint(form1.edit3.text);
      pause[4]:=strtoint(form1.edit4.text);
      n       :=strtoint(form1.edit5.text);
      }
        for i:=1 to n do
          for j:=1 to paus_cnt do
            if pause[j]>0 then
            begin
              sleep(1000*pause[j]);
              windows.Beep(456,300); //frequency, duration
            end;
      end;


    И еще хотелось бы, чтобы при выходе эта программка сохраняла все своим данные в файлик, а при котрытии - считывала их.
    Вот пожалуй и все.

    И я хотел бы попросить, если это возможно, чтобы кто-то собрал подобный код и приложил к сообщение в откомпилированном виде.
    У меня кажись Windows Mobile 6.1 Professional
      Ставь таймер SetTimer на минимальный шаг.
      С этим шагом тебе либо будет приходить сообщение WM_TIMER, либо вызываться твой обработчик - по желанию. (либо OnTimer)
      Считай количество вызовов.
      Далее в цикле для каждого периода, если counter%(period/step) == 0, то вызывай обработку + выход из цикла.

      Имхо, самый простой вариант, но безусловно не realtime.

      Вот ещё можно почитать про одиночный таймер-колесо
        SVK, спасибо, просто пока что я смутно представляю на чем писать такие приложения (под ВинМобайл), как их отлаживать, какие системные вызовы и т.д. И разбираться ради 1 приложения - большого смысла не вижу, особенно, учитывая, что следующее писать, скорее всего буду нескоро.

        Учитывая, что по моим оценкам, чтобы написать такое требуется минут 15-20 при знании всей этой кухни, я решил, что сделать это за меня - будет не слишком большой наглостью. Особенно, учитывая, что в других разделах я сам помогаю вроде не так и мало.

        Ну, конечно, если так думаю только я, то через день-другой буду или разбираться или искать вариант с оплатой. Не думаю, что такой скриптик может стоить много.
          Soul :), дело в том, что программирование для ВинМобайл, в данном случае, почти ничем не отличается от программирования для Windows XP/Vista/7 :). Единственная трудность - в WinCE нет функции Beep, поэтому придется проигрывать wav.

          Мне вот только не понятно, в названии топика говорится о таймере (т.е. асинхронная работа), в твоем же коде используется sleep (синхронная работа). Что именно тебе надо? Если синхронная, то код у тебя уже есть, надо его только переписать на C++.
            Таймер я имел в виду не системный, а тот, который в мобильниках, например.

            Одним словом: я каждый день делаю определенные упражнения, для которых я хочу задавать себе ритм выполнения и постепенно увеличивать некоторый фазы для прогресса. Вот и все.

            Но компилировать-то, наверное, надо как-то иначе? Ведь не будут же вин32 приложения бегать под ВинМобайл?

            На С++, конечно, переписать не проблема. Как организовать контролы и проиграть wav-ку?
              Цитата Soul :) @
              я каждый день делаю определенные упражнения, для которых я хочу задавать себе ритм выполнения и постепенно увеличивать некоторый фазы для прогресса. Вот и все.
              Эх, опередил мои предположения. Может тебе тогда попробовать уже готовое ПО? поиск по слову метроном (из прошлого Palm, помню достаточно большую массу подобного ПО, в том числе и с несколькими таймерами). Например: Open Metronome
                Цитата Soul :) @
                Но компилировать-то, наверное, надо как-то иначе? Ведь не будут же вин32 приложения бегать под ВинМобайл?

                :) Я свой диплом писал и отлаживал на PC :) А потом просто перекомпилировал под ВинЦе и все заработало :)
                Так что можешь взять VS2008, поставить нужный SDK, сделать 2 проекта, один для PC (простой Win32), другой для Smart Devices. Проекты можешь положить в одну папку и они должны включать одни и теже файлы.
                Вот и все. Такой способ таботает как часы :yes:

                Цитата Soul :) @
                Как организовать контролы и проиграть wav-ку?

                wav проиграть PlaySound'ом. Контролы организовывай так, как тебе удобно :) Только учти размер дисплея ;)
                  Спасибо, поставил вот эту штуку: http://4pda.ru/forum/index.php?showtopic=214478&hl=%EC%E5%F2%F0%EE%ED%EE%EC
                  мне вполне подходит.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0250 ]   [ 15 queries used ]   [ Generated: 19.04.24, 20:11 GMT ]