sobre a gaveta:
O 3º bit do 5º byte do comando 34 tem vai ser 0 para fechada e 1 para aberta.
O TestBit testa o "n" bit do byte e retorna true para 1(ligado) e false para 0(desligado).
O comando parece estar correto, só não tenho certeza se no testbit tem que ser passado no segundo parametro o valor 2 ou 3.
Eu sei que é o terceiro bit, a contagem começa do zero, então parece estar correto.
function TACBrECFSwedaSTX.GetGavetaAberta: Boolean;
Var RetCmd : AnsiString ;
begin
Result := False ;
RetCmd := EnviaComando( '34' ) ;
Sinalizadores := copy(RetCmd,12,5) ;
if (copy(RetCmd,3,2) <> '34') or (Length(RetCmd) < 18) then
Result := TestBit( Ord(RetCmd[12]), 2 ) ;
end;