Code omzetten van vc++ -> Delphi

Pagina: 1
Acties:
  • 114 views sinds 30-01-2008
  • Reageer

  • itsme
  • Registratie: Februari 2000
  • Niet online
Wie kan mij helpen met de volgende code,
Het is de bedoeling in delphi een op de seriele poort aangesloten schalkelaar indrukken te detecteren:

Definities:

#define ComPort 0x3f8
#define InputPort 0x3F8+6

een COM-Port signaal op HIGH zetten (Spanning door de kabel?)
_outp(ComPort+4,2);
_outp(ComPort+4,3);

elke paar seconden (ca 10 x per seconde) kijken of in het adres InputPort de reeks 0x80 voorkomt

void CApplDlg::OnTimer(UINT nIDEvent)
{
// TODO:

int Status = _inp( InputPort);

if ( Status & 0x80)
{
KillTimer(1);


**** PROCEDURE, WAT MOET ER GEBEUREN ****

while(true)
{
Status = _inp( InputPort);
if (!(Status & 0x80))
{
break;
}
}

SetTimer(1,100,NULL);

}

CDialog::OnTimer(nIDEvent);
}


Alvast bedankt :)
p.s. wie weet of dit ook in Java kan?
en hoe?

"If God wanted us to have unlimited free energy He would have put a giant fusion reactor in the sky"


  • MinddiggerNL
  • Registratie: Oktober 2000
  • Laatst online: 19-09 21:21
Euhm...goeie vraag....ik niet :)
ben nog bezig met java te leren....dus wellicht in de toekomst...

  • itsme
  • Registratie: Februari 2000
  • Niet online
Niemand?

"If God wanted us to have unlimited free energy He would have put a giant fusion reactor in the sky"


Verwijderd

Probeer het onderstaande eens;



function ReadPortB
( wPort : Word ) : Byte;
begin
asm
mov dx, wPort
in al, dx
mov result, al
end;
end;


procedure WritePortB
( wPort : Word; bValue : Byte );
begin
asm
mov dx, wPort
mov al, bValue
out dx, al
end;
end;



var data :integer;

//Inlezen van de poort:
data:=ReadPortB(ComPort+4,2);

//schrijven naar poort:
WritePortB(ComPort+4,3);

  • MinddiggerNL
  • Registratie: Oktober 2000
  • Laatst online: 19-09 21:21
data:=ReadPortB(ComPort+4,2); is dan unknown
misschien iemand met een andere methode?

Verwijderd

Op donderdag 25 januari 2001 15:06 schreef timotheebastin het volgende:
data:=ReadPortB(ComPort+4,2); is dan unknown
misschien iemand met een andere methode?
Heb je wel een waarde voor comport ingevuld ?? Bij mij werkt het namelijk wel.
standaard adressen voor poorten
com1 1016
com2 760
com3 1000
com4 744

data:=ReadPortB(ComPort+4,2)is fout moet zijn

data:=ReadPortB(ComPort+4) |:(

je kunt ook 4 schakelaars tegelijk aansluiten
als het moet.




cts........../ .......... dtr

dsr........../ ......... dtr

ri.........../ ......... dtr

dcd........../ ......... dtr

om spanning op de poort te zetten gebruik je dan
WritePortB( comport+4,1)
en om de poort uit te lezen data:=ReadPortB(comport+6);

data heeft dan een waarde tussen 0 en 240
schakelaar 1 is 16
schakelaar 2 is 32
schakelaar 3 is 64
schakelaar 4 is 128

als je meerdere schakelaars aan hebt staan tel je de waarden bij elkaar op: 1 en 3 is dan 80.


Overigens: dit is voor delphi niet voor java.

  • itsme
  • Registratie: Februari 2000
  • Niet online
welke pin is DCD?

op deze pagina: http://www.connectedpc.com/support/faxmodem/4300.htm

heb ik een pinout gevonden maar dcd kan ik niet vinden

"If God wanted us to have unlimited free energy He would have put a giant fusion reactor in the sky"


  • itsme
  • Registratie: Februari 2000
  • Niet online
Heb al een betere gevonden:

http://www.siris.gr/computers/conector/00021.htm

toch bedankt :)

"If God wanted us to have unlimited free energy He would have put a giant fusion reactor in the sky"

Pagina: 1