Ich arbeite an einem Programm in dem ich die serielle Schnittstelle verwenden möchte. Dabei lese ich mit folgendem Code die Beschreibung und COM# der vorhandenen COMs aus.:
Code: Alles auswählen
procedure LoadCOM(portliste: Tstrings; beschreibung: Tstrings; enableloop: boolean);
var
registry: TRegistry;
i: integer;
s, t: Ansistring;
begin
portliste.Clear();
beschreibung.Clear();
registry := TRegistry.Create();
registry.RootKey := HKEY_LOCAL_MACHINE;
if registry.OpenKeyReadOnly('HARDWARE\DEVICEMAP\SERIALCOMM\') then
begin
registry.GetValueNames(beschreibung);
for i := 0 to beschreibung.Count - 1 do
begin
s := beschreibung.Strings[i];
t := registry.ReadString(s);
portliste.Add(t);
end;
registry.CloseKey();
end;
registry.Free;
Jetz habe ich mir einen China USB-RS485-Converter gekauft, der verhält sich leider aber etwas eigenartig in Windows (10).
Im Gerätemanager wird
USB-SERIAL CH340 (COM5)
angezeigt.
Im Windows System 'Bluetooth und andere Geräte' scheint er ebenso auf.
In der Registry steht aber
\Device\Serial..... die Punkte stehen für ein paar chinesische Zeichen.
In Lazarus wird dafür
\Device\Serial??????
gefunden und damit kann ich leider nicht die COM# auslesen sonder es wird mir ein Leerstring zurückgegeben.
Ist ads ein Fehler in TRegistry, oder mache ich etwas falsch?
Danke für die Hilfe im voraus.
MFG Fritz