This is cpp, for windows xp, compiled with the Dev c++ compiler version 4.9.9.2. Pretend new lines are in the right spot; my email program forces returns where I do not want them. When the line:
cmd=getch();is commented out, the program works perfectly, but uncomment it and the program will not work. Oddly, pressing b twice will cause it to work once, but other than that it will not beep. Also note that the q and e commands do not work because system("exit") did not exit the program like I wanted; I am still looking for a way of doing this.
Code for beepclock.cpp: #include <conio.h #include <iostream #include <windows.h #include <stdio.h #include <time.h #include <stdlib.h using namespace std; int main () { int end=0; int min=0;//stores current system minutesint min2=0;//stores minutes as well, used to make infinite loop so beeps do not happen
//multiple times for the same minute int hour=0;//stores current hourbool beeps=true;//True' is beeps enabled, 'false' is silence string cmd;
cout<<"This program beeps once on the quarter hour,";cout<<"\ntwice on the half, and three times at quarter of the hour,\n"; cout<<"all at 488 mhz. Each hour it beeps as many times as the hour is at 244mhz.\n"; cout<<"To silence beeps, type \"s\", and to reenable them type \"b\".\n";
cout<<"To exit, press either \"e\" or \"q\".\n";while(end==0){//loop not supposed to ever end so monitoring of sys clock and beep alerts continue
time_t now=time(NULL);//get current time in secs from 01-01-70tm* t =localtime(&now);//ccvert to tm struct for getting minutes and hofs later
min=t->tm_min;//get minutes from said tm struct min2=min;//used for loop at the end of this main loop hour=t->tm_hour;//now get hours if(hour>12) hour-=12;//set to 12 hour, 1300=1:00 if(hour==0)hour=12;//0000=12 midnight if(min==0&&beeps){//t is on an hour, for(int i=0;i<hour;i++){//s beep that hour Beep(244, 500); Sleep(500);//pause else{//is it on a 15-minute time? if(min==15&&beeps){//15 past the hour, beep once Beep(488, 500); else if(min==30&&beeps){//half past, beep twice Beep(488, 500); Sleep(500); Beep(488, 500); else if(min==45&&beeps){//quarter of, beep 3 times Beep(488, 500); Sleep(500); Beep(488, 500); Sleep(500); Beep(488, 500); while(min==min2){//idle in this loop until minute changes time_t now=time(NULL);//get current time in secs from 01-01-70 tm* t =localtime(&now);//ccvert to tm struct for getting minutes min2=t->tm_min;//get minutes again to see if this loop should end//comment following line and prog runs great, leave it and no beeps. //I used it thinking that if no <enter> was needed then it would just wtch for input, not wait for it like it is seeming to do
cmd=getch();//this loop is good for input//because it is almost always running, getch gets char from kbd w/o <enter
if(cmd=="s"){ beeps=false; system("cls"); cout<<"Beeps disabled, type \"b\" to enable.\n"; else if(cmd=="b"){ beeps=true; system("cls"); cout<<"Beeps enabled, type \"s\" to disable.\n"; cout<<"test";//to tell me when loop exits, for testing } cin.get(); return false; Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 23:42:18 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
I could not really help unless you had an example bit of source
that doesn't
work the way you expect it to. When your writing lists like this
you should
try to break the problem down into a simple small main that shows
the
problems o we can help fix it.
Ken
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Alex
Hall
Sent: Friday, June 06, 2008 9:22 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
I will look into that. Google seems silent on the subject, but I
have
probably not hit on the correct search terms that will uncover
the
information. Do you know anything about getchar() and
getch()"Getch seems
to react to a character input with no enter key, while getchar
seems more
like cin>>. I used getch hoping for the results I am looking
for, but,
while I can press letters of commands and have those commands
execute
without me hitting enter, there is still a problem in the
program; the
actual function I want will not run.
Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 21:08:24 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
Since your using Devc++ your best bet is probably the selectstatement formaking it continue on. Most of the time people use the selectstatement forsocket programs and once you master it you will find making amulti usergame easier as well. I just thought I would point you in therightdirection.
Ken
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: Friday, June 06, 2008 6:08 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
Ok, I have it working, thanks for your help!!! The whole timething makesmore sense now. My only hang-up now (until the next one comesalong, I amsure) is that I need it to run constantly, which it does, but Iwould liketo be able to give commands. Currently, though, it stops running and waits for my commands,then executesthem and hits my cin >> and stops again. Is there some sort ofcin>> thatdoes not make the system stop to await input?
Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 16:58:31 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
Then what you need is the tm structure and a function calledlocal time.There is a simple example on this page.
http://www.cplusplus.com/reference/clibrary/ctime/localtime.html
Note they just print the full time in this string but if youlook in yourtime.h file you will find all the tm_day tm_month tm_year fieldsthat youcan use in the structure tm if you still have trouble just dropme a lineand I will create another simple program.
A hint is use the tm structure that they pass to the asctimefunction butuse it like bla.tm_day etc.
Ken
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: Friday, June 06, 2008 3:23 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
I have read it, but mktime and the others will not work as theymake theentire string and all I am trying to get out of the deal is theminutes, notthe entire thing. I could make minutes out of the seconds likeyou did, butthat would be a very large amount of minutes that I could not getas beingeither on the hour or 15, 30, or 45 minutes after the hour.Similar withthe hour itself; I could not say which hour it is. Is there away ofgetting the minutes out of the tm object, defined in the objectdefinitionas tm_min?
Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 14:46:34 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
That is the system clock all I did was subtract the system clockfor whenthe program began to the system clock after the loop. The t1 isthe numberof seconds from that date in 1970 so with that you should be ableto use thectime on the page I sent you to get a printable time. I reallythink youneed to read the page I sent you . -----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: Friday, June 06, 2008 2:36 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
Got it. Is there a way to apply this to tracking the systemclock insteadof the elapsed time of a program?
Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 14:13:13 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
If you look in time.h you will find that time_t when using devc++ is just along int. And what it is, is the amount of seconds since 1970some time.If you read this page you will learn more.
http://rabbit.eng.miami.edu/info/functions/time.html
Why I use null is because that gives you the current time. Iused themodulus because that gives you the remainder in a division inthis case itwould be 5 seconds. If you had 70 seconds it would return aremainder of 10instead of 5.
Ken
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: Friday, June 06, 2008 1:44 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
Thanks. A couple questions: 1. Exactly what is the time_t object and what can you do withit?2. Why, to get seconds, do you mod by 60 yet minutes you divideby 60?3. Why do you pass null to the time function, and what does thattimefunction return?
Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 13:25:37 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
Ok while I was waiting on your response I wrote this to check theminutesand seconds elapsed while running some commands. Note I did notuse anyspecial libraries like a Date class that they have in mostcompilers. Hereis the most basic with out using assembler snicker. It works forboth gccand visual studio's c++ Just delete the defined lines dependingon whatyour using.
#ifdef VC++_COMPILER #include <windows.h #endif #include <time.h #include <iostream
using namespace std;
int main(int argc, char* argv[]) { time_t t1 = time(NULL);
//do some tasks here for (long i=0;i<65;i++) #ifdef GCC //_sleep(1000); #endif #ifdef VC++_COMPILER Sleep(1000); #endif
time_t t2 = time(NULL); int seconds=(t2-t1)%60; int minutes=(t2-t1)/60;
cout <<"elapsed time = "<<minutes<< " minutes "<< seconds<< "seconds"<<endl;
return (0);
}
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of KenPerrySent: Friday, June 06, 2008 12:58 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
Oh sorry the original mail did not come to me it got junked I gottheresponse and that was the one I was replying to.
Now I can tell you how to get system time all the way to theassembler levelbut it helps in knowing what c++ environment your working inbecause itmakes a difference for example they have data and time classes inMicrosoftthat is some times easier to use then to actually write the codeyourself.So tell me what compiler your using and for what operating systemand I willgive you an example.
Ken
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: Friday, June 06, 2008 12:34 PM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
The example did not have stdlib, and stdio was just the word, noh. Thanks.The question still stands, though: how can I get the minutes ofthe systemtime? Apparently there is a time_t object, but I could not findmuch onthat.
Have a great day, Alex
----- Original Message ----- From: "Ken Perry" <whistler@xxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 12:09:03 -0700 Subject: RE: [BULK] get minutes of system time as int in c++
You should be able to compile a printf into your c++ program aslong as youinclude the header for printf which is stdio and stdlib with thehextention.
Ken
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: Friday, June 06, 2008 11:04 AM To: programmingblind@xxxxxxxxxxxxx Subject: RE: [BULK] get minutes of system time as int in c++
Yes, just the 34 of 16:34. The examples used printf() which is,I believe,a c function and stopped my program from compiling in cpp.
Have a great day, Alex
----- Original Message ----- From: "Sean Farrow" <sean.farrow@xxxxxxxxxxxxxxxx To: <programmingblind@xxxxxxxxxxxxx Date sent: Fri, 6 Jun 2008 18:27:38 +0100 Subject: RE: [BULK] get minutes of system time as int in c++
Hi Alex: Plese could you clarify what you want: if the time is 16:34, doyou justwant the 34? What examples did you fine? Sean.
-----Original Message----- From: programmingblind-bounce@xxxxxxxxxxxxx [mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of AlexHallSent: 06 June 2008 17:50 To: programmingblind@xxxxxxxxxxxxx Subject: [BULK] get minutes of system time as int in c++ Importance: Low
how could I go about getting the minutes, as an integer, of thesystemtime using cpp? I tried to find it, but got what seemed to beexamplesin c not cpp. Thanks.
Have a great day, Alex __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ Information from ESET NOD32 Antivirus, version ofvirussignature database 3164 (20080606) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com
__________ Information from ESET NOD32 Antivirus, version ofvirussignature database 3164 (20080606) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________ View the list's information and change your settings at //www.freelists.org/list/programmingblind
__________View the list's information and change your settings at //www.freelists.org/list/programmingblind