<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=23&amp;t=19420&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-10-19T22:10:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=19420&amp;mode</id>
<entry>
<author><name><![CDATA[altym12119]]></name></author>
<updated>2017-10-19T22:10:21+01:00</updated>
<published>2017-10-19T22:10:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19420&amp;p=197390#p197390</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19420&amp;p=197390#p197390"/>
<title type="html"><![CDATA[Komponet Delphi - wykrywanie portów Com (wersja &quot;light&quot;)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19420&amp;p=197390#p197390"><![CDATA[
Witam<br />Ostatnio dzięki poradnikom dotyczącym programowania w Delphi postanowiłem powrócić do tematu (wcześniej używałem Visual Studio C#). Ponieważ również zaczynam &quot;raczkować&quot; z mikrokontrolerami AVR postanowiłem na początek zająć się obsługą serial portu. Aby poznać zasady programowania własnych komponentów w Delphi postanowiłem (w oparciu o poradniki video) na początek w ramach ćwiczeń stworzyć komponent wykrywający porty COM w PC. Owszem wiem, że w sklepie ATNEL dostępny jest rozbudowany komponent wyczerpujący w pełni temat, jednak postanowiłem stworzyć bardzo lekki komponent oparty na TComboBox. Ma on na celu po prostu podanie w rozwijalnym menu listę aktualnie dostępnych portów COM. Wersja, której kod podaję poniżej jest bardzo &quot;lekka&quot; i podaje tylko numery czynnych portów (bez ich opisów). Myślę że na podstawie tego kodu każdy będzie mógł sobie rozbudować listę portów o dalsze informacje (port virtualny itp).<br />Wystarczy taki komponent umieścić na formularzu by w prosty sposób wybrać numer portu COM do dalszych działań. Może komuś to się przyda.<br /><br />[syntax=pascal]unit SerialCombo;<br /><br />interface<br /><br />uses<br />  System.SysUtils, System.Classes, Vcl.Controls, Vcl.StdCtrls,<br />   Winapi.Windows, System.Win.Registry;<br /><br />type<br />  TComboBoxSerial = class(TComboBox)<br />  private<br />   var<br />    Rejestr: TRegistry;<br />    procedure getNamesCommPorts;<br />    { Private declarations }<br /><br />  protected<br />    { Protected declarations }<br /><br />  public<br />    var<br />      SerialCommPortList: TStringList;<br />      Constructor Create(AOwner : TComponent); Override;<br />      Destructor Destroy; Override;<br />      procedure DropDown; override;<br /><br />    { Public declarations }<br />  published<br />    { Published declarations }<br />  end;<br /><br />procedure Register;<br /><br />implementation<br /><br />procedure Register;<br />begin<br />  RegisterComponents('ATKomponent', &#91;TComboBoxSerial&#93;);<br />end;<br /><br />  procedure TComboBoxSerial.getNamesCommPorts;<br />  var<br />   i: Integer;<br />  begin<br />    Rejestr.OpenKeyReadOnly('\HARDWARE\DEVICEMAP\SERIALCOMM\');<br />    SerialCommPortList.Clear;<br />    Rejestr.GetValueNames(SerialCommPortList);<br />    Self.Clear;<br />    for i:=0 to SerialCommPortList.Count - 1 do<br />    begin<br />      Self.Items.Add(Rejestr.ReadString(SerialCommPortList&#91;i&#93;));<br />    end;<br /><br />  end;<br /><br />  Constructor TComboBoxSerial.Create(AOwner : TComponent);<br />  begin<br />    inherited Create(AOwner);<br /><br />      Rejestr:= TRegistry.Create;<br />      Rejestr.RootKey:= HKEY_LOCAL_MACHINE;<br />      SerialCommPortList:= TStringList.Create;<br />      Parent:= TWinControl(AOwner);<br />      self.getNamesCommPorts;<br />  end;<br /><br />  Destructor TComboBoxSerial.Destroy;<br />  begin<br />    Rejestr.Free;<br />    inherited;<br />  end;<br /><br />  procedure TComboBoxSerial.DropDown;<br />  begin<br />    inherited;<br />    self.getNamesCommPorts;<br />  end;<br /><br />end.[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7617">altym12119</a> — 19 paź 2017, o 22:10</p><hr />
]]></content>
</entry>
</feed>