예제 #1
0
bool
Volkslogger::SendCommandWriteBulk(Port &port, OperationEnvironment &env,
                                  Command cmd,
                                  const void *data, size_t size)
{
  if (!SendCommand(port, env, cmd, 0, 0) || !WaitForACK(port, env))
    return false;

  env.Sleep(100);

  return WriteBulk(port, env, data, size) && WaitForACK(port, env);
}
예제 #2
0
int Lidar::GetDistance()
{
	while(Write(0, 0x04))
	{
		Wait(.002);
	}
	uint8_t distanceAddress=0x8f;
	uint16_t distance;
	uint8_t distArr[2];
	Wait(.02);
	bool failure=false;
	while(!failure){
		if(!WriteBulk(&distanceAddress,1))
		{
			Wait(0.002);
			failure=!ReadOnly(2, (uint8_t*)distArr);
			distance = (distArr[0] * 256) + distArr[1];
		}
		Wait(.002);
	}
	return((int) distance);
}