Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0157: Frequenzgesteuertes Beepen erzeugen

 von 

Beschreibung 

Mittels der io.dll läßt sich der Systemlautsprecher frequenzgesteurt zum Beepen veranlassen. Dieser Tipp funktioniert nur unter Windows 9x Systemen

Dieser Tipp funktioniert entweder nur in kompilierter Form oder benötigt eine DLL/OCX-Datei. Diese Binärdateien sind dem Tipp hinzugefügt worden, um seinen Funktionsumfang darstellen zu können. Vor dem Upload wurden sie auf Viren geprüft.

Zu diesem Tipp existieren im Tippupload die folgende(n) Aktualisierung(en):
[VB 5/6 Tippvorschlag 0204] Piepstöne beliebiger Frequenz mit dem Systemlautsprecher erzeugen

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

ReadPort, WritePort

Download:

Download des Beispielprojektes [5,27 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1"
' Steuerelement: Schaltfläche "Command2"
' Steuerelement: Schaltfläche "Command1"

Option Explicit

Private Declare Function ReadPort Lib "io.dll" _
       (ByVal Address As Long) As Byte
       
Private Declare Sub WritePort Lib "io.dll" (ByVal _
        Address As Long, ByVal Value As Byte)
        
Private Sub Form_Load()
  Text1.Text = 1000
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Call Command2_Click
End Sub

Private Sub Command1_Click()
  Dim Result&, Freq&, Lo As Byte, Hi As Byte
    
    Result = CLng(Text1.Text)
    If Result > 18 And Result < 20000 Then
      Result = 1193180 / Result
      Lo = Result And &HFF&
      Hi = Result \ &H100&
    
      Call WritePort(&H43, &HB6&)
      Call WritePort(&H42, Lo)
      Call WritePort(&H42, Hi)
      
      Result = ReadPort(&H61&)
      Call WritePort(&H61&, Result Or &H3&)
    Else
      MsgBox ("Ungültige Frequenz")
    End If
End Sub

Private Sub Command2_Click()
  Dim Result As Byte
    Result = ReadPort(&H61&)
    Call WritePort(&H61&, Result And &HFC&)
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 27 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Klaus Langbein am 02.02.2008 um 19:18

Lieber "Willi"

Der Tipp funktioniert nach wie vor, aber halt nur auf älteren Systemen. Das ist oben übrigens angegeben. Für NT und höher braucht man eine andere DLL (inpout32.dll). Wenn man sich wirklich dafür interessiert, dann findet man diese auch bei uns.

Dein Ton (entschuldige den Kalauer) ist übrigens etwas unangbracht. Wenn du ernsthafte Kritik hast, kannst du dich gerne im Forum melden.

Klaus

Kommentar von Willi Wissing am 02.02.2008 um 13:23

Super...
1. geht der Tipp überhaupt nicht.
macht nichts, ich bins ja nur.
2. http://foren.activevb.de/cgi-bin/foren/view.pl?forum=13&msg=586&root=586
Soll dann unter allen betriebssystemen gehen.
Geht natürlich nicht !!!!!!
Schade um unseren nachwuchs.
10 Jahre alt Jonathan.
Eigentlich sollten wir uns freuen über ihn.
Aber er wird wohl bald das Handtuch schmeissen.
Besser IHR schmeisst nichtlaufende Routinen raus.
Aber dann kommt der Konkurrenzkampf.
Wir haben 3000 Beiträge, ihr nur 2900 ODER ?

WARUM schmeisst IHR den TIPP nicht RAUS ???????

Willi

Kommentar von Jonathan am 30.01.2008 um 16:26

Der Tipp 0157 frequenzgesteuertes Beepen erzeugen funktioniert nicht weil meine Mutter Windows Vista auf ihrem Rechner hat. Ich bin erst 10 Jahre alt und Programmiere schon mit VB 6. Ich wollte mir dieses Programm downloaden, weil ich noch keine Töne mit VB erzeugen kann. Nur leider funktioniert dies ja nicht.

Kommentar von Laurin T. Rother am 08.12.2006 um 15:11

"ein schwerer Ausnahmefehler ist aufgetreten"

schade eigentlich, hätte ich gerne ausprobiert ;-)

Kommentar von Philipp Stephani am 23.08.2006 um 01:48

@Marcel: Welchen Code meinst du? Der hier als Tipp gepostete funktioniert nur unter Windows 95/98/ME. Mein Vorschlag (http://foren.activevb.de/cgi-bin/foren/view.pl?forum=13&msg=586&root=586) sollte unter allen Systemen funktionieren und benötigt keine DLL.

Kommentar von Marcel am 22.08.2006 um 09:54

Bringt bei mir einen VB6-Absturz (winXP)

Kommentar von Philipp Stephani am 29.04.2005 um 19:07

hier die Lösung, die unter allen Betriebssystemen funktioniert und keine DLL braucht:
http://foren.activevb.de/cgi-bin/foren/view.pl?forum=13&msg=586&root=586

Kommentar von Philipp Stephani am 29.04.2005 um 18:44

hier die Lösung, die unter allen Betriebssystemen funktioniert und keine DLL braucht:
http://foren.activevb.de/cgi-bin/foren/view.pl?forum=13&msg=586&root=586

Kommentar von David am 29.11.2003 um 11:47

which io.dll for win 2000?

Kommentar von Axel am 16.03.2003 um 14:27

io.dll funktioniert nicht bei Windows XP

Kommentar von Rambo2004 am 13.02.2003 um 19:09

Hi Leute,

kennt jemand eine Möglichkeit genau das gegenteil zu bwewirken, also die frequenz bzw. das spektrum eines signals zu ermitteln. Am besten über micro/linein an soundkarte

Kommentar von Dani am 02.08.2002 um 19:00

Kann man mit dieser Dll auch mehrere Töne gleichzeitig generieren ??

Kommentar von Palmlover am 01.07.2002 um 10:00

VB-Borsti hat recht, sein Programm ist Spitze das andere kann man getrost in die Tonne werfen. Es führt z.B. unter NT4 zum Absturz. Danke, VB-Borsti

Kommentar von VB-Borsti am 01.06.2002 um 18:00

Damit geht es unter Win2k und ohne io.dll
Private Declare Function Beep Lib "kernel32.dll" (ByVal dwFreq As Long, _
ByVal dwDuration As Long) As Long
Private Sub Command1_Click()
Dim Retval As Long
Retval = Beep(440&, 1000&) 'frequenz,msec
If Retval = 0 Then
Debug.Print "Beep ist gescheitert"
End If
End Sub

Kommentar von Marco Wünschmann am 05.05.2002 um 18:00

Wie kann ich in VB die Scanner-Schnittstelle ansteuern???
Bitte schnell antworten...

Kommentar von Gandalf am 07.04.2002 um 18:00

@A.Küfner - tonleiterliste
ich hab grad ein project in den uploadbereich gestellt, mit dem sich alle beliebigen töne aus der tonleiter erzeugen lassen (A1 entspricht einer frequenz von 445 und dann nimmt die frequenz pro halbton um 6% zu)

Kommentar von PhilippVB am 02.03.2002 um 21:00

Hallo, wie lautet denn der Code für die io.dll?

Kommentar von Stephan Muller am 04.01.2002 um 15:00

An alle die die IO.dll brauchen:
Sie ist im Zip enthalten.

Kommentar von Dommy am 08.11.2001 um 14:00

Wie kann ich unter Windows 2000 mit VB die Druckerschnittstelle ansprechen?

Kommentar von Michael am 21.06.2001 um 15:00

Hi! es funzt nicht, VB stürzt ab, meine Konf.: Win2000.pro(sp2), VB6sp5, Rechner mit Speaker ;)

Kommentar von Marco Kraft am 21.04.2001 um 23:00

Hallo,
gibt es eine solche Frequenzmodulation auch für die Soundkarte?

Kommentar von N.Hinrichs am 06.03.2001 um 16:00

Wie kann man unter Windows NT die Port´s ansprechen?

Kommentar von Matthias May am 01.02.2001 um 15:00

Mir fehlt die io.dll nicht!!!

Kommentar von A. Küfner am 05.01.2001 um 12:00

könnten sie mir eventuell eine Liste mit den Frequenzen für die jeweiligen Töne der Tonleiter zukommen lassen?

Kommentar von Ralf Baumann am 03.01.2001 um 14:00

Hallo Leute,
ich habe nicht die Datei io.dll! Wo kann ich die Datei hekommen.
Gibt es auserdem noch eine andere Möglichkeit die Funktionen SOUND und PLAY wie sie in (QBasic sind) nachzubauen.(Ausgabe nur über die Systemlautsprecher)
Danke Ralf.

Kommentar von TeRm am 01.01.2001 um 21:00

gibt es keine Möglichkeit eine derartige Funktion mit der ich an einen Port etwas senden kann unter NT 4.0 , W2000 oder ähnlichem?

Kommentar von Frank Dzaebel am 02.10.2000 um 09:00

NT4.0:
1) Startobjekt=Form1
2) Exception bei
writeport(..)
Kann man das beheben?