
23.02.2009, 19:47
|
Прохожий
|
|
Регистрация: 23.02.2009
Сообщения: 1
Репутация: 10
|
|
работа в delphi с СОМ-портом
Здравствуйте,пишу программу на пипломник, суть программы: через COM-порт отправляет и принимает определенные команды (программа для работы с оборудованием мобильных операторов). Проблема: в процедуре formcreate когда доходит до подключения к порту и его настройки,процедура не выполняется,без ошибок и без вылетов все компилируется но к порту не подключается и не настраивает. КАК узнал: перед подключением и перед настройкой поставил вывод в label цифры,показало что перед подключением порта все встает и процедура дальше не выполняется. Подскажите есть ли какое нибуть решение,либо кто нибуть уже писал подобное,подскажите пожалуйста,вся работа встает из за этого.
Код:
код процедуры:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, ComCtrls, Menus, ExtCtrls, Buttons, Unit2;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label4: TLabel;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Label3: TLabel;
Label5: TLabel;
Label7: TLabel;
UpDown1: TUpDown;
Edit1: TEdit;
UpDown2: TUpDown;
Edit2: TEdit;
Label8: TLabel;
Label6: TLabel;
MainMenu1: TMainMenu;
menu1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
FAQCU1: TMenuItem;
CU1: TMenuItem;
SaveDialog1: TSaveDialog;
Panel2: TPanel;
Memo1: TMemo;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
RadioButton9: TRadioButton;
RadioButton10: TRadioButton;
RadioButton11: TRadioButton;
RadioButton12: TRadioButton;
Panel3: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
StatusBar1: TStatusBar;
Panel1: TPanel;
Timer1: TTimer;
PWRout: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure CU1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure clear1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
{ procedure Memo1Change(Sender: TObject);}
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
hCom,Errors,Bytes:Cardinal;
DCB:TDCB;
TheStruct:TCOMSTAT;
buffer:string;
s,p,f,w,e:string;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('БС № '+(
InputBox('Начало работы','Введите БС №:','')+
' '+DateToStr(Now)+' '+TimeToStr(Now)));
{:: открытие порта ::}
hCom:=CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_N ORMAL,0);
if hCom=INVALID_HANDLE_VALUE then begin
//не удалось открыть
exit;
end;
SetupComm(hCom,1600,1600);
GetCommState(hCom,DCB);
//настроить нужным образом
Dcb.BaudRate := CBR_9600;
Dcb.Parity := NOPARITY;
Dcb.ByteSize := 8;
Dcb.StopBits := ONESTOPBIT;
if not SetCommState(hCom,DCB) then ShowMessage('ошибка')
else form1.StatusBar1.Panels.Items[0].Text:='соединение установлено';
Form1.ActiveControl:=Button2;
end;
Последний раз редактировалось Admin, 24.02.2009 в 10:25.
|