Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
scadapy committed May 30, 2018
1 parent 9cb8aed commit 8dfee7c
Show file tree
Hide file tree
Showing 14 changed files with 6,049 additions and 0 deletions.
170 changes: 170 additions & 0 deletions cmdprocedure.pas
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
unit cmdprocedure;

{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
ComCtrls, StdCtrls, Menus, ExtCtrls, Buttons, Interfaces,
process, LCLProc,XMLRead ,dom;

procedure RunCmd(comEx: string);
procedure StartCommand(pyfile: string);
procedure StartMonitor();
procedure StartHtmlClient();
procedure SaveStartStopSh();
procedure StartSh();
procedure StopSh();

implementation
uses scadapy;


procedure StopSh();
begin
{$IFDEF Windows}
// RunCmd(scadapy.PathToPythonWindows+' '+scadapy.ProjectPath+''+pyfile+'"');
{$ENDIF Windows}
{$IFDEF Unix}
RunCmd(scadapy.PathToTerminalLinux + ' "'+scadapy.PathToPythonLinux+' '+scadapy.ProjectPath+'stop.sh"');
{$ENDIF Unix}


end;


procedure StartSh();
begin
{$IFDEF Windows}
// RunCmd(scadapy.PathToPythonWindows+' '+scadapy.ProjectPath+''+pyfile+'"');
{$ENDIF Windows}
{$IFDEF Unix}
RunCmd(scadapy.PathToTerminalLinux + ' "'+scadapy.PathToPythonLinux+' '+scadapy.ProjectPath+'start.sh"');
{$ENDIF Unix}


end;

procedure SaveStartStopSh();
begin
{$IFDEF Windows}
//RunCmdCommand(PathToPythonWindows+' '+PathToProject+'udpmonitor.py"');
{$ENDIF Windows}
{$IFDEF Unix}
scadapy.MainFrame.MemoSave.Clear;
scadapy.MainFrame.MemoSave.Lines.Add('#!/bin/sh');
scadapy.MainFrame.MemoSave.Lines.Add('echo ''Start python scripts''');
scadapy.MainFrame.MemoSave.Lines.Add('nohup python3 '+scadapy.ProjectPath+'modbus.py 1>/dev/null 2>/dev/null &');
scadapy.MainFrame.MemoSave.Lines.Add('echo $! > '+scadapy.ProjectPath+'modbus.pid');
scadapy.MainFrame.MemoSave.Lines.Add('nohup python3 '+scadapy.ProjectPath+'mclient.py 1>/dev/null 2>/dev/null &');
scadapy.MainFrame.MemoSave.Lines.Add('echo $! > '+scadapy.ProjectPath+'mclient.pid');
scadapy.MainFrame.MemoSave.Lines.Add('nohup python3 '+scadapy.ProjectPath+'jserver.py 1>/dev/null 2>/dev/null &');
scadapy.MainFrame.MemoSave.Lines.Add('echo $! > '+scadapy.ProjectPath+'jserver.pid');
scadapy.MainFrame.MemoSave.Lines.Add('nohup python3 '+scadapy.ProjectPath+'dbserver.py 1>/dev/null 2>/dev/null &');
scadapy.MainFrame.MemoSave.Lines.Add('echo $! > '+scadapy.ProjectPath+'dbserver.pid');
scadapy.MainFrame.MemoSave.Lines.SaveToFile(scadapy.ProjectPath+'start.sh' );
scadapy.MainFrame.MemoSave.Clear;
scadapy.MainFrame.MemoSave.Lines.Add('#!/bin/sh');
scadapy.MainFrame.MemoSave.Lines.Add('echo ''Stop python scripts''');
scadapy.MainFrame.MemoSave.Lines.Add('kill -9 `cat '+scadapy.ProjectPath+'modbus.pid`');
scadapy.MainFrame.MemoSave.Lines.Add('kill -9 `cat '+scadapy.ProjectPath+'mclient.pid`');
scadapy.MainFrame.MemoSave.Lines.Add('kill -9 `cat '+scadapy.ProjectPath+'jserver.pid`');
scadapy.MainFrame.MemoSave.Lines.Add('kill -9 `cat '+scadapy.ProjectPath+'dbserver.pid`');
scadapy.MainFrame.MemoSave.Lines.SaveToFile(scadapy.ProjectPath+'stop.sh' );
try
RunCmdCommand('chmod 777 '+scadapy.ProjectPath+'start.sh');
RunCmdCommand('chmod 777 '+scadapy.ProjectPath+'stop.sh');
except
ShowMessage('Scripts chmod error');
end;
{$ENDIF Unix}
end;

procedure StartHtmlClient();
var
AProcess : TProcess;
begin
try
AProcess := TProcess.Create(nil);
{$IFDEF Windows}
AProcess.Executable := '"'+scadapy.PathToBrowserWindows+'" '+scadapy.ProjectPath+'jclient.html' ;
{$ENDIF Windows}
{$IFDEF Unix}
AProcess.Executable := scadapy.PathToBrowserLinux;
AProcess.Parameters.Add(scadapy.ProjectPath+'jclient.html');
{$ENDIF Unix}
AProcess.Execute;
except
on E: Exception do
ShowMessage('An exception was raised: ' + E.Message);

end;

end;


procedure StartMonitor();
begin
scadapy.MainFrame.MemoSave.Clear;
scadapy.MainFrame.MemoSave.Lines.Add('import socket');
scadapy.MainFrame.MemoSave.Lines.Add('import sys');
scadapy.MainFrame.MemoSave.Lines.Add('import time');
scadapy.MainFrame.MemoSave.Lines.Add('sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)');
scadapy.MainFrame.MemoSave.Lines.Add('server_address = (''localhost'', 64000)');
scadapy.MainFrame.MemoSave.Lines.Add('print(''starting up on {} port {}''.format(*server_address))');
scadapy.MainFrame.MemoSave.Lines.Add('sock.bind(server_address)');
scadapy.MainFrame.MemoSave.Lines.Add('while True:');
scadapy.MainFrame.MemoSave.Lines.Add(' data, address = sock.recvfrom(4096)');
scadapy.MainFrame.MemoSave.Lines.Add(' print(data)');
scadapy.MainFrame.MemoSave.Lines.SaveToFile(scadapy.ProjectPath+ 'udpmonitor.py' );
{$IFDEF Windows}
StartCommand('udpmonitor.py');
{$ENDIF Windows}
{$IFDEF Unix}
//RunCmdCommand(PathToTerminalLinux + ' "'+PathToPythonLinux+' '+PathToProject+'udpmonitor.py'+'"');
StartCommand('udpmonitor.py');
{$ENDIF Unix}
end;

procedure StartCommand(pyfile: string);
begin


{$IFDEF Windows}
RunCmd(scadapy.PathToPythonWindows+' '+scadapy.ProjectPath+''+pyfile+'"');
{$ENDIF Windows}
{$IFDEF Unix}
RunCmd(scadapy.PathToTerminalLinux + ' "'+scadapy.PathToPythonLinux+' '+scadapy.ProjectPath+''+pyfile+'"');
{$ENDIF Unix}
end;

procedure RunCmd(comEx: string);
var
AProcess : TProcess;
begin
try
AProcess := TProcess.Create(nil);
{$IFDEF Windows}
AProcess.Executable := 'cmd.exe' ;
AProcess.Parameters.DelimitedText :='/c "'+comEx;
{$ENDIF Windows}
{$IFDEF Unix}
AProcess.CommandLine :=comEx;
AProcess.Options := AProcess.Options;// + [poWaitOnExit];
{$ENDIF Unix}
AProcess.Execute;
AProcess.Free;
except
ShowMessage('Не возможно выполнить команду');
end;
end;









end.

Loading

0 comments on commit 8dfee7c

Please sign in to comment.