[Windows NT/2000]: Adres achterhalen van PCI parellel port?

Pagina: 1
Acties:

  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Ik ben een programmma aan het schrijven wat werkt met of een onboard (legacy) parallel port of met een PCI Parallel port (insteek-kaarte). Probleem is echter dat onder Windows NT (en 2000) je het adres van de PCI Parallel port niet kunt achterhalen uit het BIOS Data-Segment (0x0040:....) zoals dat wel bij Windows 95/98 kan. Weet iemand een methode om (op een nette manier als het even kan dus via WinAPI ofzo), het I/O adres te achterhalen van het PCI-kaartje?

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Misschien handig om te vertellen over welke taal je het hebt...

https://fgheysels.github.io/


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Om wat voor PCI kaartje gaat het? (merk?) Misschien is er op de site van de makers een developers-hoekje waar dit soort vragen te vinden zijn? En anders zul je het instelbaar moeten maken voor de gebruiker, en uitleggen waar dit soort gegevens te vinden zijn. Dan ben je er ook ;)

My personal website


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Op zich maakt taal niet zoveel uit denk ik, het gaat om de manier waarop je zoiets zou moeten doen. Overigens programmeer ik het in BC5.5 . Ik heb al zitten kijken op de websites van diverse makers maar nog niks kunnen vinden. Het zelf laten instellen door gebruikers vind ik toch een beetje eng omdat een je het adres niet kan verifieren (PCI, dus het adres kan van alles en nog wat zijn), als een adres kiezen waar bv. de videokaart al op zit dan heb je natuurlijk "big troubles".

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • Bigs
  • Registratie: Mei 2000
  • Niet online
Dat soort dingen moet je in Windows NT en hoger toch echt gewoon high-level via de HAL doen eigenlijk. Dus gewoon de port-driver aanspreken en niet het adres van de poort. Weet alleen niet hoe.

  • Nulnulnix
  • Registratie: Januari 2001
  • Laatst online: 05-06 13:04

Nulnulnix

BOFH

378h

We have just one world, but we live in different ones...


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Dat gaat alleen op als de PCI LPT kaart op het legacy LPT1 adres gaat zitten natuurlijk. En LPT2 is ook een ander adres.

[ Voor 8% gewijzigd door roelio op 04-08-2003 11:54 ]

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Nulnulnix
  • Registratie: Januari 2001
  • Laatst online: 05-06 13:04

Nulnulnix

BOFH

LPT2: -> 278

dankzij search via google met dit als zoek optie: hardware adres lpt2:

[ Voor 79% gewijzigd door Nulnulnix op 04-08-2003 11:57 ]

We have just one world, but we live in different ones...


  • Dawai
  • Registratie: December 2000
  • Laatst online: 08-07 23:56

Dawai

HERiTAGE CHESS CREW

Met WinIO van www.internals.com moet het wel lukken denk ik.

Programmer: red-eyed, mumbling mammal capable of conversing with inanimate objects.


  • Bigs
  • Registratie: Mei 2000
  • Niet online
Nulnulnix schreef op 04 August 2003 @ 11:56:
LPT2: -> 278

dankzij search via google met dit als zoek optie: hardware adres lpt2:
Wat limoentje al zegt, dat hoeft met PCI kaarten absoluut niet zo te zijn (en nee je hoeft niet met 3BCh te komen als tegenargument :) ).

[ Voor 12% gewijzigd door Bigs op 04-08-2003 11:57 ]


  • Nulnulnix
  • Registratie: Januari 2001
  • Laatst online: 05-06 13:04

Nulnulnix

BOFH

Nee, maar meestal kun je die kaartjes instellen...

Zoek anders even op het merk van het kaartje.

We have just one world, but we live in different ones...


  • Nulnulnix
  • Registratie: Januari 2001
  • Laatst online: 05-06 13:04

Nulnulnix

BOFH

Bigs schreef op 04 augustus 2003 @ 11:57:
[...]


Wat limoentje al zegt, dat hoeft met PCI kaarten absoluut niet zo te zijn (en nee je hoeft niet met 3BCh te komen als tegenargument :) ).
TS heeft het over onboard OF PCI kaartje! Dus is mijn antwoord niet al op voorhand fout.

We have just one world, but we live in different ones...


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Bigs schreef op 04 August 2003 @ 11:57:
[...]


Wat limoentje al zegt, dat hoeft met PCI kaarten absoluut niet zo te zijn (en nee je hoeft niet met 3BCh te komen als tegenargument :) ).
Jullie bedoelen remapping naar een legacy-adres. Helaas werkt dit alleen onder Windows 95/98 en niet onder NT of 2000 (dus het adres is altijd >0x0fff). Je zal een PCI kaartje onder Windows NT/2000 dus nooit op 278h of 378h zien zitten.

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • Nulnulnix
  • Registratie: Januari 2001
  • Laatst online: 05-06 13:04

Nulnulnix

BOFH

Lezen is ook een kunst!
TS heeft het duidelijk over "Ik ben een programmma aan het schrijven wat werkt met of een onboard (legacy) parallel port of met een PCI Parallel port (insteek-kaarte)."
Waarom dan blijven doorzagen over PCI, als het evt ook onboard kan ?

We have just one world, but we live in different ones...


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Nulnulnix schreef op 04 August 2003 @ 12:14:
Lezen is ook een kunst!
TS heeft het duidelijk over "Ik ben een programmma aan het schrijven wat werkt met of een onboard (legacy) parallel port of met een PCI Parallel port (insteek-kaarte)."
Waarom dan blijven doorzagen over PCI, als het evt ook onboard kan ?
Ik bedoel eigenlijk dat ik wil dat mijn programma met zowel een onboard port ALS een PCI parallel port werkt. Dat eerst is op zich geen probleem, dat 2e (PCI kaart) wel.

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Dan moet je gewoon niet direct op IO adressen gaan werken, maar met de mogelijkheden die de Windows API biedt voor parallelle poorten. Daarmee hoef jij je voor zover ik weet niet druk te maken over IO adressen etc.

[edit] Uh, wat Bigs al eerder zei dus B)

[ Voor 10% gewijzigd door roelio op 04-08-2003 12:45 ]

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Hier staat wel wat info:
http://www.lvr.com/jansfaq.htm
(Bij "Q: My company has a product that connects to the parallel port......")

edit:
Met winIO lijkt ook wel te werken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool initialized = InitializeWinIo();
if (initialized)
{
    const PBYTE BIOS_LPTINFO_ADDR = reinterpret_cast<PBYTE>(0x408);
    HANDLE hMem;
    PBYTE pMem = MapPhysToLin(BIOS_LPTINFO_ADDR, 2 * 4, &hMem);
    if (pMem)
    {
        unsigned short *pBaseAddrs = reinterpret_cast<unsigned short*>(pMem);
        for (int i=0;i<4;i++)
            cout << "LPT" << dec << i+1 << " : 0x" << hex << pBaseAddrs[i] << endl;
        UnmapPhysicalMemory(hMem, pMem);
    }
    ShutdownWinIo();
}

[ Voor 68% gewijzigd door madwizard op 04-08-2003 13:27 ]

www.madwizard.org


  • igmar
  • Registratie: April 2000
  • Laatst online: 29-06 18:56

igmar

ISO20022

master_artech schreef op 04 augustus 2003 @ 10:53:
Weet iemand een methode om (op een nette manier als het even kan dus via WinAPI ofzo), het I/O adres te achterhalen van het PCI-kaartje?
Er zijn functies om je PCI bus te enumeraten. Effe zoeken op msdn.microsoft.com zou je al snel verder moeten brengen. Probeer niet om ze rechtstreeks uit te lezen, de IO adressen zijn namelijk met PCI niet fixed.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
Hardware configuratie is opgeslagen in het register

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
madwizard schreef op 04 August 2003 @ 13:13:
Hier staat wel wat info:
http://www.lvr.com/jansfaq.htm
(Bij "Q: My company has a product that connects to the parallel port......")

edit:
Met winIO lijkt ook wel te werken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool initialized = InitializeWinIo();
if (initialized)
{
    const PBYTE BIOS_LPTINFO_ADDR = reinterpret_cast<PBYTE>(0x408);
    HANDLE hMem;
    PBYTE pMem = MapPhysToLin(BIOS_LPTINFO_ADDR, 2 * 4, &hMem);
    if (pMem)
    {
        unsigned short *pBaseAddrs = reinterpret_cast<unsigned short*>(pMem);
        for (int i=0;i<4;i++)
            cout << "LPT" << dec << i+1 << " : 0x" << hex << pBaseAddrs[i] << endl;
        UnmapPhysicalMemory(hMem, pMem);
    }
    ShutdownWinIo();
}
Dit werkt alleen goed onder Windows 95/98 etc. Wat je hier namelijk doet is niets minder dan het BIOS DATA segment uitlezen (offset 0x408 of ook wel 0x0040:0008) onder Windows NT/2000 geeft deze altijd 0x3BC, 0x378, 0x278 terug ook al bestaan ze niet of zijn ze anders, dus daar heb je niks aan.

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

master_artech: ik heb het onder XP geprobeerd en die geeft 0x378, 0, 0, 0 aan. Maar het kan zijn dat dat onder NT/2000 niet zo is, ik heb het maar gewoon geprobeerd..

www.madwizard.org


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Mmmm.... Probleem is ik krijg zelf een programmaatje met dat WinIo niet gecompileerd onder BC5.5++ (CommandLine). Zou jij mij anders ff-tjes jouw executable kunnen maillen, dan kan ik ff testen of het uberhaupt zin heeft om hier verder naar te kijken. Bedankt!

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

www.madwizard.org


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Ok bedankt! Ik heb het inmiddels ook al getest, en hetgeen ik bang voor was blijkt inderdaad zo te zijn: onder Windows 2000 geeft ie gewoon de standaardadressen terug (dus weer 0x3bc, 0x378, 0x278) en niet de echte.

Hoef ik dus in ieder geval niet verder te kijken naar WinIo. Maar nogmaals toch nog bedankt voor de moeite.

Verder nog iemand suggesties?

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Ok bedankt! Ik heb het inmiddels ook al getest, en hetgeen ik bang voor was blijkt inderdaad zo te zijn: onder Windows 2000 geeft ie gewoon de standaardadressen terug (dus weer 0x3bc, 0x378, 0x278) en niet de echte.
Ook bij mij worden de juiste adressen teruggegeven. Ik gebruik het zelfs al een poosje in een applicatie. Ik lees gewoon de 16-bits waarde van de adressen $0408, $040A en $040C. Daar komen de poortadressen $0378, 0, 0 uit bij mij. Op een andere PC, waar de LPT1 op $0278 staat, komt die er netjes uit.

日本!🎌


  • arnova
  • Registratie: Augustus 2001
  • Laatst online: 13:06

arnova

weet veel, maar niet alles

Topicstarter
Maar ik neem aan dat jij XP gebruikt, of niet? Ik heb hier zelf alleen 2000 en NT4 en op beide machines werkt het niet.

ESP PvBoiler Controller https://github.com/arnova/pvboiler


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
Is dat niet afhankelijk van het feit of windows de door de bios uitgedeelde adressen gebruikt of dat ie zelf adressen gaat uitdelen ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

waarom niet gewoon aan het operating systeem vragen?

Q259696

dit enumereert alle hardware, de io adressend ie het stuk hardwar gebruikt opvragen lijkt me niet zo heel lastig daarna?

[ Voor 15% gewijzigd door Verwijderd op 05-08-2003 12:11 ]


Verwijderd

Ik zit er denk ik weer helemaal naast, maar kon je met nt wel rechtreeks adressen aanspreken?
Ik dacht dat dit beveiligd was?
Gaat het dan wel met een pci kaart?

Verwijderd

Kan prima met dlportio of een device driver (als het om productie spul gaat is n device driver natuurlijk veel netter)

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Maar ik neem aan dat jij XP gebruikt, of niet? Ik heb hier zelf alleen 2000 en NT4 en op beide machines werkt het niet.
Jawel, maar op Windows 2000 en NT4 werkt het allemaal net zo goed, voor zover ik weet.

日本!🎌

Pagina: 1