Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ApdComPort1 Ardunio
#1
Selamun Aleykum Ben Daha önce delphi 7 kullanıyordum ve dışardan tanımladıgım comport componentiyle ardunio mesaj alıp mesaj yazdırıyordum ama delphi sürümümüm yükseltim ve bu component delphi 10.4 zaten kedi içerisinde ApdComPort1 olarak tanımlanmış yükledim ama şöyle bir sorunum var mesala ben forma koydugum combox içerisinden aktif com'ları görmek istiyorum ama göremiyorum button tıklıyınca com seç diye bi sayfa geliyor onu seçtikten sonra gözüküyor ozmanda bi anlamı kalmıyor.birde delphi 7 ve delphi 10.4 bir bilgisayarda çalışıyor bir sorun oluşurmu üreticiler acısından
y4sVix.png
Cevapla
#2
Yeni bir bileşen seti ile kara düzen ilişki kurmaya çalışmak, gece zifiri karanlık bir dağ yolunda farlar kapalıyken dörtlü sinyal ile yol almaya benzer. Yol bir görünür bir yok olur. Smile

Önce bileşen setinin dökümantasyonunu inceleyin isterseniz. 

ComPort 0 bıraktığınız için o diyaloğu görüyor olmayasınız.  Idea

Sayfa 904 der ki :


uses
AdSelCom, AdPort;
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
begin
ApdShowPortsInUse := False;
for I := 1 to 50 do
if IsPortAvailable(I) then
ListBox1.Items.Add(ComName(I) + ' is available');
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
Smile çok teşekürler abi
Cevapla
#4
Comport Listeleme Setupapi DLL Fonksiyon uniti 

unit ComportUtility;

interface

uses
 Windows, Messages, SysUtils;

type
 THDEVINFO = Pointer;
 PSP_DevInfo_Data = ^TSP_DevInfo_Data;
 SP_DEVINFO_DATA = packed record
   cbSize: DWORD;
   ClassGuid: TGUID;
   DevInst: DWORD; // DEVINST handle
   Reserved: LongWord;
 end;
 TSP_DevInfo_Data = SP_DEVINFO_DATA;

 PDEVPROPKEY = ^TDEVPROPKEY;
 DEVPROPKEY = packed record
   fmtid : TGUID ;
   pid : Pointer;
 end;
 TDEVPROPKEY = DEVPROPKEY;

 DEVPROPTYPE = Pointer;
 PCWSTR = PWCHAR;

 TDEVINST = DWord;

 TPOSVERSIONINFOW = ^TOSVERSIONINFOW;
 TOSVERSIONINFOW = packed record
   dwOSVersionInfoSize : DWORD ;
   dwMajorVersion : DWORD ;
   dwMinorVersion : DWORD ;
   dwBuildNumber : DWORD ;
   dwPlatformId : DWORD ;
   szCSDVersion : array[0..127] of wchar;
 end;

 TComportsName = array of string;

const
 DIGCF_PRESENT = $00000002;
 DIGCF_ALLCLASSES = $00000004;
 DIGCF_PROFILE = $00000008;
 DIGCF_DEVICEINTERFACE = $00000010;
 INVALID_HANDLE_VALUE = DWORD($FFFFFFFF);
 MAX_DEVICE_ID_LEN = 200;
 SPDRP_DEVICEDESC = ($00000000) ;
 SPDRP_FRIENDLYNAME = ($0000000C);
 DEVPKEY_Device_BusReportedDeviceDesc : TDEVPROPKEY = (fmtid : '{540b947e-8b40-45bc-a8a2-6a0b894cbda2}' ; pid : pointer(4) );


function GetAvailableComports : TComportsName;
function SetupDiGetDeviceProperty(DeviceInfoSet: THDEVINFO; DeviceInfoData: PSP_DEVINFO_DATA; const PropertyKey: PDEVPROPKEY; var PropertyTypeBig GrinEVPROPTYPE; PropertyBufferTongueBYTE;PropertyBufferSizeBig GrinWORD; RequiredSizeTongueDWORD; FlagsBig GrinWORD): BOOL; stdcall; external 'Setupapi.DLL' name 'SetupDiGetDevicePropertyW';
function SetupDiGetClassDevsW(const ClassGuid: PGUID; Enumerator: PCWSTR; hwndParent: HWND; Flags: DWORD): THDEVINFO; stdcall; external 'Setupapi.DLL' name 'SetupDiGetClassDevsW';
function SetupDiEnumDeviceInfo(DeviceInfoSet: THDEVINFO; MemberIndex: DWORD; DeviceInfoData: PSP_DEVINFO_DATA): BOOL; stdcall; external 'Setupapi.DLL' name 'SetupDiEnumDeviceInfo';
function SetupDiGetDeviceRegistryPropertyW(DeviceInfoSet: THDEVINFO; const DeviceInfoData: SP_DevInfo_Data; Property_: DWORD; var PropertyRegDataType: DWORD; PropertyBuffer: PBYTE; PropertyBufferSize: DWORD; var RequiredSize: DWORD): BOOL; stdcall; external 'Setupapi.DLL' name 'SetupDiGetDeviceRegistryPropertyW';

implementation

function GetAvailableComports : TComportsName;
var
 GUID_CAM : TGUID;
 hDevInfo : THDEVINFO;
 DeviceInfoData : TSP_DEVINFO_DATA;
 i : DWORD;
 dwSize, dwPropertyRegDataType : DWORD;
 szDesc : array[0..1023] of char;
 IsOk : BOOL;
begin
 SetLength(Result, 1);
 GUID_CAM := StringToGUID('{4D36E978-E325-11CE-BFC1-08002BE10318}');
 hDevInfo := SetupDiGetClassDevsW (@GUID_CAM, nil, 0, DIGCF_PRESENT);
 if DWORD(hDevInfo) <> INVALID_HANDLE_VALUE then
 begin
   i := 0;
   repeat
     DeviceInfoData.cbSize := SizeOf(DeviceInfoData);
     IsOk := SetupDiEnumDeviceInfo(hDevInfo, i, @DeviceInfoData);
     if IsOk then
     begin
       if (SetupDiGetDeviceRegistryPropertyW (hDevInfo, DeviceInfoData, SPDRP_FRIENDLYNAME, dwPropertyRegDataType, @szDesc, sizeof(szDesc), dwSize)) then
       begin
         Result[i] := WideCharToString(@szDesc);
         SetLength(Result, Length(Result)+1);
       end;
     end;
     Inc(i);
   until not IsOk;
 end
 else
 begin
   Result := nil;
 end;
end;



end.

Combobox Mevcut Portları listeleme isim ile

procedure LoadComports;
var
 i: Integer;
 ports: TComportsName;
begin

 cbb1.Clear;

 ports := GetAvailableComports;
 for i := 0 to Length(ports) - 1 do
   if ports[i] <> '' then
     cbb1.Items.Add(ports[i]);
 cbb1.ItemIndex := 0;

end;


  LoadComports;
 


comport.png
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi