-
ist genau das selbe in grün nur das der Treiber nur für kurze zeit geladen wird und dann wieder entladen wird. Es gibt keine Andere möglichkeit
als einen Treiber zu verwenden.
http://www.geekhideout.com/iodll.shtml
hier das ist auch so was das ist eine dll die macht das für dich da braucht man kein externes programm für.
-
Oh da habe ich wohl zu lange gebraucht bei Tippen
-
Bei mir kommt dann immer "Access violation at address 000000, bla bla bla"
-
bei was den
füll text füll text
gruß
-
Öhm, füll text füll text?
als quelltext hab ich das von oben übernommen, und dann einfach nen button gemacht mit
{
PortOut(0x367, 0xf0)
}
Für PortOut könnt ihr jetzt den jewailigen befehl einsetzen, ob Out oder _Out oder was auch immmer
kompilieren klappt dann, aber wenn ich dann auf den button klicke komm halt die fehlermeldung...
edit: kennt ihr die Inpout32.dll, die hab ich bei VB imer gebraucht, damit kommte man jeden I/O Port anprechen, wäre das nicht möglich, die auch mit c++ zu nutzen?
-
hallo
vieleicht solltest du
outp(0x367,240);
benutzen
wenn du das in borland benutzt muss du denn befehl mit ein ; abschließen. außerdem bin ich mri nich sicher ob du ein hex-code übergeben kannst
-
In welcher Header datei ist der den drin?
Borland meint immer "Aufruf der undefinierten fuktion 'outp'"
-
hallo
https://www.roboternetz.de/phpBB2/vi...r=asc&start=44
da ist alles beschrieben
der fehler sagt das er die funktion outp nicht kennt, für dich heißt das dass du sie via asm selber schreiben musst
einfach den code unter TForm1 *Form1; schreiben
Code:
void outp (unsigned int portadr, unsigned char value)
{
_asm mov edx,portadr
_asm mov al, value
_asm out dx,al
}
hast du eigendlich conio.h includet
die header dateien spielen keine rolle, die bleiben so wie sie sind
-
conio iss drin...
wenn ich versuche mit deimem code zu compilieren kommt das:
[C++ Warnung] Unit1.cpp(14): W8002 Compilierung mit Assembler-Sprachfähigkeiten neu gestartet
und dann programm wird nicht gestratet...
-
hallo
das ist nur eine warnung das programm müsste trotzdem starten
zeig mal dein quelltext
-
Jo, ich habs..
aber das mit dem assembler hat nicht gefuntzt... hab genau wie du gesagt hat, den asm teil komplett unter die deklaration von Form1 geschrieben...
jetzt hab ichs endlich mit der inpotu32.dll gescafft, so wie ich es wollte.
vllt lieghts an den einstellungen vom builder, das das mit dem asm nicht klappt¿¿
bin zumindest jetzt erst mal happy, das ich es geschafft hab..
danke nochmal für den link
-
Also ich poste es mal für alle anderen :)
Meine Header:
Code:
#include <stdio.h>
#include <windows.h>
#include <time.h>
//-------------------------------------------------------------------------
typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
void lib_laden();
void Out(int port, int wert);
void lib_schliessen();
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
short x;
int i = 0x378;
//-------------------------------------------------------------------------
void lib_laden ()
{
hLib = LoadLibrary("inpout32.dll");
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (hLib == NULL || inp32 == NULL || oup32 == NULL) {/*** ERROR ***/}
}
void Out(int port, int wert)
{
oup32(port, wert);
}
void lib_schliessen()
{
FreeLibrary(hLib);
}
man kann dan mit
Out(portaddresse, wert) an dem bestimmten port ausgeben.
Aber Ganz wichtig: Man muss vorher einmal
lib_laden(void);
ausführen... ich mach das bei Form load vom ersten formular :)