Avatar billede ingeman Seniormester
23. juni 2005 - 18:56 Der er 1 kommentar og
1 løsning

Hvordan sender jeg et Ctrl K til porten

Var ComFile:THandle;

function OpenCOMPort: Boolean;
var
  DeviceName: array[0..80] of Char;
begin
  { First step is to open the communications device for read/write.
    This is achieved using the Win32 'CreateFile' function.
    If it fails, the function returns false.

  }
  StrPCopy(DeviceName, 'COM1:');

  ComFile := CreateFile(DeviceName,
    GENERIC_READ or GENERIC_WRITE,
    0,
    nil,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    0);

  if ComFile = INVALID_HANDLE_VALUE then
    Result := False
  else
    Result := True;
end;


function SetupCOMPort: Boolean;
const
  RxBufferSize = 256;
  TxBufferSize = 256;
var
  DCB: TDCB;
  Config: string;
  CommTimeouts: TCommTimeouts;
begin
  { We assume that the setup to configure the setup works fine.
    Otherwise the function returns false.

  }

  Result := True;

  if not SetupComm(ComFile, RxBufferSize, TxBufferSize) then
    Result := False;

  if not GetCommState(ComFile, DCB) then
    Result := False;

  // define the baudrate, parity,...

  Config := 'baud=19200 parity=n data=8 stop=1';

  if not BuildCommDCB(@Config[1], DCB) then
    Result := False;

  if not SetCommState(ComFile, DCB) then
    Result := False;

  with CommTimeouts do
  begin
    ReadIntervalTimeout        := 0;
    ReadTotalTimeoutMultiplier  := 0;
    ReadTotalTimeoutConstant    := 1000;
    WriteTotalTimeoutMultiplier := 0;
    WriteTotalTimeoutConstant  := 1000;
  end;

  if not SetCommTimeouts(ComFile, CommTimeouts) then
    Result := False;
end;


{
  The following is an example of using the 'WriteFile' function
  to write data to the serial port.

}


procedure SendText(s: string);
var
  BytesWritten: DWORD;
  Io:Integer;
begin
  {
    Add a word-wrap (#13 + #10) to the string

    An den übergebenen String einen Zeilenumbruch (#13 + #10) hängen
  }
  s :=#11 +S;



  WriteFile(ComFile, s[1], Length(s), BytesWritten, nil);
 
end;


{
  The following is an example of using the 'ReadFile' function to read
  data from the serial port.
 
}



procedure CloseCOMPort;
begin
  // finally close the COM Port!
  CloseHandle(ComFile);
end;


Jeg har følgende kode - den skal åbne porten på samme måde som Hyperterminal gør det - derefter skal der skrives til porten - i hyterterminal kræver det at man først skriver Ctrl K - for der efter at skrive det man vil sende til porten.
Jeg har ikke kunnet få det til at virke i Delphi - men det virker ok i Hyperterminal - hvad er der galt ?
Avatar billede kroning Nybegynder
24. juni 2005 - 20:29 #1
Prøv med en:
SendText(#11);
Avatar billede ingeman Seniormester
03. juli 2005 - 16:30 #2
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester