1use robotiq_rs::*;
2
3#[tokio::main]
4async fn main() -> Result<(), RobotiqError> {
5 let path = "COM17";
7
8 let mut gripper = RobotiqGripper::from_path(path)?;
10
11 gripper.reset().await?;
15 gripper.activate().await?.await_activate().await?;
17 println!("finished activation.");
18 std::thread::sleep(std::time::Duration::from_millis(1000));
19
20 gripper.go_to(0x08, 0x00, 0x00).await?;
24 let obj_detect_status = gripper.await_go_to().await?;
26 println!("Object Detect Status : {:?}", obj_detect_status);
27 std::thread::sleep(std::time::Duration::from_millis(1000));
28
29 let obj_detect_status = gripper.go_to(0xFF, 0xFF, 0xFF).await?.await_go_to().await?;
33 println!("Object Detect Status : {:?}", obj_detect_status);
34 std::thread::sleep(std::time::Duration::from_millis(1000));
35
36 gripper.go_to(0x08, 0x00, 0x00).await?;
40 std::thread::sleep(std::time::Duration::from_millis(100));
41 gripper.automatic_release(false).await?;
42 gripper
44 .reset()
45 .await?
46 .activate()
47 .await?
48 .await_activate()
49 .await?;
50 std::thread::sleep(std::time::Duration::from_millis(1000));
51 gripper.go_to(0x08, 0x00, 0x00).await?;
52 std::thread::sleep(std::time::Duration::from_millis(1000));
53
54 let cmd_null = GripperCommand::new();
60 let cmd_act = GripperCommand::new().act(true);
62 let cmd_goto_1 = GripperCommand::new()
64 .act(true)
65 .gto(true)
66 .pos_req(0x08)
67 .speed(0x00)
68 .force(0x00);
69 let cmd_goto_2 = GripperCommand::new()
70 .act(true)
71 .gto(true)
72 .pos_req(0xFF)
73 .speed(0xFF)
74 .force(0xFF);
75 let cmd_atr = GripperCommand::new().act(true).atr(true).ard(true);
77
78 gripper.write_async(cmd_null).await?;
81 gripper.write_async(cmd_act).await?;
82 while gripper.read_async().await?.sta != ActivationStatus::Completed {
83 std::thread::sleep(std::time::Duration::from_millis(100));
84 }
85 std::thread::sleep(std::time::Duration::from_millis(1000));
86
87 gripper.write_async(cmd_goto_1).await?;
90 while gripper.read_async().await?.obj == ObjDetectStatus::InMotion {
91 std::thread::sleep(std::time::Duration::from_millis(100));
92 }
93 std::thread::sleep(std::time::Duration::from_millis(1000));
94
95 gripper.write_async(cmd_goto_2).await?;
98 std::thread::sleep(std::time::Duration::from_millis(100));
99 gripper.write_async(cmd_atr).await?;
100 while gripper.read_async().await?.fault != GripperFault::AutomaticReleaseCompleted {
101 std::thread::sleep(std::time::Duration::from_millis(100));
102 }
103 std::thread::sleep(std::time::Duration::from_millis(1000));
104
105 gripper
106 .reset()
107 .await?
108 .activate()
109 .await?
110 .await_activate()
111 .await?
112 .go_to(0x00, 0xFF, 0xFF)
113 .await?
114 .await_go_to()
115 .await?;
116
117 Ok(())
118}