TBLUEPORT
COMPONENT
El TBluePort es un componente que
permite la conexión de manera sencilla desde Android a dispositivos Bluetooth
en configuración de puerto serial.
Encapsula el API de Android utilizando la librería
Androidapi.JNI.BluetoothAdapter publicada por
RedTitan Technology 2013, http://www.delphigear.cn/0/10162/go.aspx
Propiedades
IsEnabled: Campo Booleano que permite determinar si el dispositivo Bluetooth
está activo en el sistema, es una propiedad de solo lectura.
Ej. If BluePort1.IsEnabled then…
PortList: Campo de tipo TStringList, retorna una lista de los
dispositivos Bluetooth disponibles, en formato nombre=MAC, cada elemento de esta lista se puede utilizar
como información para asignar el puerto.
Ej.
procedure
TForm4.FormCreate(Sender: TObject);
begin
If BluePort1.IsEnabled then
ListBox1.Items.text :=
BluePort1.PortList.text;
end;
Active: Permite conectar o desconectar del puerto previamente
seleccionado.
Ej. BluePort1.Active := True;
Ej. If BluePort1.Active then…
Port: Especifica el nombre del puerto y la dirección MAC
correspondiente al dispositivo bluetooth, el campo es de tipo texto y debe
tener la forma nombrepuerto=MACAddress,
en su defecto puede contener solamente la MAC.
Ej. BluePort1.Port := ‘BOLUTEC=00:15:FF:F3:PE:38’
SleepTime: Corresponde al tiempo en milisegundos que espera la
multitarea de lectura antes de revisar el Puerto nuevamente.
Eventos:
OnAfterClose: Este evento responde a la acción de desconectar el
puerto asignando False a la propiedad Active,
no reconoce la desconexión del puerto por perdida de la conectividad con
el dispositivo bluetooth asociado.
Ej.
procedure
TForm4.BluePort1AfterClose(Sender: TObject);
begin
Toast('se ha
desconectado de ' + BluePort1.Port + ')');
BtnConnect.Enabled := Not
BluePort1.Active;
BtnDisconnect.Enabled := BluePort1.Active;
end;
OnAferOpen: El evento se dispara al realizar la conexión y
únicamente si la conexión fue exitosa, en este caso la propiedad Active ya se
encuentra en True.
Ej.
procedure
TForm4.BluePort1AfterOpen(Sender: TObject);
begin
Toast('se ha conectado a ' + BluePort1.Port
+ ')');
BtnConnect.Enabled := Not BluePort1.Active;
BtnDisconnect.Enabled := BluePort1.Active;
end;
OnBeforeClose: Evento que responde a la orden de
desconectarse, cambiando la propiedad
Active a False.
Ej.
procedure
TForm4.BluePort1BeforeClose(Sender: TObject);
begin
Toast('se
está desconectado de ' + BluePort1.Port + ')');
end;
OnBeforeOpen:
Evento que responde a la orden de conectarse, cambiando la propiedad Active a
True.
Ej.
procedure
TForm4.BluePort1BeforeOpen(Sender: TObject);
begin
Toast('Conectando a ' + BluePort1.Port +
')');
end;
OnDataRx: Existe una
multitarea que revisa el stream de entrada del puerto en Android, en caso de
encontrarse información, la almacena en un Array of Bytes de tipo TBytes o TArray<System.Byte>.
Ej.
procedure
TForm4.BluePort1DataRx(Data: TArray<System.Byte>; len: Integer);
Var
S: String;
I: Integer;
Begin
//Convierte
el array en un string
S := '';
For I := 0 to len - 1 do
begin
S := S + Chr(Data[I]);
end;
//Actualiza
los componentes visuales.
tThread.Queue(Nil,
procedure
begin
Try
Memo1.Lines.BeginUpdate;
Memo1.Lines.text :=
Memo1.Lines.text + S;
Finally
Memo1.Lines.EndUpdate
End;
end);
end;
OnDataTx: El evento
se ejecuta justo antes de enviar la información al puerto.
Ej.
procedure
TForm4.BluePort1DataTx(Data: TArray<System.Byte>; len: Integer);
Var
S: String;
I: Integer;
begin
S := '';
For I := 0 to len - 1 do
begin
S := S + Chr(Data[I]);
end;
tThread.Queue(Nil,
procedure
begin
Try
Memo1.Lines.BeginUpdate;
Memo1.Lines.text :=
Memo1.Lines.text + S;
Finally
Memo1.Lines.EndUpdate
End;
end);
end;
Métodos
Procedure
Write(Value: String): Permite enviar al Puerto un string, el componente convierte cada carácter en un
byte, asignándolo a una posición de un byte en el buffer de envío, por lo tanto
no es necesario declarar el string de ningún tipo particular.
Ej. Blueport1.Write(‘Este es el texto a envíar’);
Procedure
Write(Value: Integer): Permite
enviar un entero o byte por el Puerto serial bluetooth.
Ej. BluePort1.Write(65);
Procedure Write(Value: TBytes): Permite
enviar un array de bytes al Puerto.
Ej.
BluePort1.Write(TBytes.Create($A, $45, $FF, $10));
Procedure
Write(Stream: TStream): Permite
enviar el contenido de un stream directamente al puerto
procedure
TForm4.BtnEnviarClick(Sender: TObject);
Var
St : TMemoryStream;
begin
St := TMemoryStream.Create;
St.LoadFromFile(FileName);
St.Position := 0;
BluePort1.Write(St);
end;
Pueden descargar el componente desde
http://www.delphiaccess.com/forum/android/componente-de-puerto-serial-delphi-xe5-en-android/msg84173
Espero sus comentarios y mejoras del componente.
Si realizan proyectos de este tipo, favor enviar videos del uso del Bluetooth o documentos.
Gracias.
No me funciona el componente TBluePort. ¿Alguna sugerencia?
ResponderEliminarHola, podrías ser más específico con la pregunta.
ResponderEliminarte invito a www.delphiaccess.com un foro donde podremos comentar este caso.
Saludos.
Estuve revisando, y es necesario que el puerto con el dispositivo con el que se va a conectar esté abierto, de lo contrario marcaría un error. Caso particular, agregué un puerto seríal al PC conectado al Bluetooth, al intentar conectar marca error ya que aunque el puerto existe, no está abierto, así que abrí una consola y abrí el puerto para recibir texto, en este caso el dispositivo se conectó bien.
ResponderEliminarQuizá ese sea tu caso, de todas maneras, te recomiendo que si tienes más información de lo que estás haciendo, nos la comentes en este blog o en DelphiAccess.
Saludos.
Me parece excelente un componente que comunique de android a una pc por bluetooth, ¿Funciona de android a android?. ¡Saludos¡ desde Hermosillo, Sonora, México (ciudad, estado, país).
ResponderEliminarSaludos trate de bajar TBLUEPORT pero al parecer el Link no esta disponible, Si tienes un nuevo link por favor ponerlo aqui
ResponderEliminar