Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Merkkivalot

Sivun loppuun

Antti Laaksonen [16.07.2002 15:56:38]

#

Tietokonelaitteisto sisältää useita merkkivaloja, joiden vilkuttaminen onnistuu helposti myös QBasicilla. Tämä listaus sisältää pari käyttökelpoista aliohjelmaa näppäimistön ja diskettiaseman valojen kontrollointiin sekä esimerkin, joka vilkuttaa kaikkia valoja viisitoista kertaa.

Näppäimistön merkkijonojen vaihtamisesta voi olla oikeastikin hyötyä, sillä valoa vaihtaessa myös Num, Caps tai Scroll Lockin tila vaihtuu. Diskettiaseman valon vaihtamisesta sen sijaan on tuskin juuri hyötyä, lähinnä voi uskotella ohjelman käyttäjälle, että diskettiasemassa tapahtuu jotain.

Itselläni näppäimistön merkkivalojen ajastettu vaihtaminen, kuten tässä esimerkissä, lukitsi jotenkin oudosti Insert-näppäimen, ja QBasic piti käynnistää monesti uudestaan. Lisäksi Win2000:ssa diskettiaseman valon vilkuttaminen ei jostain syystä onnistunut.

'Esimerkkiohjelma Num, Caps, ja Scroll Lockin sekä
'diskettiaseman valon käsittelystä
'
'Copyright Antti Laaksonen 2002 - www.ohjelmointiputka.net

DECLARE SUB VaihdaLukko (I%, t%)
DECLARE SUB VaihdaDiskettiValo (t%)

'VaihdaLukko-aliohjelman parametrit:
'VaihdaLukko(i%,t%)
'
'i% = 0             Num Lock
'i% = 1             Caps Lock
'i% = 2             Scroll Lock
'
't% = 0             pois
't% = 1             päälle

'VaihdaDiskettiValo-aliohjelman parametrit:
'VaihdaDiskettiValo(t%)
'
't% = 0             pois
't% = 1             päälle

'sytyttää ja sammuttaa valoja 15 kertaa
FOR I = 1 TO 15
  a! = TIMER
  DO WHILE a! + .1 > TIMER: LOOP
  v% = ABS(v% - 1)
  VaihdaLukko 0, v%
  VaihdaLukko 1, v%
  VaihdaLukko 2, v%

  VaihdaDiskettiValo v%
  IF INKEY$ = CHR$(27) THEN GOTO loppu
NEXT

loppu:
VaihdaDiskettiValo 0

SUB VaihdaDiskettiValo (t%)
  IF t% = 0 THEN
    OUT &H3F2, 10
  ELSE
    OUT &H3F2, 28
  END IF
END SUB

SUB VaihdaLukko (I%, t%)
  DIM K(2) AS INTEGER
  K(0) = 34: K(1) = 66: K(2) = 18

  num% = K(I%)
  DEF SEG = &H40
  a% = PEEK(&H17)
  IF t% = 0 THEN
    l% = ABS(a% IMP num%) + 1
  ELSE
    l% = a% OR num%
  END IF
  POKE &H17, l%
END SUB

Jake [20.07.2002 16:29:47]

#

hiano

herkko [03.01.2003 19:23:06]

#

tollanen on ihan nätti! piipperin rämpyttäjät voivat heittää musiikin sekaan vähän hienoa valorämpytystä.. tai sitten vaan jonkin pelin pelin alkuun tolla jotain hienoa..

progo [24.01.2003 10:38:12]

#

Hyvähän tuo on.. mainio vinkki vaikka kone kaatuikin pari kertaa :)

Sami [11.02.2003 16:01:06]

#

*heh*
mielenkiintoinen värkki, vaikka valoillahan ei saisi leikkiä :)

InvalidCo [07.05.2003 15:28:44]

#

Entä CD-aseman valo?

-PC-Master-

blixt [24.06.2003 00:06:15]

#

nätti on ja hauska.

Stume [19.01.2004 19:01:10]

#

aika lyhyt.

Claw [02.06.2004 18:40:00]

#

toimii

Fisher [10.06.2004 18:36:56]

#

eikö tuohon pitäisi lisätä

DEF SEG

että se menisi takaisin normaaliin tilaan?

X073 [18.05.2005 17:16:28]

#

siis miten te saatte tuon näkymään ja millä ohjelmalla???
oon kokeillu vaikka sun mitä...

siansaksamies [29.07.2005 14:42:32]

#

Ihan kiva, mutta mitään noista lampuista ei löydy meikäläisen ikivanhasta läppäristä.

siansaksamies [03.11.2005 17:36:43]

#

Mutta... Toihan ei toimi DOSBoxin kautta QBASIC:lla ajettuna.

Modulator [12.06.2006 18:47:44]

#

ei toimi

Juhko [13.10.2006 14:51:25]

#

Copyright... AAAAAAAAAARGH!!!

moptim [05.12.2006 16:10:17]

#

Not work...

Chaosworm [01.05.2007 09:54:31]

#

Mitään ei tapahdu...

gamehouse [30.05.2007 16:03:37]

#

Valot saa sammumaan kirjoittamalla loppu- osioon:

VaihdaLukko 0, 0
VaihdaLukko 1, 0
Vaihdalukko 2, 0

Juhko [12.08.2008 14:59:19]

#

Sotkee Insert-näppäimen, mutta valot eivät vaihdu...

black cat [01.12.2009 13:14:19]

#

WWWWWWWWWAAAAAAAAAAAUUUUUUUUUUUU!!!!!!!!!!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta