Control I/O¶
from jacobi import Planner
from jacobi.drivers import YaskawaDriver
from jacobi.robots import YaskawaHC10
if __name__ == '__main__':
robot = YaskawaHC10()
planner = Planner(robot, 0.025)
driver = YaskawaDriver(planner)
driver.create_io_alias('sensor', address=10)
driver.create_io_alias('gripper', address=1003)
# Read the value of the digital input
value = driver.get_digital_input('sensor')
if value is None:
print("Could not read from address 'sensor'.")
exit()
print(f"Value at digital input 'sensor' is '{value}'.")
# Set an output for a group of 8 bits
success = driver.set_group_output('gripper', 1)
if not success:
print("Could not write to address 'gripper'.")
exit()
# Read value again
value = driver.get_digital_input('sensor')
print(f"Value at digital input 'sensor' is now '{value}'.")
#include <iostream>
#include <jacobi/planner.hpp>
#include <jacobi/drivers/yaskawa.hpp>
#include <jacobi/robots/yaskawa_hc10.hpp>
using namespace jacobi;
using namespace jacobi::drivers;
using namespace jacobi::robots;
int main() {
auto robot = std::make_shared<YaskawaHC10>();
auto planner = std::make_shared<Planner>(robot, 0.025);
auto driver = std::make_shared<YaskawaDriver>(planner);
driver->create_io_alias("sensor", 10);
driver->create_io_alias("gripper", 1003);
// Read the value of the digital input
const auto value = driver->get_digital_input("sensor");
if (!value) {
std::cout << "Could not read from address 'sensor'." << std::endl;
std::exit(1);
}
std::cout << "Value of digital input 'sensor' is '" << value.value() << "'." << std::endl;
// Set an output for a group of 8 bits
const bool success = driver->set_group_output("gripper", 1);
if (!success) {
std::cout << "Could not write to address 'gripper'." << std::endl;
std::exit(1);
}
}