vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Serielle Schnittstelle Baudrate mit Divisor einstellen 
Autor: Jabberwock_v6
Datum: 17.01.10 18:06

Hallo wb-soft,

danke für den Hinweis. Leider habe ich noch nicht so viel mit APIs gemacht und wüsste spontan nicht wie ich das machen könnte.

Ich habe aber hier im Forum einen Code gefunden der das wohl machen soll. Leider lässt er sich nicht ausführen.
Der Benutzerdefinierte Typ DCB ist bei mir wohl nicht definiert ???
unten steht noch was von w32comm.bas, brauche ich das?
Könntest du mir noch mal kurz helfen? Wäre super...

alles halb so wild, wenn man weiß wie geht. 
 
Du wirst sicherlich ein MSComm Steuerelement benutzen. Öffne zunächst den Port: 
 
frmXyz.MSComm1.PortOpen = True
 
Anschließend lässt sich mit der folgenden Funktion (fast) jede beliebige _
  Baudrate einstellen:
 
Public Declare Function GetCommState Lib "kernel32" (ByVal nCid As Long, lpDCB _
  As DCB) As Long
Public Declare Function SetCommState Lib "kernel32" (ByVal hCommDev As Long, _
lpDCB As DCB) As Long
 
'********************************************************************
Function SetBaudRate(lBaudrate As Long) As Boolean
'DESC: Sets the MSCOMM baud rate to any value (standard or non-standard)
' *** NOTE: PORT MUST BE OPEN FOR THIS FUNCTION TO WORK ***
'********************************************************************
 
Dim ComDcb As DCB ' windows API type in w32comm.bas file
Dim ret As Long
 
  SetBaudRate = False
 
  ' Need to get current state before setting new value
  ret = GetCommState(frmXyzMem.MSComm1.CommID, ComDcb)
  If ret = 0 Then
    Beep
    MsgBox "Could not read current state of ISO port.", _
      vbCritical Or vbOKOnly, App.Title & " " & "Port Error"
  Else
    ' Modify baud rate from 9600 to new rate
    ComDcb.BaudRate = lBaudrate
    ret = SetCommState(frmXyzMem.MSComm1.CommID, ComDcb)
    If ret = 0 Then
      Beep
      MsgBox "Could not set baud rate to " & CStr(lBaudrate), _
        vbCritical Or vbOKOnly, App.Title & " " & "Port Error"
    Else
      SetBaudRate = True
    End If
  End If
 
End Function
 
 
Bei mir funktionierts. Auch wenn das Timing der Telegramme natürlich unter _
  Windows nicht ganz ohne ohne ist. Wenn Du eine Idee hast, wie man ein _
  WakeUp-Pattern unter VB hinkriegt, lass mal von Dir hören. 
 
Viel Erfolg und schönen Gruß, 
VBilbo
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Serielle Schnittstelle Baudrate mit Divisor einstellen2.510Jabberwock_v616.01.10 12:45
Re: Serielle Schnittstelle Baudrate mit Divisor einstellen1.286wb-soft17.01.10 10:41
Re: Serielle Schnittstelle Baudrate mit Divisor einstellen1.535Jabberwock_v617.01.10 18:06
Re: Serielle Schnittstelle Baudrate mit Divisor einstellen1.294wb-soft17.01.10 18:31
Re: Serielle Schnittstelle Baudrate mit Divisor einstellen1.462Jabberwock_v617.01.10 19:35

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel