Gå til innhold

[Løst]Noen som kan lage et slags pausesystem?


Anbefalte innlegg

Der jeg jobber nå har vi rett og slett et bedriten pausesystem. Det oppdateres sjeldent, og vi får 50% av gangene beskjed om når vi har pause.

 

Det funker slik nå at vi setter oss i pause via et webinterface, og vi får da beskjed om hvem som har pause, hvor lenge de har igjen, hvor mange som er i kø osv osv.

 

Er det ingen der ute som kan lage et helt "basic" system, der folk kan sette seg i i en kø, der la oss si 4 og 4 kan ha pause samtidlig, samt. da sette seg i kø etc.

 

Den raskeste og beste løsningen er vel et helt vanlig dos-script eller noe? Nå er ikke jeg noe script-geni(sikkert derfor jeg poster her;) ), men et dos-script kan vel ikke ta mye ressurser fra enten serverens side elelr klientens side.

 

Vi blir vel rundt 50-60 stykker som kommer til å bruke dette, men opp til 20-25 stykker i kø / pause samtidlig.

 

 

Takker for svar!

Lenke til kommentar
Videoannonse
Annonse

Hvordan vil dette fungerer i PHP da?

 

Rimelig sikker på at vi har en webtjener med en databaseløsning og støtte for PHP. Og hvis vi evt. ikke har dette, så kan jeg få noen til å sette opp;)

 

Håper ikke du/dere trenger noe tilgang til nettet her på jobben, for det vil _IKKE_ være mulig, ikke i det minste en gang :/

Lenke til kommentar
  • 3 uker senere...

GG i dårlig humør i dag? :p

(før har GG tilsynelatende "på sparket" laget console-program for endring av skjerm-innstillinger bare fordi noen spurte om det var mulig i bat...)

#include <windows.h>
#include <iostream>
int sleeptime=0;
int main(int argc, char* argv[])
{
if (argc != 2 || atoi(argv[1]) < 1)
{
std::cout << "usage: " << argv[0] << " N\n(where N is number in seconds)";
Sleep(1000);
return 1;
}
sleeptime=atoi(argv[1]);
Sleep(sleeptime*1000);
return 0;
}

http://www.speedyshare.com/753725465.html

extract den till C:\windows\system32

(så er det i cmd/bat, fex:

sleep 5

= sleep 5 seconds)

EDIT:

her er forbedret kode, men gidder ikke kompilere & re-uploade, srry :p (og første funker helt fint uansett)

//console sleep v3 by Hans
#include <windows.h>
#ifndef ULTRA_MINI
#include <iostream>
#endif
#ifdef ULTRA_MINI
int main(char* argv[1])
{
return (Sleep(atoi(argv[1])*1000));
}
#else // if not ULTRA_MINI
int main(int argc, char* argv[])
{
if (argc != 2 || atoi(argv[1]) < 1)
{
std::cout << "usage: " << argv[0] << " N\n(where N is number in seconds)";
Sleep(1000);
return 1;
}
Sleep(atoi(argv[1])*1000);
return 0;
}
#endif//ULTRA_MINI

Endret av Hans_Henrik
Lenke til kommentar

Da har jeg laget et slikt program, ingen batch eller noe nødvendig.

Krever .NET framework 3.5 dog.

 

edit:

Jeg tenkte skrive litt mer om det, men jeg gidder ikke uploade før noen melder interesse.

 

Anyways, det fungerer slik at det er to programmer: én server og én klient. Den bruker port 8591 på TCP, og 8592 på UDP for at klienten skal kunne automatisk finne serveren... jeg fikk dog ikke dette til å funke, serveren tok ikke opp broadcast pakkene av en eller annen grunn.

 

Serverprogrammet har to instillinger i hovedvinduet; loggføring og antall personer som har pause samtidig. Det er også en knapp for å endre de forskjellige pausetypene, det er ingen definert som standard, så dette må endres første gang serveren startes. Når en endrer disse vil alle klientene bli automatisk oppdatert.

Serverprogrammet viser to lister: de som venter i kø på pause, og de som er ute til pause.

Når noen blir flyttet fra køen til pause, vil klientprogrammet vise en melding om at brukeren kan gå til pause.

 

Klientprogrammet er temmelig enkelt, det er et systemtray ikon. Hvis du høyreklikker får du en context meny, denne inneholder noen valg, inkludert de forskjellige pausetypene som er definert på serveren. Klikk på en pausetype, og brukeren blir satt i ventekø.

Klienten får melding når de får gå til pause, og melding når pausen er over.

 

Dersom koblingen blir brutt, så kommer det opp en advarsel, programmet vil prøve å koble opp til serveren på nytt hvert tiende sekund til programmet enten avsluttes, eller koblingen er vellykket.

 

Litt teknisk om hvordan den funker internt:

Nettverksprotokollen jeg bruker er temmelig simpel, det er klartekst, og den har to forskjellige instruksjoner: variabler og funksjoner. Flere instruksjoner i samme pakke skilles med semikolon.

Pausetypene er satt som variabler, og ser slik ut:

pausetype0=Kaffepause,5

Det finnes også en rekke funksjoner, som ser slik ut:

pause(Kaffepause, 5)

Som ville vært en melding fra klienten om at klienten ønsker å gå i kø for en 5 minutter kaffepause.

Følgelig ser pakken som forteller klienten hvilke pauser som skal ligge i listen nogenlunde slik ut:

ClearPauseTypes();pausetype0=Kaffepause,5;pausetype1=Lunsj,30;UpdatePauseTypes()
Endret av GeirGrusom
Lenke til kommentar

Her er binærfilene i det minste :) kildekoden kommer litt senere.

 

Jeg fikk Udp saken til å fungere en gang tror jeg... men det har ikke gjort det i det siste, si ifra hvis noen får det til å fungere (dvs at klienten klarer å koble seg til serveren uten at noen informasjon er gitt av brukeren)

 

Som sagt bruker en port 8591 (TCP) 8592(UDP) og 8593(TCP) for kobling. 8591 kan endres og er porten som den meste trafikken går på, og må være tillatt av firewallen for serveren. 8592 og 8593 er for at klienten skal kunne automatisk oppdage serveren og er ikke kritisk (og kan heller ikke endres)

 

Edit: La til kildekode

PauseSystem.zip

PauseSystem_src.zip

Endret av GeirGrusom
Lenke til kommentar
  • 3 uker senere...

 

#!/usr/local/bin/expect

# Script to enforce a 10 minute break

# every half hour from typing -

# Written for someone (Uwe Hollerbach)

# with Carpal Tunnel Syndrome.

# If you type for more than 20 minutes

# straight, the script rings the bell

# after every character until you take

# a 10 minute break.

# Author: Don Libes, NIST

# Date: Feb 26, '95

spawn $env(SHELL)

# set start and stop times

set start [clock seconds]

set stop [clock seconds]

# typing and break, in seconds

set typing 1200

set notyping 600

interact -nobuffer -re . {

set now [clock seconds]

if {$now-$stop > $notyping} {

set start [clock seconds]

} elseif {$now-$start > $typing} {

send_user "07"

}

set stop [clock seconds]

 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...