Deutsch
Quelltexte/ Codesnippets

Auslesen Temperaturfühler Usb

 
- Seite 1 -



Web
Scanner
Nachtrag:
Web Scanner, Beitrag=56582, Zeitpunkt=28.03.2010
Du kannst Dir dieses Thermometer bei Ebay bestellen:

USB xp linux thermometer,RS232 protocol,TEMPer232
Ebay Artikelnummer:220564891464

Herstellerseite:
[...] 

Das Ding kostet 18US$ + 6$ Fracht.
Das Temper232 kommt aus China, dauert paar Tage.

Grüße

Web


Web Scanner, Beitrag=56571, Zeitpunkt=28.03.2010
Anbei der Quelltext. Kann man sicher noch viel besser machen, aber es funktioniert erstemal:
KompilierenMarkierenSeparieren
Temperaturmessung Temper232 für PROFAN
über RS232 COMPORT 3
(C) Webbisoft 3/2010
Declare a$, f%, ende%,e%
Declare x$, y$, z%, bz&, xtemp!,xdtemp!, ll&, hh&, testtemp%

Proc GetComInput

    Parameters id%
    x$ = @ReadCom$(id%,10)
    y$ = @ComError(id%)
    bz& = @addr(x$)
    print "temp: ",bz&

    WhileNot x$ = ""

        testtemp% = 0
        x$=@ReadCom$(id%, 10)
        @ComError(id%)
        bz& = ord(mid$(x$,1,1))
        print "temp1: ",(bz&); " ";

        if bz& = 36

            testtemp% = 1

        else

            testtemp% = 0

        endif

        bz& = ord(mid$(x$,2,1))
        print (bz&); " ";

        if bz& = 254

            testtemp% = 1

        else

            testtemp% = 0

        endif

        bz& = ord(mid$(x$,3,1))
        print (bz&); " ";

        if bz& = 2

            testtemp% = 1

        else

            testtemp% = 0

        endif

        bz& = ord(mid$(x$,4,1))
        print (bz&); " ";
        bz& = ord(mid$(x$,5,1))
        print (bz&); " ";
        bz& = ord(mid$(x$,6,1))
        print (bz&); " "

        iF TESTTEMP% =1

            hh& = ord(mid$(x$,4,1))
            ll& = ord(mid$(x$,5,1))
            Print "ll& =", (ll&)
            Print "hh& =",(hh&)
            Xtemp! =256*hh&+ll&
            Print "xtemp!=", xtemp!

            If Xtemp! > 16384

                XDtemp! = -(16384-(Xtemp!)/4)*(0.03125) Korrekturwert 4000h ab 100°C

            Else

                XDtemp! = (Xtemp!/4)*(0.03125)

            EndIf

            XDtemp!= XDtemp!-3 Korrekturwert
            @Set("Decimals",2)
            print "Temperatur USB232= ",xdtemp!,"°C"

        endif

        sleep 800

    EndWhile

    print

EndProc

Window 0, 0 - 400, 400
f% = @OpenCom("COM3", 1024, 1024)
@SetCom("COM3:4800,N,8,1")
@WriteCom(f%, chr$($24)+ chr$($10)+chr$($05)+chr$($01)+chr$($01)+chr$($00)+chr$($32)+chr$($01)+chr$($55))
Thermometer initialisieren
y$ = @ComError(f%)
GetComInput f%                     Antwort abwarten und anzeigen
ende% = 0

WhileNot ende%

    a$ = @Inkey$()                   Tastatur abfragen

    If a$ = "§"                      Ende mit SHIFT-3

        ende%=1

    Else

        GetComInput f%                 empfangene Zeichen lesen

    Endif

EndWhile

@CloseCom(f%)
End


Hallo Programmierfreunde,

nach längerer Zeit habe ich wieder ein kleines Softwareprojekt.
Es geht um eine Temperatursteuerung. Dazu muß ich einen USB
Temperaturstick auswerten. Sowas hier: Ebay Artikelnummer: 380167386533

Nun meine Frage, hat so etwas schon jemand gemacht?
Gibt es da spezielle Treiber, dlls, oder sonstige Hilfen?
Ich muß dazu sagen, das der Stick noch nicht bei mir weilt und
daher ist es noch etwas dürftig mit der Datenlage

Grüße

Web
 
Xprofan X3.1
Win7 auf AMDX6
12.10.2009  
 



 
- Seite 7 -



GDL
Hi,

ich komme auch nicht weiter.
Ich bekomme mit den mitgelieferten Ftdi Treibern zwar eine Verbindung zustande, nur haben die beim PC Start nicht immer denselben ComPort.Hängt immer von den aktuell beim PC Start angeschlossenen USB Geräten ab was Windows dann zuweist.

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




Web
Scanner
Hi Georg,

das kann man doch unter der Systemverwaltung zuweisen?
Jedenfalls geht das bei den virtuellen Comports wie bei dem Thermometer.
Ich kann sogar auswählen, auf welchen Comport ich route.

Grüß

Web
 
Xprofan X3.1
Win7 auf AMDX6
28.03.2010  
 




GDL
Hi,

es geht um die automatische Erkennung durch das Programm beim Anwender.
 
Windows7 Xprofan 8,9,10 [...]  [...] 
28.03.2010  
 




Web
Scanner
Okay, stimmt, das ist ne andere Baustelle - aber wichtig,
wenn man das Programm weitergeben möchte.
Bin jetzt nur von meinem PC ausgegangen.

Grüße

Web
 
Xprofan X3.1
Win7 auf AMDX6
28.03.2010  
 




Web
Scanner
Heyyyy es ist der Hammer, es kommen jetzt Daten!
Muß ich noch checken aber der Stick meldet sich, die LED blinkt!!!
Unglaublich - ich bin platt

So sieht es aus was von dem Stick kommt:

[...] 

Jetzt muß es nur in ein lesbares Format umgewandelt werden...coool
Ziemlich kryptisch??

Grüße

Web

87 kB
Hochgeladen:28.03.2010
Ladeanzahl208
Herunterladen
 
Xprofan X3.1
Win7 auf AMDX6
28.03.2010  
 



Als ANSI-Zeichen sicherlich kryptisch ^^, das Protokoll ist wo beschrieben?

Bestimmt sowas wie die ersten Bytes: HiHo hier ich bin Thermo! und dann "5 Bits mal Dreissig Halbe" ergeben Grad Fahrenheit - irgend so ein horror halt. ^^
 
28.03.2010  
 




Web
Scanner
Ja genau,

Sending command: 24, 10, 05, 01, 01, 00, 32, 01, 55.
Then you will see :24, FE, 02, HH, LL, 88

Nur wie wandle ich den kryptischen kram um? Mit chr$ gehts nicht...

Eigentlich müsste ich eben das bekommen: 24, FE, 02, HH, LL, 88

Wobei HH LL die Temperatur beinhaltet.
 
Xprofan X3.1
Win7 auf AMDX6
28.03.2010  
 



Du kannst jedes Byte mit Ord beziehen z.B. ord(mid$(s$,byteNummer,1)) und senden per chr$($24) oder "x24". Wenn Du 24 FE 02 HH LL 88 empfängst, dann halt Byte 4 und 5 für die Werte wobei Temp vlt. HH*256+LL ist.

Du kannst aber auch einfach auf das Byte zugreifen indem Du die Adresse vom String nutzt:
KompilierenMarkierenSeparieren
var a&=addr(s$)
print "temp:",word(a&,3)

In nativen Funktionen kannst Du bei Strings einfach auch per Arrayschreibweise (z.B. s$[4]) den Bytewert beziehen was speziell für schnelles Abfragen konzipiert ist, hierbei aber wohl unnötig ist, wenn Du nicht unbedingt z.B. einen separaten Thread an das hWnd regelmässig die Temperatur als Message senden willst. ^^
 
28.03.2010  
 



GDL, Beitrag=56559, Zeitpunkt=28.03.2010
Hi,

es geht um die automatische Erkennung durch das Programm beim Anwender.


Kann man denn nicht einfach alle Comports durchschauen?
 
28.03.2010  
 




Web
Scanner
Sauber iF -- es geht. Danke Dir!
Ich sehe die Temperatur genau wie im richtigen Progamm vom Hersteller.

Jetz muß ich nur noch die Synchronisation hinbekommen.
Der Stick sendet automatisch ca. alle halbe Sekunde automatisch die Temperatur.
Mit Sleep wir das nix, da verheddert er sich immer mal.
Ich muß wahrscheinlich auf die 24 FE 02 triggern und danach die Werte abholen...

So ist auch schon drin.
Werde das Programm noch etwas aufhübschen, dann stelle ich es zum angucken rein.
Vielleicht muß ja jemand die Temperatur per PC messen

Die Suche nach dem Comport hab ich noch nicht implementiert.
Wird aber sicher sinnvoll sein.
Muß ich wieder nach 24 FE 02 suchen, wenn das auf eine Comport zurückkommt,
ist der halt richtige.

Anbei der Quelltext. Kann man sicher noch viel besser machen, aber es funktioniert erstemal:
KompilierenMarkierenSeparieren
Temperaturmessung Temper232 für PROFAN
über RS232 COMPORT 3
(C) Webbisoft 3/2010
Declare a$, f%, ende%,e%
Declare x$, y$, z%, bz&, xtemp!,xdtemp!, ll&, hh&, testtemp%

Proc GetComInput

    Parameters id%
    x$ = @ReadCom$(id%,10)
    y$ = @ComError(id%)
    bz& = @addr(x$)
    print "temp: ",bz&

    WhileNot x$ = ""

        testtemp% = 0
        x$=@ReadCom$(id%, 10)
        @ComError(id%)
        bz& = ord(mid$(x$,1,1))
        print "temp1: ",(bz&); " ";

        if bz& = 36

            testtemp% = 1

        else

            testtemp% = 0

        endif

        bz& = ord(mid$(x$,2,1))
        print (bz&); " ";

        if bz& = 254

            testtemp% = 1

        else

            testtemp% = 0

        endif

        bz& = ord(mid$(x$,3,1))
        print (bz&); " ";

        if bz& = 2

            testtemp% = 1

        else

            testtemp% = 0

        endif

        bz& = ord(mid$(x$,4,1))
        print (bz&); " ";
        bz& = ord(mid$(x$,5,1))
        print (bz&); " ";
        bz& = ord(mid$(x$,6,1))
        print (bz&); " "

        iF TESTTEMP% =1

            hh& = ord(mid$(x$,4,1))
            ll& = ord(mid$(x$,5,1))
            Print "ll& =", (ll&)
            Print "hh& =",(hh&)
            Xtemp! =256*hh&+ll&
            Print "xtemp!=", xtemp!

            If Xtemp! > 16384

                XDtemp! = -(16384-(Xtemp!)/4)*(0.03125) Korrekturwert 4000h ab 100°C

            Else

                XDtemp! = (Xtemp!/4)*(0.03125)

            EndIf

            XDtemp!= XDtemp!-3 Korrekturwert
            @Set("Decimals",2)
            print "Temperatur USB232= ",xdtemp!,"°C"

        endif

        sleep 800

    EndWhile

    print

EndProc

Window 0, 0 - 400, 400
f% = @OpenCom("COM3", 1024, 1024)
@SetCom("COM3:4800,N,8,1")
@WriteCom(f%, chr$($24)+ chr$($10)+chr$($05)+chr$($01)+chr$($01)+chr$($00)+chr$($32)+chr$($01)+chr$($55))
Thermometer initialisieren
y$ = @ComError(f%)
GetComInput f%                     Antwort abwarten und anzeigen
ende% = 0

WhileNot ende%

    a$ = @Inkey$()                   Tastatur abfragen

    If a$ = "§"                      Ende mit SHIFT-3

        ende%=1

    Else

        GetComInput f%                 empfangene Zeichen lesen

    Endif

EndWhile

@CloseCom(f%)
End
 
Xprofan X3.1
Win7 auf AMDX6
28.03.2010  
 



Juhu, bitte auch als Exe Posten mit (am besten Kauflink zum Tempfühler, runde Sache und ich hole mir solch Tempfühler garantiert schon alleine fürs Mondauto. ^^
 
28.03.2010  
 




Web
Scanner
Du kannst Dir dieses Thermometer bei Ebay bestellen:

USB xp linux thermometer,RS232 protocol,TEMPer232
Ebay Artikelnummer:220564891464

Herstellerseite:
[...] 

Das Ding kostet 18US$ + 6$ Fracht.
Das Temper232 kommt aus China, dauert paar Tage.

Grüße

Web
 
Xprofan X3.1
Win7 auf AMDX6
28.03.2010  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

54.670 Betrachtungen

Unbenanntvor 0 min.
H.Brill09.05.2023
Erasmus.Herold30.04.2019
E.T.25.02.2018
Tango03.09.2017
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