ich habe etwas weiter gebastelt. Das Programm sieht jetzt so aus:
Code: Alles auswählen
unit u_save_form;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, u_intpolwn_form, Process;
const
C_FNAME = '/home/pi/Bachelorarbeit/Lazarus/LTRS/temp.txt';
var
rec_intervall: integer;
tfOut: Textfile;
dateiname, dat_neu, dat_alt, dat_rename: string;
mount_process, unmount_process, copy_process, rename_process: TProcess;
type
{ TForm4 }
TForm4 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit1EditingDone(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.lfm}
{ TForm4 }
procedure TForm4.Timer1Timer(Sender: TObject);
begin
AssignFile(tfOut, C_FNAME);
append(tfout);
writeLN(tfOut, DateToStr(Now),char(9), TimeToStr(Now), char(9), FloatToStrF(ip1,ffFixed,15,3), char(9), FloatToStrF(ip4,ffFixed,15,3), char(9), FloatToStrF(ip5,ffFixed,15,3), char(9), FloatToStrF(ip6,ffFixed,15,3), char(9), FloatToStrF(ip7,ffFixed,15,3), char(9), FloatToStrF(ip2,ffFixed,15,3), char(9), FloatToStrF(ip3,ffFixed,15,3));
CloseFile(tfOut);
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
dat_alt := '/home/pi/Bachelorarbeit/Lazarus/LTRS/temp.txt';
dat_neu := '/media/usb/temp.txt';
dat_rename := 'media/usb/'+DateToStr(Now)+'_'+TimeToStr(Now)+'.txt';
mount_process := TProcess.Create(nil);
unmount_process:= TProcess.Create(nil);
copy_process:= TProcess.Create(nil);
rename_process:= TProcess.Create(nil);
mount_process.CommandLine := 'sudo mount /dev/sda1 media/usb'; //Kommandozeile
unmount_process.CommandLine := 'sudo umount /media/usb';
copy_process.CommandLine := 'sudo cp /home/pi/Bachelorarbeit/Lazarus/LTRS/temp.txt /media/usb/temp.txt';
rename_process.CommandLine := 'sudo mv /media/usbstick/temp.txt media/usb/'+DateToStr(Now)+'_'+TimeToStr(Now)+'.txt';
//mount_process.Options := mount_process + [poWaitOnExit];
//unmount_process.Options := unmount_process + [poWaitOnExit];
//CopyFile(dat_alt, dat_neu);
//RenameFile(dat_neu, dat_rename);
mount_process.Execute;
copy_process.Execute;
rename_process.Execute;
unmount_process.Execute;
mount_process.Free;
copy_process.Free;
rename_process.Free;
unmount_process.Free;
AssignFile(tfOut, C_FNAME);
rewrite(tfOut);
writeLN(tfOut,'DD-MM-YY', char(9), 'hh-mm-ss', char(9), 'D', char(9), 'T1', char(9), 'T2', char(9), 'P', char(9), 'M', char(9), 'Lüfter', char(9), 'Heizung');
CloseFile(tfOut);
Form4.Close;
end;
procedure TForm4.Edit1Change(Sender: TObject);
begin
dateiname := Edit1.Text;
end;
procedure TForm4.Edit1EditingDone(Sender: TObject);
begin
dateiname := Edit1.Text;
dat_alt := '/home/pi/Bachelorarbeit/Lazarus/LTRS/temp.txt';
dat_neu := '/home/pi/Desktop/LTRS_Datenlogger/temp.txt';
dat_rename := '/home/pi/Desktop/LTRS_Datenlogger/'+DateToStr(Now)+'_'+TimeToStr(Now)+'_'+dateiname+'.txt';
CopyFile(dat_alt, dat_neu);
RenameFile(dat_neu, dat_rename);
AssignFile(tfOut, C_FNAME);
rewrite(tfOut);
writeLN(tfOut,'DD-MM-YY', char(9), 'hh-mm-ss', char(9), 'D', char(9), 'T1', char(9), 'T2', char(9), 'P', char(9), 'M', char(9), 'Lüfter', char(9), 'Heizung');
CloseFile(tfOut);
Form4.Close;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
Form4.Close;
end;
end.
Leider funktioniert das Kopieren und Umbennen immer noch nicht. In der Konsole scheint das mounten des Sticks zu funktionieren, soweit ich das beurteilen kann.
@ MacWomble: Kannst du mir Infos zu pmount geben? habe dazu leider nichts gefunden.
@ Mathias: Ich verwende als Analog/Digital-Wandler einen MCP3208 zum erfassen der Messwerte und steuer meine Leistungsregler über einen Digital/Analog-Wandler (MCP4922)