Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.02.2011, 12:21
Аватар для Aggression
Aggression Aggression вне форума
Прохожий
 
Регистрация: 29.01.2011
Сообщения: 11
Репутация: 10
По умолчанию COM-порт, модем, Delphi

Всем добрый день. Писала программу, которая обращается к ком-порту с командами ATH0/ATH1, чтобы светодиод, подключенный к модемному разъему, выключался/включался. Цепочка спаяна, проверена на скачанной из интернета программе. Работает. Вывод -- моя программа гг. Подскажите, пожалуйста, что не так, ибо совсем еще новичок.
Код:
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:='Закрыть';
end;   end   else
if button1.Caption='Закрыть' then
begin

Application.MessageBox('Порт закрыт','Клозе',MB_OK);
CloseHandle (port);
button1.Caption:='Открыть';

end;
  end;


procedure TForm1.Button2Click(Sender: TObject);

begin
if  button1.Caption='Открыть'
then Application.MessageBox('Порт закрыт, откройте его!','Еррор',MB_OK) else begin
if  button2.caption='ATH0' then
begin
TRBuf:=PChar(button2.caption); 
nToWrite:=length(TRBuf)+1; 
WriteFile(port,TRBuf^,nToWrite,nWrite,nil); 
 button2.caption:='ATH1';
 end else
 if  button2.caption='ATH1' then
 begin
TRBuf:=PChar(button2.caption); 
nToWrite:=length(TRBuf)+1; 
WriteFile(port,TRBuf^,nToWrite,nWrite,nil); 
button2.caption:='ATH0';
 end;
end;
end;

end.
Ответить с цитированием
  #2  
Старый 06.02.2011, 14:54
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

1. А точно COM3?
2. Код ни фига не оптимальный, при желании его можно сократить в полтора раза.
3. Не нужно использовать глобальные переменные там, где не нужно.
4. Документация по этому делу есть?
[offtop]
5. Ник что-то не ассоциируется с аватором....
[/offtop]
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 06.02.2011, 15:10
Аватар для Aggression
Aggression Aggression вне форума
Прохожий
 
Регистрация: 29.01.2011
Сообщения: 11
Репутация: 10
По умолчанию

1. Да точно, точно.
2. Спасибо за информацию.
3. В курсе, но так удобнее.
4. Какая именно?
5. Аватар изменить можно, а вот ник нет.
Пы.Сы.: ИМХО, у тебя получился полный оффтоп.
Ответить с цитированием
  #4  
Старый 06.02.2011, 20:20
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

4. А её много? Тогда вся, которая по теме
PS. Конечно, это же я
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 07.02.2011, 13:15
Аватар для Aggression
Aggression Aggression вне форума
Прохожий
 
Регистрация: 29.01.2011
Сообщения: 11
Репутация: 10
По умолчанию

Ты книжки имеешь в виду?
Если да, то книжки есть. Но такой специфической информации в них нет. По теме все, а я не флудераст =Р
Ответить с цитированием
  #6  
Старый 12.02.2011, 21:51
Аватар для Aggression
Aggression Aggression вне форума
Прохожий
 
Регистрация: 29.01.2011
Сообщения: 11
Репутация: 10
По умолчанию

Проблема не решена, программа не пашет, хотя и отправляет на порт такие же команды, что и скачанная программа. Кто-нибудь знает, как решить проблему?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025