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