Показать сообщение отдельно
  #7  
Старый 13.02.2011, 18:42
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

1 я бы сделал так (вставил бы выход из процедуры - помечено красным):
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Port:THandle;
  TRBuf:PChar; 
nToWrite:DWord;
nWrite:DWord; 


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
if  button1.Caption='Открыть' then
begin
  Port:=CreateFile(
    '\\.\COM3', 
    GENERIC_READ or GENERIC_WRITE,
    0,                            
    nil,                          
    OPEN_EXISTING,                
    FILE_ATTRIBUTE_NORMAL, 
    0 
  );
 if (port=INVALID_HANDLE_VALUE)
  then Application.MessageBox('Не хочет он','Еррор',MB_OK) 
  else begin
  Application.MessageBox('Порт открыт','Опен',MB_OK); 
  button1.Caption:='Закрыть';
exit;
end;   end   else
...
2 товарищ DJ PhoeniX правильно сомневается в номере порта, конечно если ваш момед не USB (в этом случае номер порта действительно не 1 или 2 - из-за установки виртуального COM'a)
3 чтобы быть уверенным в отправке/получении информации стоит посмотреть утилитой Руссиновича PORTMON
4 а где, собственно, настройки порта? может вашему момеду нужны нестандартные (дефолтовые) настройки порта (четность, стоповый бит, количество битов, скорость)
5 можете марку момеда назвать для большей определенности, ну или как-то иначе его идентифицировать - это по крайней мере уберет неясности в точности номера COM'a, да и предварительные настройки порта неплохо бы сделать вот вам в помощь, как раз синхронный режим работы с портом.
Ответить с цитированием