Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

PCI Slots

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
qbprogger



Anmeldungsdatum: 13.05.2008
Beiträge: 49
Wohnort: Kirchlinteln

BeitragVerfasst am: 05.07.2008, 16:44    Titel: PCI Slots Antworten mit Zitat

Kann ich die PCI Anschlüsse über QBasic programmieren??
Und wenn ja, wie??

Danke im Vorraus
_________________
Proggen macht Spaß!!!
happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.07.2008, 18:03    Titel: Antworten mit Zitat

also du könntest dir einen BMP-Loader programmieren, der dann ein BMP-Bild von einem PCI-Slot anzeigt... grinsen

Hardware wird mit Treibern angesteuert! QBasic ist ein DOS-Compiler, damit kann man noch nicht mal DOS-Treiber erstellen, geschweige denn 32- oder 64-Bit Windowstreiber!
Ich frage mich sowieso, was du mit einem Treiber willst O_o
Jede Hardware kommt mit ihrem Treiber und selbst einen Programmieren ist für dich garantiert nicht möglich...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.


Zuletzt bearbeitet von Jojo am 07.07.2008, 11:36, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
qbprogger



Anmeldungsdatum: 13.05.2008
Beiträge: 49
Wohnort: Kirchlinteln

BeitragVerfasst am: 06.07.2008, 17:52    Titel: Antworten mit Zitat

Nein!!
Das war anders gemeint.

Also:

Ich stecke eine von mir aufgebaute PCI-Karte rein .(Dadrauf ist eine LED)
Kann ich die LED über QB angehen lassen??
_________________
Proggen macht Spaß!!!
happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.07.2008, 18:13    Titel: Antworten mit Zitat

nein, weil du einen treiber für die schnittstelle brauchst (oder vielleicht seehr viel mit interrupts und ähnlich kompliziertem krams rumfummeln musst) - wie willst du überhaupt ne karte für einen PCI-Slot bauen? O_o
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.


Zuletzt bearbeitet von Jojo am 07.07.2008, 11:36, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 06.07.2008, 18:21    Titel: Antworten mit Zitat

Es gibt unbestückte PCI-Steckkarten zum Selbstbasteln zu kaufen, aber die Ansteuerung ist so viel ich weiß sehr viel schwieriger als beim RS232- oder Parallel-Port.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 06.07.2008, 18:52    Titel: Antworten mit Zitat

PCI ist ein ganzes Bussystem, da kannst du nicht mal eben schnell einen Pin auf deiner Karte schalten. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
qbprogger



Anmeldungsdatum: 13.05.2008
Beiträge: 49
Wohnort: Kirchlinteln

BeitragVerfasst am: 06.07.2008, 18:59    Titel: Antworten mit Zitat

Ach wie schade.... weinen weinen weinen

Naja war ja auch nur so ´ne Idee.
_________________
Proggen macht Spaß!!!
happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 06.07.2008, 19:48    Titel: Antworten mit Zitat

Was es aber durchaus gibt, sind PCI IO-Karten.
Ich habe da mal eine gesehn, die 192 Bidirektionale IO Anschlüsse hatte, und die damit prahlte, das man sie sowohl mit QuickBasic, als auch VB, C, C++ und Assembler ansprechen kann.
Kostete aber 200 € .... leider. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 07.07.2008, 07:14    Titel: Antworten mit Zitat

Also grundsätzlich kann DOS schon mit PCI umgehen, sonst wären ja keine LAN-Manager-Treiber für Netzwerkkarten möglich. Allerdings arbeitet dort fast jeder Treiberentwickler mit Assembler; wie weit sich dasselbe mit INP() und OUT realisieren lässt, kann ich zuwenig beurteilen.

@qbprogger: Mach Dich sonst einmal schlau mit den PCI-Spezifikationen, ich würde an Deiner Stelle einmal ganz vorne beginnen, also beispielsweise als erste Anwendung ein PCI Device Enumerator schreiben, d.h. kleine, für reines MS-DOS 6.22 (NTVDM-Betrieb in Windows ist für so etwas absolut tabu!) geschriebene Anwendung, welche Dir einen Dump sämtlicher vorhandener PCI-Geräte macht. Dabei würde ich an Deiner Stelle die Vendor- und Device-ID (sind Hexzahlen) auflisten, ebenso die Ressourcen (diese weist meines Wissens das BIOS beim PC einschalten bereits zu, weil PCI ja bereits eine Plug & Play-Architektur ist), also Interrupt, I/O-Bereich sowie allfällige Memory-Adressbereiche.

Sonst bereits einmal als Einstieg:

http://www.ctyme.com/intr/rb-2372.htm

d.h. sollte sich grundsätzlich über CALL INTERRUPT aufrufen lassen. Jedoch spielt bei vielen Routinen bereits der 32-Bit-Modus eine Rolle, so dass Du um etwas Assembler im 386er-32 Bit-Modus eher nicht drum herumkommen wirst, da QB eine reine Intel 8088-Realmode-16 Bit-Anwendung aus dem IBM PC/XT-Zeitalter ist. => Evtl. dürfte FreeBasic für DOS da einen Schritt weiterkommen...
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Georgp24



Anmeldungsdatum: 30.06.2006
Beiträge: 81
Wohnort: Ahlen

BeitragVerfasst am: 08.08.2008, 18:49    Titel: Antworten mit Zitat

Man kann mit Basic auf den PCI Bus zugreifen. Hier ein Beispiel in Powerbasic, das eine Netzwerkkarte auf dem PCI-Bus sucht.

Aber erstmal ein paar Links zum Thema:
http://www.oreilly.de/german/freebooks/linuxdrive2ger/pci.html
http://www.tech-pro.net/intro_pci.html
http://www.waste.org/~winkles/hardware/pci.htm
http://www.acm.uiuc.edu/sigops/roll_your_own/7.c.1.html

Nun der Code. Wie man Inline Assembler mit QBasic macht habe ich ja schon gepostet.

Code:

'This program scans the pci bus for a network card (just one) and then
'reads its PCI vendor ID and device ID and then
'looks up in the pci.db file which vendor and device these codes indicate.
'
defint a-z
'cls

dev_index=0

'look for network card on pci bus
reg 1,&HB103 'find PCI class
reg 5,dev_index 'SI=device index
asm db &H66  ;mov ecx
asm db &H0B9
asm db &H00  ;00020000h
asm db &H00
asm db &H02
asm db &H00
call interrupt &H1A

'check carry
carry%=reg(0)
carry%=carry% and &H0001
if carry% then
          errorcode%=reg(1)
          shift right errorcode%,8
     print "Cannot find Network adapter - Remark: This program will not run under Windows!"
          print "Error reading PCI class code: ";
          if errorcode%=134 then
             print hex$(errorcode%) " = device not found "
          else
             print errorcode%
          end if
end if
savebx%=reg(2) 'bus/dev/fkt

bus%=savebx%
shift right bus%,8
dev%=savebx%
shift right dev%,3
dev%=dev% and &H001F
fkt%=savebx% and &H0007

reg 1,&HB109 'read PCI word
reg 2,savebx%
reg 6,0 'DI=0 -> vendor
call interrupt &H1A
carry%=reg(0)
carry%=carry% and &H0001
if carry% then print "Error reading vendor ID" : end
vendor%=reg(3) 'CX

reg 1,&H0B109 'read PCI word
reg 2,savebx%
reg 6,2 'DI=2 -> device
call interrupt &H1A
carry%=reg(0)
carry%=carry% and &H0001
if carry% then print "Error reading device ID" : end
device%=reg(3) 'CX

if savebx%+device%+vendor%=0 then
          print "Cannot find Network adapter - Remark: This program will not run under Windows!"
          end
end if

print
print "NICSCAN has determined the following network adapter from reading the PCI bus:"
print
print "Bus: " bus% " Device: " dev% " Function: " fkt%
print

if len(hex$(vendor%))<4 then
   vendor$="v "+repeat$(4-len(hex$(vendor%)),"0")+lcase$(hex$(vendor%))
else
   vendor$="v "+lcase$(hex$(vendor%))
end if
if len(hex$(device%))<4 then
   device$="d "+mid$(vendor$,3)+repeat$(4-len(hex$(device%)),"0")+lcase$(hex$(device%))
else
   device$="d "+mid$(vendor$,3)+lcase$(hex$(device%))
end if

open "pci.dbn" for input as #1
while not eof(1)
 line input #1, dbline$
 dbline$=rtrim$(dbline$)
 dbline$=rtrim$(dbline$,"0")
 dbline$=rtrim$(dbline$,"1")
 if left$(dbline$,6)=vendor$ then
   dbvendor$=mid$(dbline$,8)
 end if
 if left$(dbline$,10)=device$ then
   dbdevice$=mid$(dbline$,12)
 end if
wend
close #1

print "PCI vendor: " hex$(vendor%) " = " dbvendor$
print "PCI device: " hex$(device%) " = " dbdevice$

end

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz