Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

COM порты в Delphy

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> COM порты в Delphy
Имя
Сообщение << Старые топики   Новые топики >>
COM порты в Delphy - 2005-12-05 19:41:40   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
Народ, объясните, пожалуйста тупому динозавру, как заставить Делфяк общаться через ком-порт с модемом. Три дня уже мучаюсь, но нефига не получается. Я нарыл уже все возможные функции и т.п., а вот собрать это в реально работающий пример ума не хватает. Если не трудно, помогите плз. Заранее благодарен…
Post #: 1
COM порты в Delphy - 2005-12-06 01:13:13   
Bill Killer

Сообщений: 57
Оценки: 0
Присоединился: 2005-04-03 19:10:00
блин , спроси у ГУГЕЛА![sm=mad.gif][sm=mad.gif][sm=mad.gif]
я спросил и тут же получил много подходящего[sm=em121.gif]
например-http://articles.org.ru/docum/comport.php
Post #: 2
COM порты в Delphy - 2005-12-06 20:48:41   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
quote:

—————-<BR>Цитата: Дата:06.12.2005 1:13:13, Автор:Bill Killer ::
блин , спроси у ГУГЕЛА![sm=mad.gif][sm=mad.gif][sm=mad.gif]<BR>
—————-




А ты думаешь, я не спрашивал. Я прочитал штук пять подобных статей, но ни в одной из них нет цельного примера реально работающей программы.

Основывыясь на прочитанном материале я пишу следующее:

unit Unit1;

interface

uses
windоws, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
Thread = class(TThread)
protected
procedure Execute; override;
end;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TоЬjесt);
procedure Button2Click(Sender: TоЬjесt);
private
Th:Thread;
{ Private declarations }
public
{ Public declarations }
end;



var
Form1: TForm1;
hcom:THandle;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TоЬjесt);
begin
hcom:= CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING, 0, 0);
if hcom = INVALID_HANDLE_VALUE then
raise Exception.Create('Error opening port');
if not PurgeComm(hcom, PURGE_TXCLEAR or PURGE_RXCLEAR) then
raise Exception.Create('Error purging port');

th:=Thread.Create(true);
Th.Priority := tpHighest;
Th.Resume;
end;

procedure TForm1.Button2Click(Sender: TоЬjесt);
var wb:Cardinal;
OverLp:TOverlapped;
s,buf:string;
begin
buf:='AT'+#13;
OverLp.hEvent := CreateEvent(nil, True, False, nil);
if OverLp.hEvent = Null then
raise Exception.Create('Error creating write event');

th.Terminate;

if (not WriteFile(hcom, buf, length(buf), wb, @OverLp)) then
raise Exception.Create('Error writing port');

th.Resume;

str(wb,s);
Edit1.Text:=s;
end;

procedure Thread.Execute;
var rb:Cardinal;
OverLp:TOverlapped;
buf,s:string;
begin
FreeOnTerminate := True;

OverLp.hEvent := CreateEvent(nil, True, False, nil);
if OverLp.hEvent = Null then
raise Exception.Create('Error creating write event');

while not Terminated do begin
ReadFile(hcom,buf,1,rb,@OverLp);
if rb <> 0 then begin
Application.MessageЬох('Что прочитали!!!!','',0);
Form1.Edit3.Text:=Form1.Edit3.Text + buf;
str(rb,s);
Form1.Edit2.Text:=s;
end;
end;
end;

end.

Но всё енто не фига не работает :((((((((((((((((
Кто-нить может объяснить, где ошибка или что неправильно????
Post #: 3
COM порты в Delphy - 2005-12-07 08:52:23   
SergeyAKM

Сообщений: 14
Оценки: 0
Присоединился: 2005-12-07 00:20:53
Можно воспользоваться компонентом Comm32.
Оставь мыло, вышлу его и краткий мануал.
Post #: 4
COM порты в Delphy - 2005-12-07 18:41:31   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
quote:

—————-<BR>Цитата: Дата:07.12.2005 8:52:23, Автор:SergeyAKM ::
Оставь мыло, вышлу его и краткий мануал.<BR>
—————-



Ну, если не влом, то кинь на nook@mail2k.ru. Посмотрю, что енто такое, хотя и с api хотелось бы разобраться…
Post #: 5
COM порты в Delphy - 2005-12-09 07:43:00   
De}{is

Сообщений: 137
Оценки: 0
Присоединился: 2005-11-22 11:21:42
Пробовал это компонент, скачал ещё штук пять аналогичных из сети, а результат тот же. Модем не отвечает на команды, хотя программы, вроде бы написаны верно, может я неправильно шлю каманды модему. Кто знает точно, в конце команды дожно стоять #13 или #10?
Post #: 6
Страниц:  [1]
Все форумы >> [Веб-программинг] >> COM порты в Delphy







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.