İstemci tarafı bir program oluşturmak

If all you need to do is have your robot program communicate with GRIP or a dashboard running on the Driver Station laptop, then the previous examples of writing robot programs are sufficient. But if you would like to write some custom client code that would run on the drivers station or on a coprocessor then you need to know how to build NetworkTables programs for those (non-roboRIO) platforms.

Temel bir istemci programı aşağıdaki örneğe benzer.

package networktablesdesktopclient;

import edu.wpi.first.networktables.NetworkTable;
import edu.wpi.first.networktables.NetworkTableEntry;
import edu.wpi.first.networktables.NetworkTableInstance;

public class NetworkTablesDesktopClient {
  public static void main(String[] args) {
    new NetworkTablesDesktopClient().run();
  }

  public void run() {
    NetworkTableInstance inst = NetworkTableInstance.getDefault();
    NetworkTable table = inst.getTable("datatable");
    NetworkTableEntry xEntry = table.getEntry("x");
    NetworkTableEntry yEntry = table.getEntry("y");
    inst.startClientTeam(TEAM);  // where TEAM=190, 294, etc, or use inst.startClient("hostname") or similar
    inst.startDSClient();  // recommended if running on DS computer; this gets the robot IP from the DS
    while (true) {
      try {
        Thread.sleep(1000);
      } catch (InterruptedException ex) {
        System.out.println("interrupted");
        return;
      }
      double x = xEntry.getDouble(0.0);
      double y = yEntry.getDouble(0.0);
      System.out.println("X: " + x + " Y: " + y);
    }
  }
}

Bu örnekte bir NetworkTables örneği yaratılır ve “datatable” adlı bir tablodan “x” ve “y” değerlerine başvurmak için oluşturulmuşsa bir NetworkTableEntry.

Then this instance is started as a NetworkTables client with the team number (the roboRIO is always the server). Additionally, if the program is running on the Driver Station computer, by using the startDSClient() method, NetworkTables will get the robot IP address from the Driver Station.

Daha sonra bu örnek program, saniyede bir döngü yapar ve x ve y değerlerini alır ve bunları konsolda yazdırır. Daha gerçekçi bir programda, istemci robotun tüketmesi için değerleri işliyor veya üretiyor olabilir.

Programı oluşturmak

Programı oluştururken ve çalıştırırken, istemci tarafı programınıza dahil etmek için bazı ek kitaplıklara ihtiyacınız olacaktır. Bunlar:

https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/ntcore/ntcore-java/ (ntcore Java files)

https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/ntcore/ntcore-jni/ (tüm masaüstü platformları için ntcore yerel kitaplıklar)

https://frcmaven.wpi.edu/artifactory/release/edu/wpi/first/wpiutil/wpiutil-java/ (wpiutil Java files)

Not

Desktop platform jar Windows, macOS ve Linux içindir.

Gradle kullanarak inşa etme

Yukarıdaki dependencies, bir build.gradle dosyasındaki dependencies bloğuna eklenebilir. Derleme sırasında ntcore-java ve wpiutil-java kitaplıkları gereklidir ve çalışma zamanında JNI dependencies gereklidir. Uygulama için platformlar arası destek isteniyorsa, desteklenen tüm platformlar için JNI bağımlılıkları build.gradle öğesine eklenmelidir.

İlk olarak, FRC ® Maven deposu, repositories-depolar bloğuna eklenmelidir. Uygulamanızda GradleRIO eklentisini kullanıyorsanız bunun gerekli olmadığını unutmayın.

repositories {
    maven { url "https://frcmaven.wpi.edu/artifactory/release/" }
}

Daha sonra bağımlılıklar dependencies bloğuna eklenebilir. Burada, VERSION aşağıdaki bağımlılıkların en son sürüm numarası ile değiştirilmelidir. Bu genellikle en son WPILib sürümünün sürüm numarasına karşılık gelir.

dependencies {
    // Add ntcore-java
    compile "edu.wpi.first.ntcore:ntcore-java:VERSION"

    // Add wpiutil-java
    compile "edu.wpi.first.wpiutil:wpiutil-java:VERSION"

    // Add ntcore-jni for runtime. We are adding all supported platforms
    // so that our application will work on all supported platforms.
    runtime "edu.wpi.first.ntcore:ntcore-jni:VERSION:windowsx86"
    runtime "edu.wpi.first.ntcore:ntcore-jni:VERSION:windowsx86-64"
    runtime "edu.wpi.first.ntcore:ntcore-jni:VERSION:linuxx86-64"
    runtime "edu.wpi.first.ntcore:ntcore-jni:VERSION:linuxraspbian"
    runtime "edu.wpi.first.ntcore:ntcore-jni:VERSION:osxx86-64"
}