PROGRAMMER’S GUIDE Pylon Programcı El Kitabı,Basler pylon .NET API kullanarak n
PROGRAMMER’S GUIDE Pylon Programcı El Kitabı,Basler pylon .NET API kullanarak nasıl programlama yapılacağına ilişkin bir kılavuzdur.Başlamak için bu kılavuzu pylon kod örnekleri ile kullanabilirsiniz.Ek olarak API referansı Basler pylon .NET arayüzü hakkında belge sağlar. 1.Bir Visual Studio Projesi Oluşturma Başlamadan önce Visual Studio 2010 veya sonraki sürümlerinin C# veya Visual Basic geliştirme desteğinin yüklü olduğundan emin olun.Basler pylon’u kullanmak için herhangi bir .NET dili için yeni bir proje oluşturun.Projenin .NET Framework 4.0 veya sonraki bir sürümü hedeflemesi gerekiyor.Bundan sonra Basler.Pylon montajına bir montaj referansı eklemelisiniz.Bunu yapmak için seçilen .NET dili için standar Visual Studio iletişim kutusunu kullanın. 2.Bilmeniz Gereken .NET Dili Özellikleri Pylon.NET API’yi kullanmada zorluk yaşamamak için aşağıda açıklanan .NET dil özelliklerini bilmelisiniz. 2.1 System.IDisposable Arabirimi Çoğu pylon nesnesi yönetilmeyen sistem kaynaklarını içerdiği için atılması gereken nesnelerle nasıl başa çıkılacağını bilmek önemlidir.Pylon nesnelerinin çöp toplayıcı tarafından otomatik olarak temizlenmesi gerekmiyor.Bu nedenle pylon nesneleri System.IDisposable arabirimini uygular.IDisposable uygulanan bir nesnenin örneğinin Dispose() işlevini çağırarak veya “using” deyimini kullanarak uygun şekilde imha edilmesi gerekir.Alternatif olarak “try-finally” ifadesi kullanabilirsiniz.Bu durumda Dispose() çağrısı “finally” blokta bulunmalıdır. // Create a camera object that selects the first camera device found. // More constructors are available for selecting a specific camera device. using (Camera camera = new Camera()) { // Open the connection to the camera device. camera.Open(); // Close the connection to the camera device. camera.Close(); } IDisposable arayüzü karşılık gelen tamponlarını kontrol etmek için grab sonuçlarıyla da gerçekleştirilir.pylon görüntüleri grablamak için sabir miktarda tampon içeren(varsayılan:10) bir tampon havuzu kullanır.Bu gereklidir,çünkü tamponun hafıza sayfalarını kilitlemek gibi hazırlıklar görüntüleri bir tamponun içine alabilmek için sürücü tarafından yapılmalıdır.Bu nedenle bir tampon havuzu kullanmak yakalanan her görüntü için yeni bir tampon ayırmaktan çok daha etkilidir.Dispose() işlevini çağırarak başka bir görüntüyü yakalamak için arabellğin yeniden kullanılabileceğini işaret edersiniz.Bu,çöp toplayıcı tarafından tam olarak ele alınamaz çünkü çöp toplama işlemlerinin ne zaman gerçekleştirileceği tahmin edilemez. // Yakalamaya başla camera.StreamGrabber.Start(); // Çok sayıda görüntü yakala. for (int i = 0; i < 10; ++i) { // Bir görüntü bekle ve sonra onu al. 5000 ms'lik bir zaman aşımı kullanılır. IGrabResult grabResult = camera.StreamGrabber.RetrieveResult(5000, TimeoutHandling.ThrowException); using (grabResult) { // Görüntü başarıyla yakalandı mı? if (grabResult.GrabSucceeded) { // Görüntü verilerine eriş. Console.WriteLine("SizeX: {0}", grabResult.Width); Console.WriteLine("SizeY: {0}", grabResult.Height); byte[] buffer = grabResult.PixelData as byte[]; Console.WriteLine("Gray value of first pixel: {0}", buffer[0]); Console.WriteLine(""); } else { Console.WriteLine("Error: {0} {1}", grabResult.ErrorCode, grabResult.ErrorDescription); } } } // Yakalamayı durdur camera.StreamGrabber.Stop(); 2.2 Events pylon nesneleri, örneğin CameraOpened, ImageGrabbed veya ParameterChanged gibi ilginç bir şey olduğunda bildirimde bulunmak için .NET olay dili özelliğini kullanır. Bu olaylara nasıl abone olunacağını, tüketileceğini ve abonelikten çıkacağınızı bilmeniz gerekir. Ancak, olayları bilmeden temel parametreleştirme ve yakalamayı kullanabilirsiniz. DİKKAT Bir olay işleyicide ortaya çıkan istisnalara açıkça özen gösterin. Aksi takdirde,ortaya çıkan bir istisna, görüntü yakalamayı durdurmak gibi istenmeyen etkilere neden olabilir. Olay kaynağı tarafından belirtilen istisnaların nasıl işlendiğiyle ilgili olarak, belirli olay kaynağının belgelerine bakın, örneğin, CameraOpened. 2.3 Extension Methods Pylon.NET,uzantı yöntemlerini kullanır.Bazı programlama dilleri için pylon API’sinin uzatma yöntemleri açıkça kapsam dahiline alınmalıdır.C# kullanırken uzatma yöntemleri anında kullanılabilir. ' Bring extension methods of the pylon API into scope. Imports Basler.Pylon.IIntegerParameterExtensions Imports Basler.Pylon.IBooleanParameterExtensions Imports Basler.Pylon.ICommandParameterExtensions Imports Basler.Pylon.IEnumParameterExtensions Imports Basler.Pylon.IFloatParameterExtensions Imports Basler.Pylon.IImageExtensions Imports Basler.Pylon.IStringParameterExtensions 3. Camera Class API,tüm kamera cihaz tipleri için tek bir Camera sınıfı sağlar.Camera sınıfının bir örneği tek bir fiziksel kamera cihazını temsil eder.Aşırı yüklenmiş talimatlar belirli bir kamera cihazını örneğin bilinen bir IP Adresine veya Cihaz Kullanıcı Kimliğine sahip bir kamerayı seçmek için kullanılabilir.Gerekirse,bağlı tüm kamera cihazları hakkında bilgi almak için CameraFinder uygulamasını kullanabilirsiniz. Kamera cihaz parametrelerine erişmek veya görüntüleri yakalayabilmeniz için ilgili sürücüleri başlatmanız ve fiziksel kamera cihazıyla bağlantı kurmanız gerekir.Bunu yapmak için Open() işlevini çağırın.Kamera cihazıyla bağlantıyı kapatmak için Close() ı kullanın. Kamera sınıfının bir örneği yönetilmeyen sistem kaynaklarını tahsis eder.Bu nedenle sınıf IDisposable arabirimi uygular.Örneğin,Dispose() işlevini çağırarak veya “using” deyimini kullanarak uygun şekilde imha edilmesi gerekir. // Bulunan ilk kamera cihazını seçen bir kamera nesnesi oluştur. // Belirli bir kamera cihazını seçmek için daha fazla talimat mevcuttur. using (Camera camera = new Camera()) { // Kamera cihazıyla bağlantıyı açın. camera.Open(); // Kamera cihazıyla bağlantıyı kapatın. camera.Close(); } 4. Parameter Access Kamera yapılandırması ve diğer parametrelere erişmek için pylon API,GenlCam standardı tarafından tanımlanan teknolojileri kullanır.Standar,ayrıca kamera açıklama dosyaları için bir format tanımlar.Bu dosyalar GenlCam uyumlu kameraların yapılandırma arayüzünü tanımlar.Açıklama dosyaları XML olarak yazılmıştır ve kamera kayıtlatını,bağımlılıklarını ve üst düzey özelliklere erişmek için gereken diğer tüm bilgileri açıklar.Bu Kazanç(Gain),Pozlama Süresi(Exposure Time) veya Piksel Formatı(Pixel Format) gibi özellikleri içerir.Özelliklere düşük seviyeli kayıt okuma ve yazma işlemleri yoluyla erişilir. 4.1 Parameter Collections Tüm parametrelere erişmek için Camera sınıfı veya diğer pylon nesneleri teknir IParameterCollection sağlar.Parametre koleksiyonu yol(path),ad(name) ve tür(type) ile tanımlanmış bir dizi parametreyi temsil eder. Pylon API’sı önceden tanımlanmış parametre isimlerini listeler.Bu parametre listeleri bir programlama dilinin numaralandırmasına benzer bir dizi parametre adı içerir.Tüm parametre liste sınıf tanımlayıcıları “PL” ön ekiyle başlarçBu,API belgelerinde veya Visual Studio editöründe IntelliSense kullanırken gerekli parametre listesini bulmayı kolaylaştırır. PLCamera parametre listesi,tüm kamera cihaz tiplerinin mevcut tüm parametrelerinin birliğini temsil eder.Yalnızca bir kamera cihaz tipi kullanıyorsanız cihaza özel bir parametre listesi kullanabilirsiniz.Örneğin yalnızca GigE kamera kullanıyorsanız PLGigECamera parametre listesini kullanabilirsiniz.Camera sınıfının bir örneğinin parametrelerine erişmek için PLCameraInstance parametre listesini kullanabilirsiniz. Parametre Kamera kodu örneğinde aşağıdaki kod örneği bulunabilir: /************************************************************************* * Kamera parametrelerine erişme * *************************************************************************/ // Kamera cihaz parametrelerine erişmeden önce kamera açılmalıdır. camera.Open(); // DeviceVendorName, DeviceModelName ve DeviceFirmwareVersion, string parametrelerdir. Console.WriteLine("Camera Device Information"); Console.WriteLine("========================="); Console.WriteLine("Vendor : {0}", camera.Parameters[PLCamera.DeviceVendorName].GetValue()); Console.WriteLine("Model : {0}", camera.Parameters[PLCamera.DeviceModelName].GetValue()); Console.WriteLine("Firmware version : {0}", camera.Parameters[PLCamera.DeviceFirmwareVersion].GetValue()); Console.WriteLine(""); Console.WriteLine("Camera Device Settings"); Console.WriteLine("======================"); // AOI’yi ayarlama. OfsetX, OfsetY, Width ve Height, integer parametreleridir. // Bazı kameralarda ofsetler salt okunurdur. Yazılabilir iseler, ofsetleri min. a ayarlayın. camera.Parameters[PLCamera.OffsetX].TrySetToMinimum(); camera.Parameters[PLCamera.OffsetY].TrySetToMinimum(); // Bazı parametrelerin kısıtlamaları vardır. Geçerli bir değer ayarladığınızdan emin olmak için GetIncrement / GetMinimum / GetMaximum kullanabilirsiniz. // Burada, pylonun gerekirse değeri düzeltmesine izin veriyoruz. camera.Parameters[PLCamera.Width].SetValue(202, IntegerValueCorrection.Nearest); camera.Parameters[PLCamera.Height].SetValue(101,IntegerValueCorrection.Nearest); Console.WriteLine("OffsetX : {0}", camera.Parameters[PLCamera.OffsetX].GetValue()); Console.WriteLine("OffsetY : {0}", camera.Parameters[PLCamera.OffsetY].GetValue()); Console.WriteLine("Width : {0}", camera.Parameters[PLCamera.Width].GetValue()); Console.WriteLine("Height : {0}", camera.Parameters[PLCamera.Height].GetValue()); // Set an enum parameter. string oldPixelFormat = camera.Parameters[PLCamera.PixelFormat].GetValue(); // Remember the current pixel format. Console.WriteLine("Old PixelFormat : {0} ({1})", camera.Parameters[PLCamera.PixelFormat].GetValue(), oldPixelFormat); // Set pixel format to Mono8 if available. if (camera.Parameters[PLCamera.PixelFormat].TrySetValue(PLCamera.PixelFormat.Mono8) ) { Console.WriteLine("New PixelFormat : {0} ({1})", camera.Parameters[PLCamera.PixelFormat].GetValue(), oldPixelFormat); } // Some camera models may have auto functions enabled. To set the gain value to a specific value, // the Gain Auto function must be disabled first (if gain auto is available). camera.Parameters[PLCamera.GainAuto].TrySetValue(PLCamera.GainAuto.Off); // Set GainAuto to Off if it is writable. 4.2 Parameter Types Integer Parametreler IIntegerParameter arayüzü,integer parametrelere erişim sağlar.Bir integer parametresi piksel cinsinden görüntü genişliği veya yüksekliği gibi bir integere sayısına göre ayarlanabilen bir özelliği temsil eder.Bir tamsayı parametresinin geçerli değerinin yanı sıra,parametre için izin verilen değer aralığını tanımlayarak minimum ve maksimum değerleri okuyabilirsiniz.Ayrıca parametrenin artış değerini okuyabilirsiniz.Mevcut,minimum,maksimum ve artış değerinin tümüne 64 bitlik değerler olarak erişilebilir. Floating-Point Parametreler Floating-point parametreler IFLoatParameter nesneleri tarafından temsil edilir.Floating-point değerine ayarlanabilirler.Floating-point parametresi aşağıdaki istisnalar dışında integer parametresine benzer: Tüm değerler "double" tipindedir (IEEE 754 standardında tanımlandığı şekilde çift kesinlikli kayan nokta sayıları). Artış değeri isteğe bağlıdır ve değerler otomatik olarak geçerli bir artışa düzeltilir. Boolean Parametreler Boolean parametresi, etkinleştirilebilen veya devre dışı bırakılabilen binary-değerli bir özelliği temsil eder. IBooleanParameter arayüzü ile temsil edilir. Örneğin, bir Boolean parametresi, kameranın harici tetikleyici girişi gibi belirli bir özelliği etkinleştirmek veya devre dışı bırakmak için bir "anahtar" olabilir. Numaralandırma Parametreleri IEnumParameter arayüzü, önceden tanımlanmış bir setten herhangi bir değeri alabilen kamera parametrelerine erişim sağlar. Numaralandırma parametrelerinin örnekleri PixelFormat ve TestImageSelector parametreleridir. Command Parameters Komut parametreleri (ICommandParameter) kameranın içindeki bir işlemi veya eylemi tetikler, örneğin bir yazılım tetikleyicisi verir. Eylem Execute () çağrılarak yürütülür. Eylemin yürütülmesinin bitip bitmediğini belirlemek için IsExecuting () öğesini kullanabilirsiniz. String Parameters IStringParameter arabirimi, string parametrelerine erişim sağlar. 4.3 Accessing Parameters Without Using a Parameter List Parametre listesi kullanmadan parametrelere erişmek, örneğin, henüz bir parametre listesine dahil edilmemiş yeni eklenen kamera parametrelerini ayarlamak istiyorsanız, nadir durumlarda gerekli olabilir. Bunun dışında, Basler yanlış parametre türleri kullanmaktan kaçınmak ve yazım hatalarını önlemek için parametre listeleri kullanmanızı önerir. // Varsa, piksel biçimini Mono8 olarak ayarlayın. if (camera.Parameters[PLCamera.PixelFormat].TrySetValue(PLCamera.PixelFormat.Mono8) ) { Console.WriteLine("New PixelFormat : {0} ({1})", camera.Parameters[PLCamera.PixelFormat].GetValue(), oldPixelFormat); } // Parametrelere erişirken, ad ve tür genellikle önceden bilinmelidir. // Herhangi bir kamera aygıtı parametresine erişmek için aşağıdaki sözdizimi kullanılabilir. // Parametre adını ("BrandNewFeature") ve erişmek istediğiniz parametreye göre (IntegerName, EnumName, FloatName, vb.) Parametre türünü ayarlayın. camera.Parameters[(IntegerName)"BrandNewFeature"].TrySetToMaximum(); // TrySetToMaximum yalnızca tanıtım amacıyla çağrılır. // Bu, sadece eksiksizlik için gösterilen parametre listesini kullanmadan bir parametreye erişmenin başka bir alternatifidir. IIntegerParameter brandNewFeature = camera.Parameters["BrandNewFeature"] as IIntegerParameter; // brandNewFeature, yoksa mevcut değilse null olacaktır, çünkü IIntegerParameter öğesine atılamaz if (brandNewFeature != null) { brandNewFeature.TrySetToMaximum(); } // Enumeration values are plain strings. // Similar to the example above, the pixel format is set to Mono8, this time without using a parameter list. if (camera.Parameters[(EnumName)"PixelFormat"].TrySetValue("Mono8")) { Console.WriteLine("New PixelFormat : {0}", camera.Parameters[(EnumName)"PixelFormat"].GetValue()); } 4.4 How Parameter Lists Work Parametre listeleri, örneğin, PLCamera, pylonun derlenme zamanında otomatik olarak oluşturulan sınıflardır. Parametre listeleri, her kamera parametresi için, örneğin, Genişlik için bir özellik içerir. Bir özellik isim türlerinden birini döndürür, örneğin, IntegerName. Bir ad türü, parametrenin tam adını düz string olarak içerir, örneğin, "@ CameraDevice / Width".Bu şekilde, derleyici, geçen isim tipine göre aşırı yüklenen IParameterCollection endeksleyicilerini uploads/Geographie/ programmer-x27-s-guide.pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/4RhRzwaNtZPAdyxAZ8tkkd84I6go348iB3MKuzDk7ZtQvGq6sfuB269nxy8jZ3SEqrFaLIItSxVpl6TWgBLu8qaC.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/9FpuGLMtFOBEiQF878fSg8cohPs4HqleEHcPJxgCC3pBp6u37gUy6UeiFTi6S6D468IAcOAMoE4lMDVPy96WueUS.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/TXVk7iq1GvXuNNlGKjnD46WuD2HaNhgHoa3SUGEVTttEgyj4vwVcB8v0FjoKyfC9Ieu307sdlgNN3sAljwKeaDYG.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/fYSCkVKvmAvqHwghE344KQWLdhuJJJYgT7lqLG78vRoeLBuexsC2geLhyZ90KpenHojxSaVzcljE7carHU6lJLHs.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/U0OOD4GpclcmtKRy7Vunde63oElKMLT4wCt6ZuSai0dd7159azESYGsTqrYv5wCiHwKso80Ldaqzv0yoLMouPMsG.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/HsEaYBnYDiO58AwjtAdzRQQKhfclr5XztXSQ8LSEYuhx3tO6Wemk1ko1lO00ABbCYgCpUwjVt0EitbanEXRy5nYK.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/daj52Eo1d2xfU5nEVGXwMeXAal93ruTi4YIqAhCmCPTh1eXT16yPfReglqglnzxRvqnUh7GjkfJOmZm7x4aa4LVx.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/isNL1csw4nqTILAXSnRmjlX8JJ4qB0QYPpUjYy832v1NLpQ2d5Z7L1DBiIcdcy86L8v9Kmw73I689KwqNA1yiFoH.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/2alwz2LlZZq9Mx6wmnO0QXnErQPxnuDRS68Di8HB4IhC8fn1s1NWSIdARoLCQsOK6zXl9hilUULXD97EcLOFTrPi.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/PKUXKrGi765pFpW89DJxcxZchv9CKrp8oZZrvGtWhnuSY7AS5H3gLXFZK95sT6a3TEi79XAlnAgSaSPhgxKGrtW7.png)
-
20
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 14, 2021
- Catégorie Geography / Geogra...
- Langue French
- Taille du fichier 1.0647MB