FRC Java Temelleri
Java Metodları , Nesneler ve Değişkenler
Java'da roboRIO'ya bağlı nesneler oluşturma
Genellikle roboRİO breakout panolarından(Türkiye'de bilinen adıyla roborio üzerindeki pin girişleri) birine bağlanan WPILib'deki tüm nesneler, bağlandığı kanal veya bağlantı noktası numarasını belirttiğiniz yerde oluşturulduğunda oluşturucuda bir argümana sahiptir. Yukarıdaki örnek Java için WPILib kullanılan kuralları göstermektedir.
Analog kanal 1'e bağlı bir AnalogGyro nesnesi oluşturur ve adresini "headingGyro" içine kaydeder.
Geçerli pozisyonu AnalogGyro'dan derece olarak alır ve değişken "heading" içinde saklar.
Java'da operatör arayüzü nesneleri oluşturma
Genel olarak Driver Station PC'sine USB üzerinden bağlanan nesneler, bağlandıkları USB portunu belirten tek bir argüman alırlar. FRC Driver Station ile çalışan herhangi bir joystick veya gamepad ile arabirim kurmak için gereken işlevselliği sağlayan tek bir Joystick sınıfı sağlanmıştır.
DS'deki USB bağlantı noktasına 1'e bağlı bir Joystick nesnesi oluşturur.
Joystick'in geçerli X ekseni değerini alır ve "speed" değişkeninde saklar.
Sınıf, yöntem ve değişken adlandırma
MXP IO Numarlandırılması
Java'da multithreading
Eşzamanlılık ve threads hakkında daha fazla bilgi için Oracle tarafından yayınlanan bu makaleye bakın. Aşağıda açıklanamayan hatalara neden olacak WPILib'de yazılan robot programları için önemli bilgiler bulacaksınız.
Thread
Aşağıdaki kod asla döngüden çıkamayacaktır! Tüm JVM durduğunda duracaktır. Thread tek başına çıkmadığı sürece thread'ı durdurmak için hiçbir yol yoktur. Bu problemi yaşayan takımlar genelde otonom içerisinde bu hatayı yapmaktadırlar. Bu da maç esnasında otonom bittikten sonra teleop kodlarını asla kullanamayacağınız anlamına gelmektedir.
Kötü Örnek:
Bir flag ayarlayarak bu sorunu çözebiliriz. Java'da her thread için tasarlanmış bir flag vardır. Bu flag'ı kontrol etmek için kodumuzu değiştirmemiz gerek. Bu örneğe bir göz atın:
Base Class Seçmek
IterativeRobot
C++
Java
Iterative Robot, en yaygın kod yapısına, robot kodunun yerine taban sınıfında durum geçişlerini ve döngülerini ele alarak destekler.
Timedrobot
TimedRobot temel sınıfı, belirtilen zaman aralığını kullanarak periyodik işlevleri çağırması dışında IterativeRobot (yukarıdaki) ile aynıdır. Her bir çağrı için uygun periyodik fonksiyona varsayılan zaman aralığı 0.02 saniyedir (20 milisaniye). Varsayılan süre dahili setPeriod (java) veya SetPeriod (C ++) değeri saniye cinsinden çift değer olarak çağrılarak geçersiz kılınabilir. Dahili olarak bir Notifier, aralığı ayarlamak için kullanılır.
SampleRobot
C++
Java
SampleRobot , durum akışının çoğunun doğrudan programınızda göründüğü ve WPILib kodunda gizlenmediği en basit şablondur. Olumsuz yanı, bu durum akışının yanlış uygulanması, programlarınızda karmaşıklığa neden olabilir. Yeni başlayanların Iterative Template veya Command Based robotunu seçmeleri önerilir.
Command-Based Robot
Kesinlikle bir temel sınıf olmasa da, Command-Based robot modeli, daha kolay genişletilebilen daha büyük programları oluşturmak için bir yöntemdir. Robotunuzu tasarlamayı, alt sistemleri oluşturma ve robot ile operatör arayüzü arasındaki etkileşimleri kontrol etmeyi kolaylaştıran bir dizi sınıfla desteklenmiştir. Ayrıca, otonom programlar yazmak için basit bir mekanizma sağlar.
Last updated