procedure SendATCommand(const APort, ACommand: string);
var
   hComm: THandle;
   dcb: TDCB;
   bytesWritten: DWORD;
   cmd: AnsiString;
begin
   // Port öffnen
   hComm := CreateFile(PChar('\\.\' + APort),
   GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
   if hComm = INVALID_HANDLE_VALUE then
   showmessage('COM-Port konnte nicht geöffnet werden');

   FillChar(dcb, SizeOf(dcb), 0);
   dcb.DCBlength := SizeOf(dcb);
   GetCommState(hComm, dcb);
   // Serielle Parameter setzen
   dcb.BaudRate := CBR_9600;
   dcb.ByteSize := 8;
   dcb.Parity := NOPARITY;
   dcb.StopBits := ONESTOPBIT;
   SetCommState(hComm, dcb);

   cmd := AnsiString(ACommand + #13#10);
   WriteFile(hComm, cmd[1], Length(cmd), bytesWritten, nil);

   CloseHandle(hComm); // Port wieder schließen
end;