| |
|
|
- Page 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: KompilierenMarkierenSeparierenTemperaturmessung 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
@Clos a> (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 |
|
|
| |
|
|
| |
|
- Page 3 - |
|
|
Web Scanner | DLL mit Doku ist nicht dabei..leider. So siehts installiert aus:
|
|
|
| |
|
|
|
| Na die 169KBer sieht doch schonmal gut aus, schau doch mal rein - unten stehen oft gleich Exportnamen und schalt mal in Deinen Explorereinstellungen [X] bekannte Extensionen ausblenden ab - sieht man ja sonst nüscht. ^^ |
|
|
| |
|
|
|
Web Scanner | im 169er steht unten das drin:
E:xiaosongRDingHidHidFTDllDebugHidFTDll.pdb
Hilft das
Jetzt hab ich auch noch das gefunden: [...]
Mit RS232 Ausgabe..... wäre wohl einfacher, was
|
|
|
| |
|
|
|
|
uses the communicating protocol and supports the RS232 4800bps standard, and this supplies convenience to the users who want to write programs themselves. Na genau, der Treiber wird nen (virtuellen) COM-Port bereitstellen, also OpenCom . |
|
|
| |
|
|
|
Web Scanner | gibts nur ein keines Problem, ich hab NICHT den RS232 Typen hier liegen
Spassenshalber habe ich der Software per den RS232 Stick runtergeladen, aber damit corre mein Stick naturalmente nicht.
Gibt es bei USB offensichtlich unterschiedliche Anbindungen:
1 x circa den Comport = RS232 1 x USB irgendwie anders
Werde also besser versuchen das RS232 Dingens zu bekommen? Oder wir finden noch ne andere Lösung. Ich sehe ja nicht mal auf welchem Comport ich suchen sollte? Gibst da ev. ne Auswertesoftware, oder sowas? |
|
|
| |
|
|
|
| |
|
| |
|
|
|
GDL | Genau das meine ich mit Kanal ermitteln. Das sollte auch mit XProfan gehen und nicht nur circa den Gerätemanager.
Ich weis auch nicht wie die mitgelieferten Software die Kanäle ermitteln an welcher COM Nummer nun ihr Gerät liegt.Auf alle Fälle findet die mitgelieferte Software ihr Gerät ohne das der Anwender Einstellungen machen muss,egal welcher Kanal gerade vergeben wurde.Irgendwie gibt es eine Windowsinterne Übergabe.
- Gerätetreiber wird beim Anstecken an USB geladen - Windows erkennt Hardware und teilt nächst freien USB Kanal zu. Also 4 wenn schon 3 USB belegt sind oder 2 wenn erst 1 USB belegt ist - Gerätetreiber richtet mit diesem Kanal virtuellen Port ein - Windows stellt Anwenderprogrammen den virtuellen Port einschliesslich Kanal und Kennung zu verfügung.
Wie greife ich nun mit XProfan auf alle virtuellen Port mit Namen(liefert Treiber) und Kanalnummer(liefert Window) zu und suche meinen Port heraus.Ohne dass der Anwender erst seine Portnummer am Programmstart irgendwo suchen muss ? |
|
|
| |
|
|
|
| Comports listen, keine Ahnung - müsste man vlt. ergoogeln. ^^ Hier stehen schon ein paar Befehle: [...]
Internally the code provides 9 different ways (yes you read that right: Nine) of enumerating serial ports: Using CreateFile, QueryDosDevice, GetDefaultCommConfig, two ways using the Setup API, EnumPorts, WMI, Com Database & enumerating the values under the registry key HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPSERIALCOMM.
Und hier: [...] |
|
|
| |
|
|
|
GDL | Hi,
jetzt sind wir an dem Punkt, wo ich mir schon weiter oben direkte USB Unterstützung wünschte.
Den virtuellen Namen kenne ich ja vom Treiber her.
Würde mir sowas vorstellen : kanal%=find$(Portname$)
Servus Georg |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Detlef Tussing | Ich habe unter XProfan auch mit USB experimentiert.
Habe jedoch eine DLL bekommen um 8 Aus und 2 Eingangskanäle zu steuern.
Ich vermute bei deiner Software ist eine versteckte DLL
Sieh mal wie ich die Karte anspreche
declare a%,b%,c%,d%,e% a%=0 Kartenadresse b%=2Digitalkanaleingang c%=1Analogkanaleingang d%=3Digitalkanalausgang e%=2Analogkanalausgang def opendevice(1) !"k8055d.dll","OpenDevice" def closedevice(0) !"k8055d.dll","CloseDevice" def readdigi(1) !"k8055d.dll","ReadDigitalChannel" def readanalog(1) !"k8055d.dll","ReadAnalogChannel" def ClearAllDigital(0) !"K8055d.dll","ClearAllDigital" def setdigi(1) !"K8055d.dll","SetDigitalChannel" def analogout(1) !"K8055d.dll","SetAnalogChannel" def clearallanalog(0) !"K8055d.dll","ClearAllAnalog" declare dllh& dllh&=usedll("k8055d.dll")
ifnot dllh&
messagebox "dll nicht geladen error","",0 end
endif
declare kartenadresse&,readdigi&,schreibdigi&,readanalog&,schreibanalog& kartenadresse&=opendevice(a%)Initialisierung der Karte
while readanalog&<125
readanalog&=readanalog(c%) locate 10,10 print "Analogkanaleingang",c%," = ",readanalog& readdigi&=readdigi(b%) locate 14,10 print "Digitalkanaleinganggang",b%," = ",readdigi& schreibdigi&=setdigi(d%) locate 18,10 print "Digitalkanalausgang",d%," = ",schreibdigi& locate 22,10 print "Kartenadresse:",kartenadresse& waitinput schreibanalog&=analogout(e%)
endwhile
waitinput clearalldigital() clearallanalog() closedevice() freedll dllh& end
Dies ist nur ein Testprogramm per die USB-Karte. sicher wäre es schön einen direkten zugriff von XProfan auf USB zu haben. |
|
|
| |
|
|
|
Frank Abbing | |
|
| |
|
|