Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.46 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FIBDatabase, pFIBDatabase, Vcl.StdCtrls,
  8. SIBEABase, SIBFIBEA, Vcl.ExtCtrls, Vcl.ImgList, CPort,inifiles,
  9. System.ImageList;
  10.  
  11. type
  12. TForm1 = class(TForm)
  13. Database1: TpFIBDatabase;
  14. Event1: TSIBfibEventAlerter;
  15. TrayIcon: TTrayIcon;
  16. Database2: TpFIBDatabase;
  17. Event2: TSIBfibEventAlerter;
  18. ImageList1: TImageList;
  19. Timer1: TTimer;
  20. ComPort: TComPort;
  21. Timer2: TTimer;
  22. Button1: TButton;
  23. Button2: TButton;
  24. Label1: TLabel;
  25. procedure FormDestroy(Sender: TObject);
  26. procedure Event1EventAlert(Sender: TObject; EventName: string;
  27. EventCount: Integer);
  28. procedure FormCreate(Sender: TObject);
  29. procedure TrayIconDblClick(Sender: TObject);
  30. procedure Event2EventAlert(Sender: TObject; EventName: string;
  31. EventCount: Integer);
  32. procedure Timer1Timer(Sender: TObject);
  33. procedure TrayIconMouseDown(Sender: TObject; Button: TMouseButton;
  34. Shift: TShiftState; X, Y: Integer);
  35. procedure Timer2Timer(Sender: TObject);
  36. procedure Button1Click(Sender: TObject);
  37. procedure Button2Click(Sender: TObject);
  38. private
  39. { Private declarations }
  40. public
  41. { Public declarations }
  42. end;
  43.  
  44. var
  45. Form1: TForm1;
  46. ComPort: TComPort;
  47. // Event: TEvent;
  48. pause1,pause2,kol1,kol2,run:integer;
  49. ip1,ip2:string;
  50.  
  51. implementation
  52.  
  53. {$R *.dfm}
  54.  
  55. procedure beep_();
  56. begin
  57. Winapi.Windows.Beep(1000, 500);
  58. end;
  59.  
  60.  
  61. procedure _Delay(dwMilliseconds: Longint);
  62. var
  63. iStart, iStop: DWORD;
  64. begin
  65. iStart := GetTickCount;
  66. repeat
  67. iStop := GetTickCount;
  68. Application.ProcessMessages;
  69. until (iStop - iStart) >= DWORD(dwMilliseconds);
  70. end;
  71.  
  72.  
  73. procedure Open_ini_file();
  74. var ini : TIniFile;
  75. begin
  76. //ini := TInifile.Create(ExtractFileDir(ParamStr(0))+'setup.ini');
  77. Ini:=Tinifile.Create(extractfilepath(paramstr(0))+'setup.ini');
  78. ShowMessage ('qwe');
  79. //Form1.Label1.Caption:='asdsad';
  80. form1.ComPort.Port:=ini.ReadString('Form1', 'Port', 'COM4');
  81. pause1:=ini.ReadInteger('Form1', 'Pause1', 50);
  82. pause2:=ini.ReadInteger('Form1', 'Pause2', 1000);
  83. kol1:=ini.ReadInteger('Form1', 'kol1', 15);
  84. kol2:=ini.ReadInteger('Form1', 'kol2', 3);
  85. ip1:=ini.ReadString('Form1', 'ip1', '10.2.2.1:c:dbbd.bd');
  86. ip2:=ini.ReadString('Form1', 'ip2', '10.2.2.2:c:dbbd.bd');
  87. ini.Free;
  88. end;
  89.  
  90.  
  91. procedure add_log(txt:string); // Добавляем данные в ЛОГ
  92. var f:TStrings;
  93. File_:TextFile;
  94. begin
  95.  
  96. if not FileExists('log.txt') then
  97. begin
  98. AssignFile(File_,'log.txt');
  99. Rewrite(File_);
  100. CloseFile(File_);
  101. end;
  102.  
  103. f:=TStringList.Create();
  104. f.LoadFromFile('log.txt');
  105. f.Insert(0,DateTimeToStr(Now)+' '+txt);
  106. f.SaveToFile('log.txt');
  107. f.Free;
  108. end;
  109.  
  110.  
  111. procedure TForm1.FormCreate(Sender: TObject);
  112. begin
  113. run:=0;
  114. Open_ini_file();
  115.  
  116. //------------------------------------------ DB1
  117. if DataBase1.Connected then DataBase1.Connected := False;
  118. with DataBase1.ConnectParams do
  119. begin
  120. UserName := 'sys';
  121. Password := 'pass';
  122. end;
  123. DataBase1.DBName := ip1;
  124. DataBase1.Connected := True;
  125.  
  126.  
  127. //------------------------------------------ DB2
  128. if DataBase2.Connected then DataBase2.Connected := False;
  129. with DataBase2.ConnectParams do
  130. begin
  131. UserName := 'sys';
  132. Password := 'pass';
  133. end;
  134. DataBase2.DBName := ip2;
  135. DataBase2.Connected := True;
  136. end;
  137.  
  138. procedure TForm1.FormDestroy(Sender: TObject);
  139. var ini : TIniFile;
  140. begin
  141. ini := TInifile.Create(ExtractFileDir(ParamStr(0))+'setup.ini');
  142. ini.WriteString('Form1', 'Port', form1.ComPort.Port);
  143. ini.WriteInteger('Form1', 'Pause1', pause1);
  144. ini.WriteInteger('Form1', 'Pause2', pause2);
  145. ini.WriteInteger('Form1', 'kol1', kol1);
  146. ini.WriteInteger('Form1', 'kol2', kol2);
  147. ini.Free;
  148. if form1.comport.Connected then form1.comport.Connected:=false;
  149. if DataBase1.Connected then DataBase1.Connected := False;
  150. if DataBase2.Connected then DataBase2.Connected := False;
  151. end;
  152.  
  153. procedure TForm1.Timer1Timer(Sender: TObject);
  154. begin
  155. timer1.Enabled:=false;
  156. trayicon.Animate:=false;
  157. end;
  158.  
  159. procedure mig_time(txt,t:string;d:integer);
  160. var i:integer;
  161. j: Integer;
  162. begin
  163. if run=0 then
  164. begin
  165. run:=1;
  166. if form1.comport.Connected then form1.comport.Connected:=false;
  167. if not form1.comport.Connected then
  168. begin
  169. form1.comport.Connected:=true;
  170. for i := 1 to 4 do
  171. begin
  172. form1.ComPort.WriteStr('0');
  173. _Delay(1000);
  174. end;
  175. for i := 1 to 100 do
  176. begin
  177. form1.ComPort.WriteStr('0');
  178. _Delay(10);
  179. end;
  180. form1.comport.Connected:=false;
  181. end;
  182. run:=0;
  183. add_log(txt+' '+t+' '+inttostr(d));
  184. end;
  185. end;
  186.  
  187. procedure TForm1.Timer2Timer(Sender: TObject);
  188. var x:integer;
  189. t:string;
  190. begin
  191. timer2.Enabled:=false;
  192.  
  193. t:=TimeToStr(time);
  194. x:=DayOfWeek(Date);
  195.  
  196. if t='16:59:45' then
  197. if (x=2) or (x=3) or (x=4) or (x=5) then mig_time('конец рабочего дня',t,x);
  198. if t='15:44:45' then
  199. if (x=6) then mig_time('конец рабочего дня',t,x);
  200. if t='11:59:45' then
  201. if (x=2) or (x=3) or (x=4) or (x=5) or (x=6) then mig_time('обед',t,x);
  202. // Перекуры
  203. if t='8:49:45' then
  204. if (x=2) or (x=3) or (x=4) or (x=5) or (x=6) then mig_time('регламентированный перерыв',t,x);
  205. if t='9:49:45' then
  206. if (x=2) or (x=3) or (x=4) or (x=5) or (x=6) then mig_time('регламентированный перерыв',t,x);
  207. if t='10:59:45' then
  208. if (x=2) or (x=3) or (x=4) or (x=5) or (x=6) then mig_time('регламентированный перерыв',t,x);
  209. if t='13:59:45' then
  210. if (x=2) or (x=3) or (x=4) or (x=5) or (x=6) then mig_time('регламентированный перерыв',t,x);
  211. if t='14:59:45' then
  212. if (x=2) or (x=3) or (x=4) or (x=5) or (x=6) then mig_time('регламентированный перерыв',t,x);
  213. if t='15:59:45' then
  214. if (x=2) or (x=3) or (x=4) or (x=5) then mig_time('регламентированный перерыв',t,x);
  215. timer2.Enabled:=true;
  216. end;
  217.  
  218. procedure TForm1.TrayIconDblClick(Sender: TObject);
  219. begin
  220. if DataBase1.Connected then DataBase1.Connected := False;
  221. if DataBase2.Connected then DataBase2.Connected := False;
  222. if form1.comport.Connected then form1.comport.Connected:=false;
  223. form1.Close;
  224. end;
  225.  
  226. procedure mig();
  227. var i:integer;
  228. j: Integer;
  229. begin
  230. if run=0 then
  231. begin
  232. run:=1;
  233. if form1.comport.Connected then form1.comport.Connected:=false;
  234. if not form1.comport.Connected then
  235. begin
  236. form1.comport.Connected:=true;
  237. for j := 1 to kol2 do
  238. begin
  239. for i := 1 to kol1 do
  240. begin
  241. form1.ComPort.WriteStr('0');
  242. _Delay(pause1);
  243. end;
  244. _Delay(pause2);
  245. end;
  246. form1.comport.Connected:=false;
  247. end;
  248. run:=0;
  249. end;
  250. end;
  251.  
  252. procedure TForm1.TrayIconMouseDown(Sender: TObject; Button: TMouseButton;
  253. Shift: TShiftState; X, Y: Integer);
  254. begin
  255. case Button of
  256. MbLeft:
  257. begin
  258. end;
  259. MbRight:
  260. begin
  261. mig();
  262. end;
  263. MbMiddle:
  264. begin
  265. if DataBase1.Connected then DataBase1.Connected := False;
  266. if DataBase2.Connected then DataBase2.Connected := False;
  267. if form1.comport.Connected then form1.comport.Connected:=false;
  268. form1.Close;
  269. end;
  270. end;
  271. end;
  272.  
  273. procedure TForm1.Button1Click(Sender: TObject);
  274. begin
  275. mig_time('тестирование',TimeToStr(time),DayOfWeek(Date));
  276. end;
  277.  
  278. procedure TForm1.Button2Click(Sender: TObject);
  279. begin
  280. caption:=TimeToStr(time)+' '+inttostr(DayOfWeek(Date));
  281. end;
  282.  
  283. procedure TForm1.Event1EventAlert(Sender: TObject; EventName: string; EventCount: Integer);
  284. begin
  285. timer1.Enabled:=true;
  286. trayicon.Animate:=true;
  287. trayicon.BalloonTitle:='Северная дверь ['+DateTimeToStr(Now)+']';
  288. trayicon.BalloonFlags:=bfWarning;
  289. if EventName='IIP' then begin trayicon.BalloonHint:='Иванов Иван Петрович'; mig(); trayicon.ShowBalloonHint; add_log('Ильин Валерий Петрович [C]'); end;
  290. end;
  291.  
  292. procedure TForm1.Event2EventAlert(Sender: TObject; EventName: string;
  293. EventCount: Integer);
  294. begin
  295. timer1.Enabled:=true;
  296. trayicon.Animate:=true;
  297. trayicon.BalloonTitle:='Южная дверь ['+DateTimeToStr(Now)+']';
  298. trayicon.BalloonFlags:=bfWarning;
  299. if EventName='IIP' then begin trayicon.BalloonHint:='Иванов Иван Петрович'; mig(); trayicon.ShowBalloonHint; add_log('Ильин Валерий Петрович [Ю]'); end;
  300. end;
  301.  
  302.  
  303. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement