![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Всем добрый день. Писала программу, которая обращается к ком-порту с командами 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
|
||||
|
||||
|
1. А точно COM3?
2. Код ни фига не оптимальный, при желании его можно сократить в полтора раза. 3. Не нужно использовать глобальные переменные там, где не нужно. 4. Документация по этому делу есть? [offtop] 5. Ник что-то не ассоциируется с аватором.... [/offtop] |
|
#3
|
||||
|
||||
|
1. Да точно, точно.
2. Спасибо за информацию. 3. В курсе, но так удобнее. 4. Какая именно? 5. Аватар изменить можно, а вот ник нет. Пы.Сы.: ИМХО, у тебя получился полный оффтоп. |
|
#4
|
||||
|
||||
|
4. А её много? Тогда вся, которая по теме
![]() PS. Конечно, это же я ![]() |
|
#5
|
||||
|
||||
|
Ты книжки имеешь в виду?
Если да, то книжки есть. Но такой специфической информации в них нет. По теме все, а я не флудераст =Р |
|
#6
|
||||
|
||||
|
Проблема не решена, программа не пашет, хотя и отправляет на порт такие же команды, что и скачанная программа. Кто-нибудь знает, как решить проблему?
|