grpc_client/clients/hlc_client.py

67 lines
1.7 KiB
Python
Raw Normal View History

2026-06-17 09:36:26 +08:00
from google.protobuf.timestamp_pb2 import Timestamp
from clients._path_setup import ensure_paths
ensure_paths()
from clients.base_client import RobotClientBase
from cmvr.api import common_pb2
from cmvr.api import hlc_command_pb2 as pb
from cmvr.api import hlc_service_pb2_grpc as rpc
class HlcClient(RobotClientBase):
"""Client for calling cmvr.api.HlcService."""
def _init_stubs(self, channel):
self.stub = rpc.HlcServiceStub(channel)
@staticmethod
def _make_header(device_id: str):
header = common_pb2.CommandHeader.Request()
header.device_id = device_id
timestamp = Timestamp()
timestamp.GetCurrentTime()
header.timestamp.CopyFrom(timestamp)
return header
def touch(
self,
u: int,
v: int,
max_force: float,
device_id="hc01",
timeout=None,
):
request = pb.Touch.Request()
request.header.CopyFrom(self._make_header(device_id))
request.u = u
request.v = v
request.max_force = max_force
rpc_timeout = self.timeout if timeout is None else timeout
response = self.stub.touch(request, timeout=rpc_timeout)
return response
def main():
client = HlcClient()
try:
response = client.touch(
u=12,
v=34,
max_force=10.0,
device_id="hc01",
)
print("touch RPC call completed")
print(f"success: {response.header.success}")
print(f"error_message: {response.header.error_message}")
print(f"timestamp: {response.header.timestamp.seconds}")
return response
finally:
client.close()
if __name__ == "__main__":
main()