parent
2e3dcb20e1
commit
ef0cf61b25
206
ActionPi.cpp
206
ActionPi.cpp
|
@ -1,6 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* ActionPi.cpp
|
* ActionPi.cpp
|
||||||
*
|
* Version 1.01
|
||||||
|
* IT-Hardware Projekt GWS-Bühl
|
||||||
* Copyright 2016 <admin@kellerkinder>
|
* Copyright 2016 <admin@kellerkinder>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -17,8 +18,8 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -34,7 +35,6 @@
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
string removeSpaces(string input);
|
string removeSpaces(string input);
|
||||||
|
@ -69,7 +69,6 @@ void kontrast(int richtung);
|
||||||
void saettigung(int richtung);
|
void saettigung(int richtung);
|
||||||
void verschlusszeit(int richtung);
|
void verschlusszeit(int richtung);
|
||||||
|
|
||||||
|
|
||||||
void setISO ( int iso );
|
void setISO ( int iso );
|
||||||
void setBrightness ( unsigned int brightness );
|
void setBrightness ( unsigned int brightness );
|
||||||
void setContrast ( int contrast );
|
void setContrast ( int contrast );
|
||||||
|
@ -77,7 +76,6 @@ void setSaturation ( int saturation );
|
||||||
void setExposureCompensation ( int val );
|
void setExposureCompensation ( int val );
|
||||||
void setShutterSpeed ( unsigned int ss );
|
void setShutterSpeed ( unsigned int ss );
|
||||||
|
|
||||||
|
|
||||||
int getMODI();
|
int getMODI();
|
||||||
int getREC();
|
int getREC();
|
||||||
int getEx1();
|
int getEx1();
|
||||||
|
@ -153,7 +151,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(getMODI()){
|
if(getMODI()){ // Eindtellungen nur im Fotomodus
|
||||||
einstellungen();
|
einstellungen();
|
||||||
einstellungErhoehen();
|
einstellungErhoehen();
|
||||||
einstellungVerringern();
|
einstellungVerringern();
|
||||||
|
@ -167,6 +165,7 @@ int main(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//setzt Fotoeinstellungen zurück
|
||||||
void zuruecksetzten()
|
void zuruecksetzten()
|
||||||
{
|
{
|
||||||
if(getEx2()){
|
if(getEx2()){
|
||||||
|
@ -184,6 +183,7 @@ void zuruecksetzten()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//öffnet Einstellungen und zeigt die verschiedenen Optionen an
|
||||||
void einstellungen()
|
void einstellungen()
|
||||||
{
|
{
|
||||||
if(getEx2()){
|
if(getEx2()){
|
||||||
|
@ -216,8 +216,9 @@ void einstellungen()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}// Ende der Einstellungen
|
}
|
||||||
|
|
||||||
|
//setzt die gewählte Einstellung auf den nächts höheren Wert
|
||||||
void einstellungErhoehen()
|
void einstellungErhoehen()
|
||||||
{
|
{
|
||||||
if(getEx3()){
|
if(getEx3()){
|
||||||
|
@ -247,6 +248,7 @@ void einstellungErhoehen()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//setzt die gewählte Einstellung auf den nächts niedrigeren Wert
|
||||||
void einstellungVerringern()
|
void einstellungVerringern()
|
||||||
{
|
{
|
||||||
if(getEx1()){
|
if(getEx1()){
|
||||||
|
@ -281,6 +283,7 @@ void einstellungVerringern()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Werte für ISO 100,400,600,600,800 min:100; max:800
|
||||||
void iso(int richtung)
|
void iso(int richtung)
|
||||||
{
|
{
|
||||||
zaehlerISO = zaehlerISO + (richtung);
|
zaehlerISO = zaehlerISO + (richtung);
|
||||||
|
@ -315,6 +318,7 @@ void iso(int richtung)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Werte für Helligkeit 25,50,75,100
|
||||||
void helligkeit(int richtung)
|
void helligkeit(int richtung)
|
||||||
{
|
{
|
||||||
zaehlerHelligkeit = zaehlerHelligkeit + (richtung);
|
zaehlerHelligkeit = zaehlerHelligkeit + (richtung);
|
||||||
|
@ -348,6 +352,7 @@ void helligkeit(int richtung)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Werte für Kontrast -50,0,50,100
|
||||||
void kontrast(int richtung)
|
void kontrast(int richtung)
|
||||||
{
|
{
|
||||||
zaehlerKontrast = zaehlerKontrast + (richtung);
|
zaehlerKontrast = zaehlerKontrast + (richtung);
|
||||||
|
@ -381,6 +386,7 @@ void kontrast(int richtung)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Werte für Sättigung -100,-75,0,50,100
|
||||||
void saettigung(int richtung)
|
void saettigung(int richtung)
|
||||||
{
|
{
|
||||||
zaehlerSaettigung = zaehlerSaettigung + (richtung);
|
zaehlerSaettigung = zaehlerSaettigung + (richtung);
|
||||||
|
@ -419,6 +425,7 @@ void saettigung(int richtung)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Werte für Verschluss-/Belichtungszeit 0,5000,20000,40000,100000 kleiner = kürzere Verschlusszeit
|
||||||
void verschlusszeit(int richtung)
|
void verschlusszeit(int richtung)
|
||||||
{
|
{
|
||||||
zaehlerVerschlusszeit = zaehlerVerschlusszeit + (richtung);
|
zaehlerVerschlusszeit = zaehlerVerschlusszeit + (richtung);
|
||||||
|
@ -457,6 +464,7 @@ void verschlusszeit(int richtung)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//wird von void zuruecksetzten() aufgerufen und setzt die Fotoeinstellungen zurück auf den Standartwert
|
||||||
void setStandardWerte()
|
void setStandardWerte()
|
||||||
{
|
{
|
||||||
valISO = 400;
|
valISO = 400;
|
||||||
|
@ -467,85 +475,90 @@ void setStandardWerte()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//startet die Videoaufnahme
|
||||||
void videoAufnehmen()
|
void videoAufnehmen()
|
||||||
{
|
{
|
||||||
bcm2835_gpio_set(LED);
|
bcm2835_gpio_set(LED); //schaltet LED an
|
||||||
videoAufnahme = true;
|
videoAufnahme = true; // Merker für aktuelle Videoaufnahme
|
||||||
system("killall raspivid");
|
system("killall raspivid"); //beendet den Prozess raspivid (Liveausgabe)
|
||||||
system("raspivid -o vid.h264 -t 1140000 -p '0,-10,720,480' &"); //nimmt video mit 19 Minuten auf -n = nopreview -f fullscreen "-p '0,0,1280,720' für Position und Größe des Vorschau Bildes"
|
system("raspivid -o vid.h264 -t 1140000 -p '0,-10,720,480' &"); //nimmt video mit 19 Minuten auf -o temporäre output Datei, -p '0,-10,1280,720' für Position und Größe des Vorschau Bildes
|
||||||
liveBildWirdAngezeigt = false;
|
liveBildWirdAngezeigt = false; //setzt Merker für Livebildausgabe
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//nimmt ein temporäres Foto im ppm Format auf
|
||||||
int fotoAufnehmen()
|
int fotoAufnehmen()
|
||||||
{
|
{
|
||||||
bcm2835_gpio_set(LED);
|
bcm2835_gpio_set(LED); //schaltet LED an
|
||||||
system("killall raspivid");
|
system("killall raspivid");
|
||||||
raspicam::RaspiCam Camera; //definiert Camera Objekt
|
raspicam::RaspiCam Camera; //definiert Camera Objekt
|
||||||
//Öffnet Camera
|
//setzt die gewählten Fotoeinstellungen
|
||||||
Camera.setISO(valISO);
|
Camera.setISO(valISO);
|
||||||
Camera.setBrightness(valHelligkeit);
|
Camera.setBrightness(valHelligkeit);
|
||||||
Camera.setContrast(valKontrast);
|
Camera.setContrast(valKontrast);
|
||||||
Camera.setSaturation(valSaettigung);
|
Camera.setSaturation(valSaettigung);
|
||||||
Camera.setShutterSpeed(valVerschlusszeit);
|
Camera.setShutterSpeed(valVerschlusszeit);
|
||||||
|
|
||||||
//cout<<"Öffne Kamera..."<<endl;
|
//Öffnet Camera
|
||||||
if ( !Camera.open()) {cerr<<"Error opening camera"<<endl;return -1;}
|
if ( !Camera.open()) {cerr<<"Fehler beim öffnen der Kamera!"<<endl;return -1;} //gibt Fehlermeldung aus sofern Kamera öffnen nicht möglich
|
||||||
sleep(1); //schlafe 1 Sekunde bis Kamera stabilisiert
|
sleep(1); //schlafe 1 Sekunde bis Kamera stabilisiert (ohne Pause wird das Bild rot)
|
||||||
Camera.grab(); //hohle Kamera
|
Camera.grab(); //hohle Kamera
|
||||||
//reserviere Speicher
|
//reserviere Speicher
|
||||||
unsigned char *data=new unsigned char[ Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB )]; //extrahiert Bild in rgb Format
|
unsigned char *data=new unsigned char[ Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB )]; //setzt Bild Format auf RGB
|
||||||
Camera.retrieve ( data,raspicam::RASPICAM_FORMAT_RGB );//aufnehmen des Bildes
|
Camera.retrieve ( data,raspicam::RASPICAM_FORMAT_RGB );//aufnehmen des Bildes
|
||||||
std::ofstream outFile ("bild.ppm" ,std::ios::binary ); //speichern
|
std::ofstream outFile ("bild.ppm" ,std::ios::binary ); //speichern des temporären Bildes
|
||||||
outFile<<"P6\n"<<Camera.getWidth() <<" "<<Camera.getHeight() <<" 255\n";
|
outFile<<"P6\n"<<Camera.getWidth() <<" "<<Camera.getHeight() <<" 255\n";
|
||||||
outFile.write ( ( char* ) data, Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB ) );
|
outFile.write ( ( char* ) data, Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB ) ); //speichern der zusätzlichen Parameter
|
||||||
delete data; //gibt speicher wieder frei
|
delete data; //gibt speicher wieder frei
|
||||||
liveBildWirdAngezeigt = false;
|
liveBildWirdAngezeigt = false; //setzt Merker für Livebildausgabe
|
||||||
convert();
|
convert(); //ruft Funktion zum konvertieren des temporären Bildes auf
|
||||||
bcm2835_gpio_clr(LED);
|
bcm2835_gpio_clr(LED); //schaltet LED aus
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void liveAusgabe ()
|
void liveAusgabe ()
|
||||||
{
|
{
|
||||||
liveBildWirdAngezeigt = true;
|
liveBildWirdAngezeigt = true; //setzt Merker für Livebildausgabe
|
||||||
system("raspivid -t -0 -p '0,-10,720,480'&"); //"-p '0,0,1280,720' für Position und Größe des Vorschau Bildes"
|
system("raspivid -t -0 -p '0,-10,720,480'&"); //-p '0,0,1280,720' für Position und Größe des Vorschau Bildes
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//konvertiert Video und speichert es auf USB Stick
|
||||||
void videoAbspeichern()
|
void videoAbspeichern()
|
||||||
{
|
{
|
||||||
bcm2835_gpio_clr(LED);
|
bcm2835_gpio_clr(LED); //schaltet LED aus
|
||||||
std::string datname = gibDateiName();
|
std::string datname = gibDateiName(); //holen des Dateinamen
|
||||||
std::string ordnerName = getFolderName();
|
std::string ordnerName = getFolderName(); //holen des Ordnernamen
|
||||||
pruefeNewFolder(ordnerName);
|
pruefeNewFolder(ordnerName); //prüfen ob Ordner bereits existiert
|
||||||
std::string cmd_line = std::string() + " sudo MP4Box -fps 30 -add vid.h264 /media/usb0/DCIM/"+ordnerName+"/""\"" +datname+"\".mp4 "; //Befehl zu packen von video in .mp4 container
|
std::string cmd_line = std::string() + " sudo MP4Box -fps 30 -add vid.h264 /media/usb0/DCIM/"+ordnerName+"/""\"" +datname+"\".mp4 "; //Befehl zu packen von video in .mp4 container
|
||||||
system( cmd_line.c_str() ); //ruft pack befehl auf
|
system( cmd_line.c_str() ); //ruft pack befehl auf
|
||||||
system("killall raspivid");//beendet video aufnahme
|
system("killall raspivid");//beendet video aufnahme
|
||||||
system("rm vid.h264"); //löscht temporäre vid.h264 video datei
|
system("rm vid.h264"); //löscht temporäre vid.h264 video datei
|
||||||
videoAufnahme = false;
|
videoAufnahme = false; //Merker für Videoaufnahme
|
||||||
liveBildWirdAngezeigt = false;
|
liveBildWirdAngezeigt = false;//setzt Merker für Livebildausgabe
|
||||||
blinken();
|
blinken(); //lässt LED blinken
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//konvertiert Foto und speichert es auf USB Stick
|
||||||
void convert(){
|
void convert(){
|
||||||
cout << "Speichern von Bild ..." << endl;
|
cout << "Speichern von Bild ..." << endl;
|
||||||
std::string datname = gibDateiName();
|
std::string datname = gibDateiName(); //holen des Dateinamen
|
||||||
std::string ordnerName = getFolderName();
|
std::string ordnerName = getFolderName(); //holen des Ordnernamen
|
||||||
pruefeNewFolder(ordnerName);
|
pruefeNewFolder(ordnerName);
|
||||||
std::string comand = "convert bild.ppm /media/usb0/DCIM/"+ordnerName+ "/" + datname + ".jpg";
|
std::string comand = "convert bild.ppm /media/usb0/DCIM/"+ordnerName+ "/" + datname + ".jpg"; //Befehl zum konverieren, Ordnername und Dateiname werden hinzugefügt
|
||||||
const char *cComand = comand.c_str();
|
const char *cComand = comand.c_str(); //befehl zum ausführen in cons char
|
||||||
system(cComand);
|
system(cComand); //ausführen des Befehls
|
||||||
std::string pfad = "fbi --noverbose -T 1 /media/usb0/DCIM/"+ordnerName+ "/" + datname + ".jpg &/";
|
std::string pfad = "fbi --noverbose -T 1 /media/usb0/DCIM/"+ordnerName+ "/" + datname + ".jpg &/"; //Befehl zum anzeigen das fertigen Bildes
|
||||||
system("rm bild.ppm");
|
system("rm bild.ppm"); //löschen des temporären Bildes
|
||||||
rueckschau(pfad);
|
rueckschau(pfad);
|
||||||
sleep(4);
|
sleep(4); //für 4 Sekunden
|
||||||
system("killall fbi");
|
system("killall fbi"); //beendet Anzeigen des Bildes
|
||||||
cout << "Abspeichern fertig" << endl;
|
cout << "Abspeichern fertig" << endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//anzeigen des fertigen Bildes
|
||||||
void rueckschau(string input)
|
void rueckschau(string input)
|
||||||
{
|
{
|
||||||
const char *cComand = input.c_str();
|
const char *cComand = input.c_str();
|
||||||
|
@ -554,46 +567,42 @@ void rueckschau(string input)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//erstellt den Dateinamen aus der auktuellen Uhrzeit
|
||||||
string gibDateiName()
|
string gibDateiName()
|
||||||
{
|
{
|
||||||
std::time_t t = std::time(0);
|
time_t t = time(0);
|
||||||
char *ti = ctime(&t);
|
struct tm *aT = localtime(&t); //holen der aktuellen Zeit
|
||||||
std::string datname = std::string() + ti + "ctionPi";
|
int istd = aT->tm_hour; //holen der Stunden
|
||||||
datname = removeSpaces(datname);
|
int imin = aT->tm_min; //holen der Minuten
|
||||||
datname = removeDp(datname);
|
int isec = aT->tm_sec; //holen der Sekunden
|
||||||
datname = removeEdnl(datname);
|
std::string sstd = to_string(istd); //in String konvertieren
|
||||||
datname = editDatName(datname);
|
std::string smin = to_string(imin);
|
||||||
return datname;
|
std::string ssec = to_string(isec);
|
||||||
}
|
std::string datName = sstd + "-" + smin + "-" + ssec + "ActionPi"; //zu einem String zusammenfügen
|
||||||
|
return datName;
|
||||||
string editDatName(string input)
|
|
||||||
{
|
|
||||||
input.erase(0,8);
|
|
||||||
input.erase(6,4);
|
|
||||||
input.insert(2,"-");
|
|
||||||
input.insert(5,"-");
|
|
||||||
return input;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//erstellen des neuen Ordners
|
||||||
void creatNewFolder()
|
void creatNewFolder()
|
||||||
{
|
{
|
||||||
std::string folderName = getFolderName();
|
std::string folderName = getFolderName(); //holen des Ordnernamen
|
||||||
std::string pfad = "/media/usb0/DCIM/" + folderName;
|
std::string pfad = "/media/usb0/DCIM/" + folderName; //Pafd des Ordners
|
||||||
bool exists = ordnerExistiert(pfad);
|
bool exists = ordnerExistiert(pfad); //prüfen ob Ordner existiert
|
||||||
if(exists == false)
|
if(exists == false) //wenn nein dann neuen Ordner erstellen
|
||||||
{
|
{
|
||||||
std::string comand = "mkdir " + pfad + "";
|
std::string comand = "mkdir " + pfad + ""; //Befehl zum erstellen des Ordners
|
||||||
const char *cComand = comand.c_str();
|
const char *cComand = comand.c_str();
|
||||||
system(cComand);
|
system(cComand);
|
||||||
cout << "Ordner erstellt." << endl;
|
cout << "Ordner erstellt." << endl;
|
||||||
}
|
}
|
||||||
else
|
else //falls Ordner bereits vorhanden
|
||||||
{
|
{
|
||||||
cout << "Ordner existiert bereits." << endl;
|
cout << "Ordner existiert bereits." << endl;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//erstellen des DCIM Ordners
|
||||||
void creatDCIM()
|
void creatDCIM()
|
||||||
{
|
{
|
||||||
std::string dcmiPfad = "/media/usb0/DCIM";
|
std::string dcmiPfad = "/media/usb0/DCIM";
|
||||||
|
@ -610,20 +619,22 @@ void creatDCIM()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//prüft ob Ordner/DCIM bereits existiert
|
||||||
bool ordnerExistiert(string pfad)
|
bool ordnerExistiert(string pfad)
|
||||||
{
|
{
|
||||||
const char *cPfad = pfad.c_str();
|
const char *cPfad = pfad.c_str();
|
||||||
DIR *pDir;
|
DIR *pDir; //Verzeichniss wird auf aktuellen Pfad gesetzt
|
||||||
bool oExists = false;
|
bool oExists = false;
|
||||||
pDir = opendir(cPfad);
|
pDir = opendir(cPfad); //öffnen des Pfades
|
||||||
if(pDir != NULL)
|
if(pDir != NULL) //falls Ordner unter dem aktuellen Pfad vorhanden pDIR ungleich NULL
|
||||||
{
|
{
|
||||||
oExists = true;
|
oExists = true;
|
||||||
closedir(pDir);
|
closedir(pDir); //schließen des Ordners
|
||||||
}
|
}
|
||||||
return oExists;
|
return oExists;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//prüft ob Ordner bereits existiert (wird gebraucht sollt die Kamera länger als 0.00 Uhr in Betrieb sein "0 Uhr Bug")
|
||||||
void pruefeNewFolder(string input)
|
void pruefeNewFolder(string input)
|
||||||
{
|
{
|
||||||
std::string pfad = "/media/usb0/DCIM/" + input;
|
std::string pfad = "/media/usb0/DCIM/" + input;
|
||||||
|
@ -638,43 +649,24 @@ void pruefeNewFolder(string input)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//erstellt den Ordnernamen aus der auktuellen Uhrzeit (siehe gibDateiName)
|
||||||
string getFolderName()
|
string getFolderName()
|
||||||
{
|
{
|
||||||
std::time_t t = std::time(0);
|
char *wtagName[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
|
||||||
char *ti = ctime(&t);
|
char *monatName[] = { "Dec", "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov" };
|
||||||
std::string folName = std::string() + ti;
|
|
||||||
folName = removeSpaces(folName);
|
time_t t = time(0);
|
||||||
folName = removeDp(folName);
|
struct tm *aT = localtime(&t);
|
||||||
folName = removeEdnl(folName);
|
int tag = aT->tm_mday;
|
||||||
folName = editFolder(folName);
|
int wtag = aT->tm_wday;
|
||||||
|
int monat = aT->tm_mon;
|
||||||
|
|
||||||
|
std::string stag = std::to_string(tag);
|
||||||
|
std::string tagumonat = std::string() + wtagName[wtag] + "-" + monatName[monat];
|
||||||
|
std::string folName = tagumonat + "-" + stag;
|
||||||
return folName;
|
return folName;
|
||||||
}
|
}
|
||||||
|
|
||||||
string editFolder(string input)
|
|
||||||
{
|
|
||||||
input.erase(8,6);
|
|
||||||
input.erase(12,1);
|
|
||||||
input.insert(8,"-");
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
|
|
||||||
string removeSpaces(string input) //entfernt " "
|
|
||||||
{
|
|
||||||
input.erase(std::remove(input.begin(),input.end(),' '),input.end());
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
|
|
||||||
string removeDp(string input) //entfernt ":"
|
|
||||||
{
|
|
||||||
input.erase(std::remove(input.begin(),input.end(),':'),input.end());
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
|
|
||||||
string removeEdnl(string input) //entfernt endl
|
|
||||||
{
|
|
||||||
replace(input.begin(), input.end(), '\n', 'A');
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
|
|
||||||
void initialisierung()
|
void initialisierung()
|
||||||
{
|
{
|
||||||
|
@ -693,6 +685,7 @@ bcm2835_gpio_set_pud(Ex3, BCM2835_GPIO_PUD_UP); //Schalter als Öffner
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//liest die Schalterstellung von MODI ein
|
||||||
int getMODI()
|
int getMODI()
|
||||||
{
|
{
|
||||||
valMODI = !bcm2835_gpio_lev(MODI);
|
valMODI = !bcm2835_gpio_lev(MODI);
|
||||||
|
@ -700,30 +693,35 @@ int getMODI()
|
||||||
return valMODI;
|
return valMODI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//liest die Schalterstellung von REC ein
|
||||||
int getREC()
|
int getREC()
|
||||||
{
|
{
|
||||||
valREC = !bcm2835_gpio_lev(REC);
|
valREC = !bcm2835_gpio_lev(REC);
|
||||||
return valREC;
|
return valREC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//liest die Schalterstellung von Ex1 ein
|
||||||
int getEx1()
|
int getEx1()
|
||||||
{
|
{
|
||||||
valEx1 = !bcm2835_gpio_lev(Ex1);
|
valEx1 = !bcm2835_gpio_lev(Ex1);
|
||||||
return valEx1;
|
return valEx1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//liest die Schalterstellung von Ex2 ein
|
||||||
int getEx2()
|
int getEx2()
|
||||||
{
|
{
|
||||||
valEx2 = !bcm2835_gpio_lev(Ex2);
|
valEx2 = !bcm2835_gpio_lev(Ex2);
|
||||||
return valEx2;
|
return valEx2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//liest die Schalterstellung von Ex3 ein
|
||||||
int getEx3()
|
int getEx3()
|
||||||
{
|
{
|
||||||
valEx3 = !bcm2835_gpio_lev(Ex3);
|
valEx3 = !bcm2835_gpio_lev(Ex3);
|
||||||
return valEx3;
|
return valEx3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//lässt die Status-LED 10 mal blinken
|
||||||
void blinken()
|
void blinken()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -737,6 +735,7 @@ void blinken()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Herunterfahren der Kamera bei gleizeitgem drücken des REC Knopfes und der mittleren Funktionstaste
|
||||||
void herunterfahren()
|
void herunterfahren()
|
||||||
{
|
{
|
||||||
if(getREC() && getEx2())
|
if(getREC() && getEx2())
|
||||||
|
@ -749,11 +748,12 @@ void herunterfahren()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//beenden des Kameraprogramms bei gleichzeitigen drücken der äußeren Funktionstasten
|
||||||
void programmBeenden()
|
void programmBeenden()
|
||||||
{
|
{
|
||||||
if(getEx3() && getEx1())
|
if(getEx3() && getEx1())
|
||||||
{
|
{
|
||||||
aktiv = false;
|
aktiv = false; // Merker für while-Schleife
|
||||||
system("killall raspivid");
|
system("killall raspivid");
|
||||||
blinken();
|
blinken();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue