Ahoj, jsem tu poprvé, hledám tu dobrou duši, která by mi pomohla s následujícím problémem. Mám USB HID teploměr s vlhkoměrem (HID TemperHUM z dealextreme.com).
Mám program, včetně zdrojáku ve Visual Studio C#, který funguje s předcházejícím USB jen teploměrem, už ale neběhá s HID temperhumem. Rok jsem se snažil něco s tím provést, ale nedařilo se. Teď se mi ozval Holanďan, programátor v Delphi a napsal zkusmo pár řádek v Delphi a načetl hodnoty z temperhumu. Já bych tyhle řádky potřeboval přeportovat z Delphi do C#. Jedná se o proceduru importovanou z DLL k tomu USB TemperHUMu.
Já to prostě neumím. Kdysi jsem si napsal pár programů v Borland Pascalu, tehdy ještě v éře DOSu a W3.11. Loni jsem byl schopen maličko upravit ten program na teploměr v tom c#, ale to bylo pár triviálních věcí.
Kus Delphi kódu je zde:
procedure TForm1.Button2Click(Sender: TObject);
var H : THandle;
nr : longint;
bl : boolean;
res: double;
temp, hum : double;
begin
Memo1.Clear;
H := LoadLibrary('HidFTDll.dll'); // Try to load the DLL
if h =0 then Exit; // Handle is zero, could not load DLL
Memo1.Lines.Add('HidFTDll.dll loaded...');
nr:= EMyDetectDevice(0); // Get the number of devices
if nr=0 then
begin
FreeLibrary(h);
Application.Terminate; // No device found, exit
end;
Memo1.Lines.Add(IntToStr(nr) + ' Device(s) detected...');
EMySetCurrentDev(0); // Set first device active
bl:=EMyInitConfig(true); // Initialize
Memo1.Lines.Add('Device initialized...');
EMyReadHUM(temp, hum);
Memo1.Lines.Add('Temperature returned the value: '+Floattostr(temp));
Memo1.Lines.Add('Humidity returned the value: '+ floattostr(hum));
FreeLibrary(H); // Free memory (Unload DLL)
Memo1.Lines.Add('DLL unloaded, memory freed');
end;
Já nevím, jaký má být zápis pro dllimport knihovny HIDFTDLL.DLL a jak potom použít proceduru EMyReadHUM a do proměnných (temp, hum) načíst hodnoty.
Snad se najde dobrá duše, která pomůže, předem díky.
Pedro