![]()
I removed the "getLister" method as I haven't seen any protocol or use-case where this actually made sense.
Here comes some example code to demonstrate how a Programm using this API could look like.
public static void main(String[] args) throws Exception {
PlcDriverManager manager = new PlcDriverManager();
try (PlcConnection conn = manager.getConnection("s7://192.168.167.211/0/0")) {
Optional<PlcReader> optionalReader = conn.getReader();
if (!optionalReader.isPresent()) {
return;
}
PlcReader Reader = optionalReader.get();
// Example using prepareField and prepareNamedField ...
PlcReadRequest request = new PlcReadRequest(
conn.prepareNamedField("parameterX", "%DB8.DBX3:INT"),
conn.prepareNamedField("parameterY", "%DB9.DBW4:DOUBLE"),
new PlcNamedField("others", conn.prepareField("%DB2.DBW2:BYTE[10]")));
CompletableFuture<PlcReadResponse> future = reader.read(request);
PlcReadResponse response = future.get();
// Access an item by it's name.
System.out.println("Parameter X: " + response.getInteger("parameterX"));
// Iterate over all items
for(String fieldName: response.getFieldNames()) {
switch(fieldName) {
case "parameterY":
System.out.println("Parameter y: " + response.getDouble(fieldName));
break;
case "others":
for(int i = 0; i < response.getNumValues(fieldName); i++) {
// Intentionally using short instead of byte
// In this case it will return Byte[i] but convert that into a Short.
System.out.println(" - " + response.getShort(fieldName, i));
}
break;
}
}
}
} |