La forma facil, baja un componente para el manejo del puerto serial si buscas en los hilos encontraras varios.
la forma dificil...
este es un pedazo de codigo para una impresora serial, si cambias los "Writes" por "Reads" y algun detallito no creo que tengas problemas para hacer funcionar el codigo ya que creo que lo que es dificil son las rutinas para el puerto.
Código Delphi
[-]
procedure TPrincipal.HacerTicketVenta;
Var
DescTemp, CantTemp, ImporteTemp, TotalTemp, PagoTemp, CambioTemp:String;
H:HFile;
X:Cardinal;
Str: String;
Buf: Array[1..100] Of char;
DCB: _DCB;
Error, I: Integer;
Begin
SetLastError(0);
Repeat
H := CreateFile(pchar(Puerto),GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
If H = INVALID_HANDLE_VALUE Then
Begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
End;
DCB.DCBlength := Sizeof(DCB);
GetCommState(H,DCB);
DCB.BaudRate := CBR_9600;
DCB.ByteSize := 8;
DCB.Parity := NOPARITY;
DCB.StopBits := ONESTOPBIT;
SetCommState(H,DCB);
Str := #10;
StrpCopy(@Buf,Str);
WriteFile(H,buf,Length(Str),x,nil);
cualquier funcion que tengas duda, la puedes encontrar en el win32 Programmer's Reference que viene en MS SDK Files de tu instalacion de delphi