[C/C++] knopje aan seriele poort

Pagina: 1
Acties:

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
Ik wil graag een knopje aan mijn seriele poort hangen.
geen aan/uit knop (at :)), maar en knop die zodra je hem indrukt, even verbinding maakt, en dan weer los laat. (zoals de atx powerknop :))

zoals je misschien wel kan raden is mijn vraag:
[casemods]
Zijn er op internet tutorials voor dit te vinden? (aansluiten enzow)
[/casemods]

en:
Kan ik C/C++ laten detecteren dat de knop wordt ingedrukt?
dat ik bijvoorbeeld een programmaatje schrijf, die zodra het knopje ingedrukt wordt, een programma start ofzow?

Verwijderd

dat kan.

moet je ff zoeken hoedat het beste kan met jouw OS.

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
uhm...
wat zal ik zeggen;
heb je ook een nuttig antwoord?
tuurlijk kan het, dat weet ik ook wel;

maar HOE! :)

Verwijderd

tuurlijk ;)

welk OS heb je ?

Verwijderd

ik wou hetzelfde doen, ik heb de knopjes al, maar ik moet uitzoeken hoe ik dat doe onder VB en win2k (met dlportio) welke port(en) zijn die van de com1?

Verwijderd

Zo'n knopje heet een momentschakelaar.

Adressen van com1 t/m 4 kun je opvragen in bios.

Met win2k is het lastig om poorten aan te spreken, helemaal in het geval van interruptsharing (modem, scanner e.d.).

In principe heb je maar 3 draden nodig voor je schakeling,

pin 7 (RTS) is voor de stroom.
pin 5 (GND) is voor aarding
pin 1 (DCD) is het signaal wat terugkomt na het indrukken.

kwestie van een 5 minuutjes solderen

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
het knopje is bedoelt voor aan een linux bak.
hmz.. dus zo'n drukknopje kan ik op die manier aan mijn
seriele poort hangen.


en hoe kan ik een c programma laten detecteren dat het knopje wordt ingedrukt?
(uiteraard geen 100% processorvretende for-loop :))

Verwijderd

Als je niet weet hoe je de compoort aan moet sturen in c kun je ook assembly gebruiken 8-)

Verwijderd

Ben niet meer helemaal into Linux, maar denk dat je hier wel wat aan hebt.

Serial-HOWTO

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 04 februari 2002 20:38 schreef ne0 het volgende:
Als je niet weet hoe je de compoort aan moet sturen in c kun je ook assembly gebruiken 8-)
uhm, dan hangt het nog steeds van je OS af

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op maandag 04 februari 2002 20:46 schreef OiSyN het volgende:

[..]

uhm, dan hangt het nog steeds van je OS af
Als je alleen BIOS-calls gebruikt niet |:( :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 04 februari 2002 20:50 schreef ne0 het volgende:

[..]

Als je alleen BIOS-calls gebruikt niet |:( :)
wedden van wel :)
je OS schermt deze functies af, omdat als elke applicatie zomaar even de biosfuncties kan gebruiken het natuurlijk een zootje wordt, aangezien de bios niet is berekend op gebruik door meerdere applicaties tegelijk

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
hmz... het klinkt heeel lui :)
maar heeft iemand van jullie misschien een
kant en klaar stukje c-code die opvangt als het schakelaartje van het voorbeeldje hierboven, even aangaat??
bijvoorbeeld:

zodra(knopje-ingedrukt){
printf("hij doet het!");
}

ofzow?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 04 februari 2002 22:17 schreef Zynth het volgende:
hmz... het klinkt heeel lui :)
en dat is het ook :)
maar heeft iemand van jullie misschien een
kant en klaar stukje c-code die opvangt als het schakelaartje van het voorbeeldje hierboven, even aangaat??
bijvoorbeeld:

zodra(knopje-ingedrukt){
printf("hij doet het!");
}

ofzow?
kort gezegd: nee
Dat is dan een scriptrequest en die zijn hier niet toegestaan

ga eens zoeken naar een tutorial over het aansturen van de seriele poort, ik weet zeker dat er zat te vinden zijn :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10-2025
Iemand op GoT had daar ooit iets voor gemaakt dat je 4 of 5 knoppen op je seriele poort kon aansluiten en daar dan winamp mee kan besturen.
Moet je ff zoeken hiero.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Verwijderd

comcontroll doet dat. ik ga misshcien vrijdag even wat experimenteren

  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 11-09 09:09
Zo doe ik het op de printerpoort:

http://vrijbuiters.xs4all.nl/alarmdetect.c

"If you don't know where you are going, any road will take you there"


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
hmz...
volgens mij kan je met dat programmaatje alleen maar kijken naar de huidige status van een knop.
Wat ik meer zoek is een programma wat ik in de achtergrond kan laten draaien, en die wacht op een signaal van het knopje.
Het heeft dan dus geen zin om de status van het knopje uit te lezen, temeer omdat het over een drukknop gaat, en niet over een aan/uit knop...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

je kunt toch wel een proggie maken dat op de achtergrond draait en elke tiende seconde (ofzo) checkt of het knopje is ingedrukt

Als je elke keer een Sleep (100) doet neemt het echt practisch geen processortijd in beslag

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Met win2k is het lastig om poorten aan te spreken, helemaal in het geval van interruptsharing (modem, scanner e.d.).
Met seriele communicatie valt dat nogal mee. Ik heb zelf een proggie geschreven dat o.a. hetzelfde doet als Comcontroll. Dit proggie kan echter nog meer en werkt WEL in Windows 2000. Het maakt gewoon gebruik van Win32 API.

http://www.winamp.com/skins/reviews.jhtml?rOT=C&rOI=78349

