Главная страница | назад





Article #16199: Changing com port config via Win95 CommConfig Dialog

 Question and Answer Database

FAQ1199D.txt   Changing com port config via Win95 CommConfig Dialog
Category   :Miscellaneous
Platform    :All
Product    :All 32 bit  

Question:
When I use the Windows 95 CommConfig Dialog box, the settings
entered do not seem to change the com port's configuration.
How can I set the comm ports configuration using the
CommConfig Dialog box?


Answer:
The following example demonstrates setting the comm port under
Windows95 using the CommConfig Dialog box. Note: Any changes 
made to the dialog are not updated in the system. You are 
responsible for updating the com ports configuration.

Example:

procedure TForm1.Button1Click(Sender: TObject);
var
  CommPort : string;
  hCommFile : THandle;
  Buffer : PCommConfig;
  size : DWORD;
begin
  CommPort := 'COM1';
 {Open the comm port}
  hCommFile := CreateFile(PChar(CommPort),
                          GENERIC_WRITE,
                          0,
                          nil,
                          OPEN_EXISTING,
                          FILE_ATTRIBUTE_NORMAL,
                          0);
  if hCommFile=INVALID_HANDLE_VALUE then
  begin
    ShowMessage('Unable to open '+ CommPort);
    exit;
  end;
 {Get a temporary buffer}
  GetMem(Buffer, sizeof(TCommConfig));
 {Get the size of the CommConfig structure}
 {as it may be different than documented}
  size := 0;
  GetCommConfig(hCommFile, Buffer^, size);
 {Free the temporary buffer}
  FreeMem(Buffer, sizeof(TCommConfig));
 {Get the CommConfig structure}
  GetMem(Buffer, size);
  GetCommConfig(hCommFile, Buffer^, size);

 {Pop up the comm port config dialog}
  if CommConfigDialog(PChar(CommPort),
                      Form1.Handle,
                      Buffer^) = true then begin
   {Set the com port to the values entered}
   {in the dialog if the user pressed ok}
    SetCommConfig(hCommFile, Buffer^, size);
  end;

 {Free the buffer}
  FreeMem(Buffer, size);

 {Close the comm port}
  CloseHandle(hCommFile);
end;

7/16/98 4:31:28 PM
 

Last Modified: 01-SEP-99