No puedes usar mas de un OnRxChar puesto que solo tienes un punto de entrada al puerto serie. On RxChar revisa caracter a caracter lo que entra al puerto. Si necesitas que tu programa reaccione a un caracter o caracteres especiales deberas de programar una rutina para tratar cada uno de ellos.
Código Delphi
[-]procedure TForm1.ComPortRxChar(Sender: TObject; count:integer);
begin
ComPort.ReadStr(Str, Count);
if Str = 'DELPHI' then
ShowMessage('Bienvenido')
else if Str = 01 then
ShowMessage('OK')
else if Str = 2 then
UnProcedimiento
else if Str = 3 then
OtroProcedimiento
else
LoQueSea;
end;
Ahora bien si necesitas capturar alguna conjunto de caracteres o "paquetes" bien definidos entonces es mejor usar el ComDataPacket el cual te permitira colocar tantos como necesites para un solo puerto.
Código Delphi
[-]
const Terminador = #13
procedure TForm1.Create(Sender: TObject);
begin
ComDataPacket.StopString := Terminador;
end;
procedure TForm1.ComPortDataPacket(str: string; count: integer);
begin
ShowMessage('Cadena Recibida: ' + Str);
end;
Si necesitas recibir el caracter 01 varias veces y bajo diversas circunstancias tal vez la mejor manera de tratarlo seria usando OnRxChar y llamar a un procedimiento que procese acorde a la circunstancia en que lo esperas. Esto es una sugerencia tal vez hay mejor manera; crear un Type por ejemplo llamado Modo y que tenga declarados los diversos modos que tu necesitas por ejemplo:
Código Delphi
[-]
Type Modo = (Leer, Escribir, Borrar);
procedure TForm1.ComPortRxChar(Sender: TObject; count:integer);
begin
ComPort.ReadStr(Str, Count);
if Str = 'DELPHI' then
ShowMessage('Bienvenido')
else if Str = 01 then
if Modo = Leer then
ShowMessage('OK')
else if Modo = Escribir then
ProcedimientoEscribir
else
ProcedimientoBorrar
else if Str = 2 then
UnProcedimiento
else if Str = 3 then
OtroProcedimiento
else
LoQueSea;
end;