-DTR & RTS kan je instellen op +12V of -12V.
-DCD, RI, CTS & DSR kan je uitlezen.

Door DTR of RTS via een schakelaar op DCD, RI, CTS of DSR aan te sluiten, kan je max 4 knopjes aansluiten op 1 poort.

Ik ben tenminste niet altijd hypocriet!


Verwijderd

ff voor de lol dit posten

3F8 = Com1
3E8 = Com2
2F8 = Com3
2E8 = Com4

zo ff uit mijn hooft
in qbasic weet ik wel hoe het moet ;)
code:
1
2
3
4
5
6
adres$ = &h3f8
do
out (adres$+4),2
if (imp (adres$+6) and 16)=16 then locate 2,2: print "aan"
if (imp (adres$+6) and 16)=0 then locate 2,2: print "aan"
loop until inkey$ <> ""

hij zal AAN printen zodra de RTS en de CTS met elkaar verbonden zijn.

zoek zelf maar uit hoe het in C/C++ moet

/me heet niet voor nix KingOfDos
qbasic = DOS dussuh :P

edit=typo

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

die poortjes kloppen wel, maar de volgorde alleen niet :P

het was zoiets geloof ik:

com1 = 3f8
com2 = 2f8
com3 = 3e8
com4 = 2e8

.edit: en com1 en 3 zitten op irc 3, en 2 en 4 op irq 4

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
volgens mij dwalen we een beetje van linux af :)
nou, okee, vooruit dan maar; nog even 1 vraag,
zodat ik zelf lekker verder kan.

Weten jullie howto's of tutorials van mensen die een knopje (of meerdere) aan hun seriele poort hebben gehanden, en daar een driver voor geschreven hebben (uiteraard in C en linux :))??

als ik daar een paar van vind, dan kom ik zelf wel verder :)

thnx!

---edit----
ik kan namelijk echt NIX vinden op internet hierover.
ik kan gewoon niet de goeie zoekopdracht vinden :)

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
ow!
ik bedenk me nou ineens een voorbeeld van zo'n knopje.
maar dan niet met een knopje, maar met een afstandsbediening;
lirc.
(denk trouwens ook aan je muisknop :))

LIRC kan ook dingen opvangen van de seriele poort, zonder dat hij 100% cpu gebruikt.
zoiets moet ik dus hebben voor mijn knopje.

trouwens,
als jullie urls geven van howto's/tutorials dan mag dat ook wel van aan/uit knoppen.
Eventueel wil ik er misschien namelijk ook wel een knopje aanzetten, die je in 4 standen kan zetten...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

zoek eens met google op "serial port programming linux", ik zie daar echt wel een paar HOWTO's enzo

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
daar heb ik inderdaad al op gezocht.
het probleem is, dat ik niet zooow technisch ben.
Vandaar dat ik dacht dat ik vast niet de enige was die ooit een knoppie aan zijn seriele poort had gehangen.
dus ik vroeg me af of iemand daarvan een url'tje wist...

Verwijderd

Lirc werkt i.d.d goed. Jammer voor jouw maakt het gebruik van zijn eigen serial driver. Die driver wordt als module in de kernel geladen en vangt de interrupts af. Da's toch wel aardig ingewikkeld voor een knopje!

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
haha, tja, das waar :)
maarja.

kijk, ik weet wel hoe ik een knop kan uitlezen op een paralelle poort:

if inb(0x378,1){
connect;
}

maarja, nu de seriele poort.
want mijn paralelle is al bezet door mijn lcd.

  • TweakV
  • Registratie: April 2000
  • Laatst online: 16-03 18:35
Misschien wat oude topic, maar iets soortgelijks staat nu in de computeridee NR7: 15/03 tot 29/03/2002 - Blz. 44/45

Het idee is een deurbel dat op de joystickpoort is aangesloten, maar zonder zelfgeschreven software.

Wel grappig, ik denk dat ik het ook eens ga proberen, maar dan met Java en de COM-poort. :Y)

[edit]
Vergissinkje, het artikel ging over de joystickpoort, niet over de COM-poort.
[/edit]

  • Lone Gunman
  • Registratie: Juni 1999
  • Niet online
zoek ns op "posix serial communication" op google oid, dat levert vast wel wat op.

Probleem is alleen dat je op een vrij lompe manier knopjes wilt aansluiten, dus direct op de poort. Das niet echt seriele communicatie meer te noemen, je wilt namelijk de status van bepaalde controle-lijnen (bv CTS en DSR) weten om te achterhalen of een knop wel of niet is ingedrukt. Dit is wel mogelijk onder linux (d8 dmv de functie IOCTL).

mzzl, lone

Experience has taught me that interest begets expectation, and expectation begets disappointment, so the key to avoiding disappointment is to avoid interest.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11-09 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 20 maart 2002 19:10 schreef TweakV het volgende:
Misschien wat oude topic, maar iets soortgelijks staat nu in de computeridee NR7: 15/03 tot 29/03/2002 - Blz. 44/45

Het idee is een deurbel dat op de joystickpoort is aangesloten, maar zonder zelfgeschreven software.

Wel grappig, ik denk dat ik het ook eens ga proberen, maar dan met Java en de COM-poort. :Y)

[edit]
Vergissinkje, het artikel ging over de joystickpoort, niet over de COM-poort.
[/edit]
de joystickpoort, ja dat kan natuurlijk ook! En als je er over nadenkt, een joystickpoort is daar veel meer voor bedoeld dan een compoort (voor simpele knopjes i mean) :)
Misschien voor de mensen die een joystick gebruiken een minder interessante optie, maar toch

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1