Deutsch
Hardware

Erledigt: Serielle Schnittstellen abfragen????

 

Robert
Hildebrand
Hallo zusammen,

ich habe 6 serielle Schnittstellen permanent abzufragen (Messgeraete) und muss diese in einer Datenbank (dBase) speichern.

Hat jemand eine Idee??

LG

Robert
 
XProfan 10, WinXP prof

Robert Hildebrand
27.05.2009  
 




KHR
Hallo,

so schwer ist das doch nicht.

Ich mach das bei 8 seriellen (USB) Schnittstellen und dann noch über ModBus - Protokoll

Leider darf ich den Code nicht veröffentlichen, da er zu viele Details über die Kommunikation mit unseren Sensoren zeigen würde.

Der Zugriff auf die ComPorts war einfach, das lesen und schreiben auch. An der ModBus-Kommunikation hab ich mir ne Weile die Zähne ausgebissen

Und wenn Du dann die Strings im Speicher hast, bleiben Dir für die Speichermöglichleiten alle Wege offen

ComPorts einrichten,

dann in ner schleife

die Anfragen senden,
in nem String die Antwort abolen,
den String verarbeiten,
Ergebnis speichern, senden oder was auch immer
und weiter zum nächten Port, die selbe Aktion

wenn alle durch sind, wieder an den Anfang der Schleife
 
Gruß
Karl-Heinz
WIN XP home/Pro / XPROFAN 11 / P2CPP
ATMEL + BASCOM Fan
27.05.2009  
 




Robert
Hildebrand
Ich müsste die Com4 und COM5 abfragen, aber ich bekomme die Daten nicht auf den Schirm
 
XProfan 10, WinXP prof

Robert Hildebrand
05.06.2009  
 




Sato
Pinto
Hallo

Erzähl mal welche Deine Schwierigkeiten sind.
Hardware? und was Du genau machen möchtest, vielleicht kann ich Dir helfen.

Gruss
Sato
 
Sato Pinto
WIN XP Home
XPROFAN 11
05.06.2009  
 




E.T.
Robert Hildebrand, Beitrag=52534, Zeitpunkt=27.05.2009
Hallo zusammen,
ich hätte da gerne mal ein Problem!!!
...
LG
Robert


Ich nicht, ich hab schon genügend davon. Geb gern welche ab...

 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
06.06.2009  
 




GDL
Hi,

mal schnell nen paar Auszüge aus meinem Steuerprogramm.Komme zeitlich nicht dazu das besser auseinander zu klauben.Vielleicht hilft es dir etwas.
KompilierenMarkierenSeparieren
====================================================================

proc schnittstelle

    declare such%

    If comname$=Port

        Let t$=Falsche Schnittstelle
        Let n$=Port wird nur bei GDL genutzt.Stelle jetzt COM1 ein.Bitte im Startmenü unter Einstellungen ändern.
        MessageBox(n$,t$,64)
        comname$=Com1       Testmodus.Später Ausremmen

    endif

    Alte Rechner benötigen DTRhi/DTRlow
    comname$=comname$+:
    comi1&=opencom(comname$,4096,4096)
    erfolg%=SetCom(comname$+9600,N,8,1)
    erfolg%=setcomext(comi1&,0,0,0,$001,0,0)   Ältere Rechner stürzen ohne diese Zuweisung ab
    case erfolg% = 0: settext _text&[5],comname$+ erfolgreich geöffnet.
    Proc_DTRhi (comi1&)		PC Anbindung DTR auh High setzen
    daten$=chr$(111)
    senden
    fehler%=WriteCom(comi1&,daten$)
    ComError(comi1&)

endproc

ja
=======================================================================

proc empfangen

    nur für 1 Zeichen abfangen
    name$=@ReadCom$(comi1&,1)
    @ComError(comi1&)
    casenot name$=:return

    WhileNot name$ =

        name$=@ReadCom$(comi1&,1)

    EndWhile

endproc

======================================================
=== DTR auf HIGH setzen: ====================================================

PROC Proc_DTRhi

    PARAMETERS Handle%  Parameter 1 = Handle des Comports
    fehler% = @EscapeCommFunction(Handle%, 5)

ENDPROC

=== DTR auf LOW setzen: =====================================================

PROC Proc_DTRlo

    PARAMETERS Handle%  Parameter 1 = Handle des Comports
    fehler% = @EscapeCommFunction(Handle%, 6)

ENDPROC

====================================================

proc senden

    Proc_DTRhi (comi1&)
    Proc_DTRlo (comi1&)			PC_Anbindung synchronisieren
    sleep 30
    daten$=chr$(100)+chr$(100)+chr$(100)+daten$
    fehler%=WriteCom(comi1&,daten$)
    ComError(comi1&)
    Proc_DTRhi (comi1&)			Geht nicht
    ja
    einlesen			im Betrieb ausremmen

endproc

===================================================================

Dauerempfang.Nochmals mit Sync.da die Übertragung von Rad auf Schiene naturgemäß des öfteren Übertragungsfehler produziert.
KompilierenMarkierenSeparieren
proc einlesen			BMelder Stellpulttaster

    COM Schnittstelle auslesen
    Schnittstelle wird am Proganfang geöffnet und erst am Progende geschlossen
    declare sync%,lb%
    settext _text&[12],Einlesestatus  :  aktiv   +time$(0)+  +left$(time$(1),5)
    +       Zeitwechsel ist ein Einlesevorgang.
    Schnittstelle auslesen  3mal 255 und 1mal 0 hintereinander ist Sync
    Empfangsprotokoll 255 255 255 0 Bahnhof Punkt Lok Auswahl Fehlerbyte
    Auswahl
    254 = Stellpult
    253 = Geschwindigkeit
    252 = Standardgeschwindigkeit bei Umschalten auf Grün anfordern
    ja
    clear cstart%
    clear sync%
    clear lb%
    comwert$=@ReadCom$(comi1&,1)
    @ComError(comi1&)
    case str$(ord(comwert$))=255:inc sync%

    whilenot comwert$=

        comwert$=@ReadCom$(comi1&,1)
        @ComError(comi1&)
        case str$(ord(comwert$))=255:inc sync%

        If str$(ord(comwert$))=0			Beginn des Datenprotokolls

            Hat hier nichts mit Start,Stopbit zu tun, sondern ersetzt das Handshaking		if sync%=3
            lb%=1				 Die drei 255 Startbyte wurden beim folgendem Nullbyte erkannt

        else

            clear sync%
            clear cstart%
            clear lb%

        endif

    endif

    if lb% =1

        inc cstart%
        _inhalt%[cstart%]=ord(comwert$)

    endif

    if cstart% = 5

        clear cstart%
        clear sync%
        clear lb%
        Fehlerbyte erzeugen
        Fehlerbyte vergleichen
        Bei Fehler _inhalt%[5]=0

        if _inhalt%[5]=253

            settext _text&[8],Lok       : +right$(00+str$(_inhalt%[4]),3)
            auswerten1
            Falls dieser BMelder etwas auslöst
            tasterbahnhof%=_inhalt%[2]
            tasterwert%=_inhalt%[3]
            tasterwert%=tasterwert%+(tasterbahnhof%*256)-256  Punkte gehen hier von 1 bis 999
            bm_auswerten

        elseif _inhalt%[5]=254

            settext _text&[8],Taster    : +right$(00+str$(_inhalt%[3]),3)
            settext _text&[9],Stellwerk : +right$(00+str$(_inhalt%[2]),3)
            tasterbahnhof%=_inhalt%[2]
            tasterwert%=_inhalt%[3]
            auswerten

        elseif _inhalt%[5]=252

            settext _text&[8],Lok       : +right$(00+str$(_inhalt%[4]),3)
            real_speed

        endif

    endif

wend

sonst gibt es bei der thread.pcu  Schlüsselfeldsalat
case wennoffen%=1:dbuse(#1)
case dannoffen%=1:dbuse(#2)
Ablaufbox abfragen

if getfocus(ablaufbox&)

    setfocus(%hwnd)

endif

endproc


Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
07.06.2009  
 




Robert
Hildebrand
Ich muss 6 serielle Schnittstellen abfragen und die Daten in eine Datei schreiben.
Angschlossen sind jeweils ein Vielfachmessgerät mit welchen ich jeweils Strom, Spannung, Frequenz usw. abfragen muss.
Leider kann ich die Daten noch nicht einmal auf dem Bildschirm sehen. Ich benutze das Beispielprogramm aus der Profan-Hilfe. Vielleich kannst Du mir helfen.

Robert
 
XProfan 10, WinXP prof

Robert Hildebrand
08.06.2009  
 




Sato
Pinto
Hallo Robert

Vormal vergiss die 6 Schnitstellen und schreibe den Program so das zuerst eine Schnitstelle funktioniert, dann sehen wir weiter. Es wurde auch helfen den code hier zu postet damit wir sehen können fals da eventuell etwas geändert werden sollte

Grus

Sato
 
Sato Pinto
WIN XP Home
XPROFAN 11
08.06.2009  
 




GDL
Habe leider keine 6 Schnittstellen.Daher nicht funktionüberprüft.
KompilierenMarkierenSeparieren
declare com&[6],ende&,erfolg%,anzahl%,comname$,wert$
cls
Schnittstellen vorbereiten
anzahl%=1

whilenot anzahl% > 6

    comname$=Com+str$(anzahl%)+:
    com&[anzahl%]=opencom(comname$,4096,4096)
    erfolg%=SetCom(comname$+9600,N,8,1)
    case erfolg% = 0: print comname$+ erfolgreich geöffnet.
    casenot erfolg% = 0: print comname$+ nicht geöffnet.
    erfolg%=setcomext(com&[anzahl%],0,0,0,$001,0,0)  Bei manchen Rechnern nötig
    inc anzahl%

wend

================== Ende Vorbereiten
################## Unterprogramme ####################

proc empfangen

    declare comwert$,leswert$
    clear wert$
    comwert$=@ReadCom$(com&[anzahl%],1)
    @ComError(com&[anzahl%])
    leswert$= str$(ord(comwert$))
    wert$=leswert$

    whilenot comwert$=

        comwert$=@ReadCom$(com&[anzahl%],1)
        @ComError(com&[anzahl%])
        leswert$=str$(ord(comwert$))
        wert$=wert$+leswert$

    wend

    drawtext 100,100, wert$

endproc

====================================================
################ Hauptschleife ###########################

whilenot ende&

    settimer 10			Bestimmt die Zugriffszeiten
    waitinput
    killtimer
    anzahl%=1

    whilenot anzahl% > 6		Abfrageschleife

        empfangen
        inc anzahl%

    wend

wend

######################## Ende Hauptschleife #####################
Schnittstellen wieder schließen
anzahl%=1

whilenot anzahl% > 6

    closecom(com&[anzahl%])
    inc anzahl%

wend


Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
08.06.2009  
 




Robert
Hildebrand
Erst mal Dank Euch allen. Bin jetzt soweit, dass ich etwas angezeigt bekomme, s. Screenshot und Quellcode. Ich habe jetzt erst mal eine Schnittstelle abgefragt. Bringt mich aber noch nicht so richtig weiter solange ich keinen Klartext angezeigt bekomme.

Gruss

Robert



Nachtrag: Sorry, die Grafik fehlte.

1 kB
Hochgeladen:09.06.2009
Ladeanzahl202
Herunterladen
 
XProfan 10, WinXP prof

Robert Hildebrand
09.06.2009  
 




Robert
Hildebrand

30 kB
Hochgeladen:09.06.2009
Ladeanzahl119
Herunterladen
 
XProfan 10, WinXP prof

Robert Hildebrand
09.06.2009  
 




GDL
Hallo Robert
probier einfach mal meinen Code 1zu1 aus und berichte.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
09.06.2009  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

27.476 Betrachtungen

Unbenanntvor 0 min.
H.Brill15.05.2023
Langer04.01.2023
Info (3)20.03.2021
Delv Wulff14.08.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie