COM Port öffnen???

  • Allgemein

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Zamoka.

    COM Port öffnen???

    Hallo

    ich nersuche einen comport zu öffnen und ein zeichen zu senden habe mir die rsapi.dll runtergeladen diese installiert und mich genau an die hilfe datei gehalten bei der programmierung also der versuch soll sein über eine excel tabelle erstmal an den hyperterminal eines anderen pc´s eine beliebige nachricht zu senden haut bei mir aber nicht hin und wenn dan unvollständig oder gar nicht :cursing: wollte hier mal nachfragen ob jemand n tipp für mich hat oder weiterhelfen kann nachfolgend kopiere ich hier noch mal den code ein den ich geschrieben habe vielleicht entdeckt ja jemand den fehler



    Declare Function SENDSTRING Lib "RSAPI.DLL" (ByVal S As String) As Integer
    Declare Function OPENCOM Lib "RSAPI.DLL" (ByVal Parameter$) As Integer
    Declare Function READBYTE Lib "RSAPI.DLL" () As Integer
    Declare Sub STRREAD Lib "RSAPI.DLL" (ByVal S As String)
    Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
    Declare Function CLOSECOM Lib "RSAPI.DLL" () As Integer
    Declare Sub SENDBYTE Lib "RSAPI.DLL" (ByVal Ibyte As Byte)
    Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)

    Sub Main()
    OPENCOM ("COM19,9600,N,8,1")
    DELAY 50
    SENDSTRING ("$00I") + Chr$(13)
    CLOSECOM
    Cells(2, 2) = a
    End Sub

    hab schon mehr "declare" als notwendig eingefügt weil ich herumprobiert habe aber das stört ja nicht, oder? ?( ?( ?(

    mfg

    Zam
    also wenn ich mit dem hyper terminal den port anspreche bzw den temperaturschrank dass bekomme ich auch eine antwort als oes funktioniert auf jeden fall ich denke mal ich brauche einfach eine programmzeile die sagt das die empfangenen daten auch in der excel tabelle abgelegt werden
    also ich hab n 1-port ethernet to rs232 modul zwischengeschaltet und der meldet eindeutig das eine verbindung da ist und auch daten ausgetauscht werden aber darum gehts ja auch nicht meine frage währe wie mache ich dem makro klar das er die gesendeten daten vom temperatur schrank einliest und in excel anzeigt meinen quellcode habe ich oben ja schon dargestellt aber ich bin der meinung das irgendetwas fehlt :!: :?: :!:
    Das Problem ist, dass du irgendeine Library nutzt die anscheint niemand kennt.

    Jedoch ist ja RS232 ein einfaches Protokoll und VB bietet eine eigene RS232 Library an. Da es bei dir ja anscheint nur um das Senden und Empfangen von Daten geht würde ich mal die Interne probieren.

    Problematisch wäre es nur wenn die Library Funktionen noch mehr machen als z.B. den angegebenen Datenstring zu senden.

    Vielleicht hilft dir das ja weiter: msdn.microsoft.com/de-de/library/bb979092.aspx
    ich benutze VBA: retail 6.5.1024 unter Excel da gibt es meines wissens nach keine eigene lib. oder doch ?(

    wenn ja müsste mir vielleicht einer sagen wie das funktioniert wenn nicht bräuchte ich vielleicht eine ausweich dll

    am besten eine die geläufig ist und wo man mir besser helfen kann :whistling:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Zamoka“ ()

    Nun das mit VBA hättest du ggf. schon im Eröffnungspost schreiben sollen ^^ wir können nicht hellsehen. Dann sieht die ganze sache schonmal wieder anders aus. Mit VBA kenne ich micht nicht aus, jedoch in dem Link den ich dir gegeben habe wird auch nur eine DLL eingebunden.

    Aber wenn du z.b. nach "com port vba" googlest findest du auch einiges, z.b. bin ich auf dieses Thema gestoßen wer-weiss-was.de/theme161/article542218.html
    So ich hab die ganze geschichte mal n bissel umgestellt und hab da noch mal n paar fragen zu aber hier erstmal der neue code:



    Declare Sub OPENCOM Lib "RSAPI.DLL" (ByVal Parameter$)
    Declare Sub TIMEOUT Lib "RSAPI.DLL" (ByVal ms%)
    Declare Sub CLOSECOM Lib "RSAPI.DLL" ()
    Declare Sub DELAY Lib "RSAPI.DLL" (ByVal ms%)
    Declare Sub SENDSTRING Lib "RSAPI.DLL" (ByVal S As String)
    Declare Function READSTRING Lib "RSAPI.DLL" (ByVal S As String) As Integer
    Dim S As String

    ---------------------------------------------------------------------------------------------------------

    Sub c_control()
    OPENCOM "COM1:9600,N,8,1" 'Serielle Schnittstelle wir geöffnet
    ThisWorkbook.Sheets("Tabelle1").Activate 'Tabelle1 wird aktiviert
    Selection.ClearContents '???
    TIMEOUT 50 '???
    Zeile = 3 '???
    SENDSTRING "$00I" + Chr$(13) 'Spricht die Zelle des Temp.Schrankes an
    S = Space$(86) '86 Leerzeichen (VBA)
    READSTRING S 'Auf 86 Zeichen warten
    Cells(2, 2) = READSTRING(Currval) 'richtig?
    If Cells(2, 2) = 0 Then
    MsgBox "SHIT", vbCritical + vbOKOnly, "Achtung"
    Else
    MsgBox "JUHU", vbOKOnly, "OK"
    End If
    CLOSECOM
    End Sub


    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    so jetzt hab ich mehrere fragen:

    1.wenn ich jetzt ausführe steht in excel nur eine null hab ich irgendetwas vergessen :?:

    2.die kommunikation zwischen pc, port und schrank läuft (test mit hyperterminal) :?:

    3.gibt es ne möglichkeit in vba zu testen ob sich überhaupt etwas tut :?:

    4.ausserdem kann mein string also die antwort vom schrank variieren gibt es da einen ausnahmebefehl :?:

    5. wenn ein string leerzeichen hat werden die mitgezählt und das <CR> auch? :?:

    6. wenn der temp.schrank etwas sendet wird das doch in nem buffer oder puffer abgelegt muss ich den direkt ansprechen oder wierd der automatisch mit readstring ausgelesen :?:


    7. Bei ? im code bin ich mir nicht sicher ob die überhaupt von nöten sind :?:


    THX schon mal

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Zamoka“ ()