2017-01-24 13 views
6

Belli sayıda harici aygıtım var, onlara Onları Arayalım. Her Thing, bir PCI yuvasına takılı bir PnP Kartı ile bilgisayarla iletişim kurar. Her Kartta 4 Şey için bağlantı noktaları vardır. Her Thing için bir UID elde etmem gerekiyor ki, devam eden ve yeniden başlayanlar arasında tutarlı. Notların, erişebildiğim bir UID'de yerleşik olmadığını unutmayın.F N Play Aygıtlarını PCI Yuvası Kimlikleriyle Eşleme, C#

Bu sorunu çözme fikrim, Kartlardaki her bağlantı noktası için bir UID elde etmektir. Bana öyle geliyor ki, her bir kartın hangi PCI yuvasına takıldığını bulmam gerekiyor. Bu, yeniden başlatma sırasında değişmeyecek ve kesinlikle bağlantı noktaları aynı sırada olacak ... böylece her bir portu UID ile etiketleyebilir ve her Thing'in ilişkili olduğu UID'yi bilirim.

C# nesnelerinin en çok hangi amaçla kullanılacağını anlamak için biraz arama yaptım. Bulduğum en yakın System.Management kitaplığından ManagementObjectSearcher nesnesidir.

static void Main(string[] args) 
{ 
    IDsearch(); 
    Console.ReadLine(); 
} 

static void IDsearch() 
{ 
    ManagementObjectSearcher searcher = 
     new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity"); 

    foreach (ManagementObject queryObj in searcher.Get()) 
    { 
     Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]); 
     Console.WriteLine("Description: {0}", queryObj["Description"]); 
    } 
} 

Bu benim bilgisayardaki her PnP aygıtlar için aşağıdaki gibi çıktı üretir: İşte bu beni alacağı eğer istediklerini görmek yazdığı bazı basit kod

DeviceID: ACPI\GENUINEINTEL_-_INTEL64_FAMILY_6_MODEL_60_-_INTEL(R)_CORE(TM)[email protected]_3.60GHZ\_1 
Description: Intel Processor 

DeviceID: USB\VID_0CF3&PID_3004\ALASKA_DAY_2006 
Description: Dell Wireless 1535C Bluetooth Device 

Bu uyabilecek benim PCI yuvası numarasını da alabilirsem gereklilikler.

Ayrıca, Win32_SystemSlot sınıfında da rastladım, ancak bu bana aslında yuvaya takılan şeyin açıklamasını vermiyor gibi görünüyor! Bu noktada, PCI yuvaları olmadan açıklamaları ve açıklamaları olmayan PCI yuvaları alabilirim. Onları birlikte eşleyemiyorum, ihtiyacım olan şey bu. Bir şeye bakmalı ya da doğru soruyu sormamalıyım, çünkü bu beni oldukça yaygın bir şey olarak gösteriyor.

Yardımlarınız için teşekkür ederiz.

+0

Merhaba Keith, sorunun cevabını bilmiyorum ama bana cihazın kimliğini almanın bir yolunu bulmanız gerektiğini düşünüyorum. liman. İşler onları tanımlayacak bir şeye sahip olmalı ... şuna bak ... https://msdn.microsoft.com/en-us/windows/hardware/drivers/install/identifiers-for-pci-devices – GreatJobBob

+0

@GreatJobBob . Şeylerin aslında bir açıklaması var. Onlar farklı şeyler arasında benzersiz değiller. Ben aynı anda bağlı olan birden çok şeyi tanıtmak ve farklılaştırmak için çalışıyorum. Başka bir deyişle, bir kimliğim olmasına rağmen, bir UID almak için kart ve bağlantı noktasıyla eşleşmem gerekiyor. –

+0

Öğelerinizin bağlandığı Kart bir UID'ye sahip olmalıdır, böylece kartınızın hangi PCI yuvasına takılı olduğunu öğrenmek için Card UID'yi tarayamaz mısınız? –

cevap

-1

Bu makine son derece kırılgan geliyor, ne olursa olsun makine hareket eder ve cihazlar farklı bağlantı noktalarına takılır. Kişisel bir proje ya da dağıtmaya çalıştığınız bir şey. İkincisi ise başka bir yol bulmalısınız. Kendi yarattığın "şeyler" mi? Eğer öyleyse, her birinin benzersiz bir tanımlayıcısına sahip olma yeteneğini eklemeniz gerekir. Değilse, üreticiyle görüşmeli ve bilgi almalısınız. Bağlantı noktası tarafından tanımlanmaya çalışılması sizi yolda çok fazla başağrısına neden olabilir

+0

Puanlarınız mantıklı, ancak özel sorunuma gerçekten yardımcı değiller. Gerçekten de sana katılıyorum ... ama UID'lerde oluşturulacak şeyleri yeniden üretemiyorum. En azından benim gördüğüm grafik kartları gibi diğer cihazların üniteye özgü UID'ler içermediğine dikkat edin ... sadece modele özel. –

+0

Tamam, Keith bu kadar adil, ancak grafik kartlarıyla, yeniden başlatma arasında her birine gönderilenleri izlememiz gerekmez. Belki de yapmaya çalıştığınız şey hakkında daha fazla bilgi verebilirsiniz :) – GreatJobBob

+0

Nesneler kameralardır. Her kameranın çıktısını alındığı kamerayla ilişkilendirmem gerekiyor.Soruyu Şey'le özdeşleştirdim, çünkü bunun neden önemli olduğunu anlamıyorum ... sadece soruyu olabildiğince temiz tutmaya çalışıyorum. Aradığı çözüm, PnP veya PCI yuvası seviyesinde ... cihaz seviyesinde değil. –

İlgili konular