From ba5b2d5baad4367d37e65d2483ec854238ea6463 Mon Sep 17 00:00:00 2001 From: Patrick McDonagh Date: Thu, 1 Feb 2018 12:00:21 -0600 Subject: [PATCH] without mraa --- POCpp.xcodeproj/project.pbxproj | 6 -- .../UserInterfaceState.xcuserstate | Bin 87014 -> 90615 bytes src/AnalogIn.cpp | 50 +-------- src/AnalogIn.h | 6 -- src/DigitalIn.cpp | 41 +------- src/DigitalIn.h | 5 +- src/DigitalOut.cpp | 42 +------- src/DigitalOut.h | 3 +- src/MuxSetup.cpp | 99 ------------------ src/MuxSetup.h | 54 ---------- src/Well.cpp | 70 ++++++------- 11 files changed, 39 insertions(+), 337 deletions(-) delete mode 100644 src/MuxSetup.cpp delete mode 100644 src/MuxSetup.h diff --git a/POCpp.xcodeproj/project.pbxproj b/POCpp.xcodeproj/project.pbxproj index d7d2825..1ee8834 100644 --- a/POCpp.xcodeproj/project.pbxproj +++ b/POCpp.xcodeproj/project.pbxproj @@ -23,7 +23,6 @@ C568AEFC1F13EA5000524D66 /* LPPair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C568AEEA1F13EA5000524D66 /* LPPair.cpp */; }; C568AEFD1F13EA5000524D66 /* LPStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C568AEEC1F13EA5000524D66 /* LPStatus.cpp */; }; C568AEFE1F13EA5000524D66 /* Measurement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C568AEEE1F13EA5000524D66 /* Measurement.cpp */; }; - C568AEFF1F13EA5000524D66 /* MuxSetup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C568AEF01F13EA5000524D66 /* MuxSetup.cpp */; }; C568AF001F13EA5000524D66 /* Well.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C568AEF21F13EA5000524D66 /* Well.cpp */; }; C568AF011F13EA5000524D66 /* WellTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C568AEF41F13EA5000524D66 /* WellTest.cpp */; }; /* End PBXBuildFile section */ @@ -72,8 +71,6 @@ C568AEED1F13EA5000524D66 /* LPStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LPStatus.h; path = src/LPStatus.h; sourceTree = ""; }; C568AEEE1F13EA5000524D66 /* Measurement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Measurement.cpp; path = src/Measurement.cpp; sourceTree = ""; }; C568AEEF1F13EA5000524D66 /* Measurement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Measurement.h; path = src/Measurement.h; sourceTree = ""; }; - C568AEF01F13EA5000524D66 /* MuxSetup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuxSetup.cpp; path = src/MuxSetup.cpp; sourceTree = ""; }; - C568AEF11F13EA5000524D66 /* MuxSetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuxSetup.h; path = src/MuxSetup.h; sourceTree = ""; }; C568AEF21F13EA5000524D66 /* Well.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Well.cpp; path = src/Well.cpp; sourceTree = ""; }; C568AEF31F13EA5000524D66 /* Well.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Well.h; path = src/Well.h; sourceTree = ""; }; C568AEF41F13EA5000524D66 /* WellTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WellTest.cpp; path = src/WellTest.cpp; sourceTree = ""; }; @@ -154,8 +151,6 @@ C568AEED1F13EA5000524D66 /* LPStatus.h */, C568AEEE1F13EA5000524D66 /* Measurement.cpp */, C568AEEF1F13EA5000524D66 /* Measurement.h */, - C568AEF01F13EA5000524D66 /* MuxSetup.cpp */, - C568AEF11F13EA5000524D66 /* MuxSetup.h */, C568AEF21F13EA5000524D66 /* Well.cpp */, C568AEF31F13EA5000524D66 /* Well.h */, C568AEF41F13EA5000524D66 /* WellTest.cpp */, @@ -225,7 +220,6 @@ files = ( C568AEF61F13EA5000524D66 /* AnalogIn.cpp in Sources */, C568AEFE1F13EA5000524D66 /* Measurement.cpp in Sources */, - C568AEFF1F13EA5000524D66 /* MuxSetup.cpp in Sources */, C568AEF81F13EA5000524D66 /* Database.cpp in Sources */, C568AEFA1F13EA5000524D66 /* DigitalOut.cpp in Sources */, C568AEF71F13EA5000524D66 /* Card.cpp in Sources */, diff --git a/POCpp.xcodeproj/project.xcworkspace/xcuserdata/patrickjmcd.xcuserdatad/UserInterfaceState.xcuserstate b/POCpp.xcodeproj/project.xcworkspace/xcuserdata/patrickjmcd.xcuserdatad/UserInterfaceState.xcuserstate index 1b898c089a2ddb34ff3e5732433f842aa3d12e00..669bd967d4d0892e3006dc37ff396baa35a0adf7 100644 GIT binary patch literal 90615 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�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 literal 87014 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 = channel; - if (channel != 99){ - channelMux[0] = MUX_VALUES[channel][0]; - channelMux[1] = MUX_VALUES[channel][1]; - channelMux[2] = MUX_VALUES[channel][2]; - } - badReads = 0; + this->rawMax = rawMax; this->rawMin = rawMin; this->euMax = euMax; @@ -52,10 +47,6 @@ int AnalogIn::getRawValue(){ return rawValue; } -long AnalogIn::getBadReads(){ - return badReads; -} - double AnalogIn::setValue(int value){ rawValue = value; double pv = m * rawValue + b; @@ -66,25 +57,6 @@ double AnalogIn::setValue(int value){ return pv; } -double AnalogIn::read(MuxSetup *mux){ - mux->set(channelMux[0], channelMux[1], channelMux[2]); - int rawIn = mux->readAnalog(); - if (rawIn != -1){ - badReads = 0; - return setValue(rawIn); - } else { - badReads++; - } - if (badReads > 10){ - std::cout <<"Too many bad reads" << std::endl; - -// mux->preAnalogWrite(); -// mux->postAnalogWrite(); - } - return lastValue; - -} - void AnalogIn::setRawScaling(int rawMin, int rawMax){ this->rawMin = rawMin; this->rawMax = rawMax; @@ -93,23 +65,3 @@ void AnalogIn::setRawScaling(int rawMin, int rawMax){ AnalogIn::~AnalogIn() { // TODO Auto-generated destructor stub } - -int test_AnalogIn(){ - MuxSetup mux; - double a1val, a2val; - - AnalogIn aI1(1, 32560, 65535, 0, 100); - AnalogIn aI2(2, 0, 65535, 0, 50000); - - for(int i = 0; i< 50; i++){ - a1val = aI1.read(&mux); - a2val = aI2.read(&mux); - - std::cout << "Input 1: " << a1val << ", badReads: " << aI1.getBadReads() << std::endl; - std::cout << "Input 2: " << a2val << ", badReads: " << aI2.getBadReads() << std::endl; - std::cout << "--" << std::endl; - } - - return 1; -} - diff --git a/src/AnalogIn.h b/src/AnalogIn.h index 646f4dd..8733288 100644 --- a/src/AnalogIn.h +++ b/src/AnalogIn.h @@ -8,7 +8,6 @@ #ifndef ANALOGIN_H_ #define ANALOGIN_H_ -#include "MuxSetup.h" #include #include @@ -17,11 +16,8 @@ public: AnalogIn(int ch, double rawMinI, double rawMaxI, double euMinI, double euMaxI); int getRawValue(); double getLastValue(); - long getBadReads(); double getHistory(int index); double setValue(int value); - double read(MuxSetup *mux); - double readSim(double simRaw); void setRawScaling(int rawMin, int rawMax); virtual ~AnalogIn(); @@ -31,9 +27,7 @@ private: double lastValue; double rawMin, rawMax, euMin, euMax; double m, b; - int channelMux[3]; double history[100]; - long badReads; }; #endif /* ANALOGIN_H_ */ diff --git a/src/DigitalIn.cpp b/src/DigitalIn.cpp index dffff6b..b4926de 100644 --- a/src/DigitalIn.cpp +++ b/src/DigitalIn.cpp @@ -10,14 +10,10 @@ DigitalIn::DigitalIn(int channel) { this->channel = channel; value = -1; - channelMux[0] = MUX_VALUES[channel][0]; - channelMux[1] = MUX_VALUES[channel][1]; - channelMux[2] = MUX_VALUES[channel][2]; } -int DigitalIn::read(MuxSetup *mux){ - mux->set(channelMux[0], channelMux[1], channelMux[2]); - value = mux->readDigital(); +int DigitalIn::setValue(int val){ + value = val; return value; } @@ -25,36 +21,3 @@ DigitalIn::~DigitalIn() { // TODO Auto-generated destructor stub } -int test(){ - MuxSetup mux; - - DigitalIn dI1(1); - DigitalIn dI2(2); - DigitalIn dI3(3); - DigitalIn dI4(4); - DigitalIn dI5(5); - DigitalIn dI6(6); - DigitalIn dI7(7); - DigitalIn dI8(8); - - int d1v = dI1.read(&mux); - int d2v = dI2.read(&mux); - int d3v = dI3.read(&mux); - int d4v = dI4.read(&mux); - int d5v = dI5.read(&mux); - int d6v = dI6.read(&mux); - int d7v = dI7.read(&mux); - int d8v = dI8.read(&mux); - - std::cout << "DigIn 1: " << d1v << std::endl; - std::cout << "DigIn 2: " << d2v << std::endl; - std::cout << "DigIn 3: " << d3v << std::endl; - std::cout << "DigIn 4: " << d4v << std::endl; - std::cout << "DigIn 5: " << d5v << std::endl; - std::cout << "DigIn 6: " << d6v << std::endl; - std::cout << "DigIn 7: " << d7v << std::endl; - std::cout << "DigIn 8: " << d8v << std::endl; - - return 1; -} - diff --git a/src/DigitalIn.h b/src/DigitalIn.h index b3689e2..38d0e46 100644 --- a/src/DigitalIn.h +++ b/src/DigitalIn.h @@ -8,17 +8,14 @@ #ifndef DIGITALIN_H_ #define DIGITALIN_H_ -#include "MuxSetup.h" - class DigitalIn { private: int channel; int value; - int channelMux[3]; public: DigitalIn(int channel); - int read(MuxSetup *mux); + int setValue(int val); virtual ~DigitalIn(); }; diff --git a/src/DigitalOut.cpp b/src/DigitalOut.cpp index cefa387..806ea11 100644 --- a/src/DigitalOut.cpp +++ b/src/DigitalOut.cpp @@ -39,53 +39,17 @@ DigitalOut::DigitalOut(int chan) { // std::cout << "Cannot setup channel " << chan; break; } - pin = new mraa::Gpio(channel); - pin->dir(mraa::DIR_OUT); + value = 0; } void DigitalOut::write(int value){ - pin->write(value); + this->value = value; } DigitalOut::~DigitalOut() { // TODO Auto-generated destructor stub - pin->write(0); -} - -int test_DigitalOut(){ - DigitalOut dO1(1); - DigitalOut dO2(2); - DigitalOut dO3(3); - DigitalOut dO4(4); - DigitalOut dO5(5); - DigitalOut dO6(6); - - dO1.write(1); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO2.write(1); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO3.write(1); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO4.write(1); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO5.write(1); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO6.write(1); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO6.write(0); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO5.write(0); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO4.write(0); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO3.write(0); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO2.write(0); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - dO1.write(0); - std::this_thread::sleep_for(std::chrono::milliseconds(500)); - } + diff --git a/src/DigitalOut.h b/src/DigitalOut.h index 17b5852..0f24cf0 100644 --- a/src/DigitalOut.h +++ b/src/DigitalOut.h @@ -8,7 +8,6 @@ #ifndef DIGITALOUT_H_ #define DIGITALOUT_H_ -#include "mraa.hpp" #include #include #include @@ -17,7 +16,7 @@ class DigitalOut { private: int channel; - mraa::Gpio* pin; + int value; public: DigitalOut(int chan); diff --git a/src/MuxSetup.cpp b/src/MuxSetup.cpp deleted file mode 100644 index d62b337..0000000 --- a/src/MuxSetup.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * MuxSetup.cpp - * - * Created on: Jun 27, 2017 - * Author: patrickjmcd - */ - -#include "MuxSetup.h" - -int PIN_MUX_1 = 21; -int PIN_MUX_2 = 22; -int PIN_MUX_3 = 23; -int PIN_DIGITAL_READ = 24; -int PIN_ANOUT_TRIGGER = 4; - -int SPI_CHANNEL = 0; - -MuxSetup::MuxSetup() { - // TODO Auto-generated constructor stub - - mux1value = 0; - mux2value = 0; - mux3value = 0; - - pinMux1 = new mraa::Gpio(PIN_MUX_1); - mraa::Result response = pinMux1->dir(mraa::DIR_OUT); - - pinMux2 = new mraa::Gpio(PIN_MUX_2); - response = pinMux2->dir(mraa::DIR_OUT); - - pinMux3 = new mraa::Gpio(PIN_MUX_3); - response = pinMux3->dir(mraa::DIR_OUT); - - pinDigitalRead = new mraa::Gpio(PIN_DIGITAL_READ); - response = pinDigitalRead->dir(mraa::DIR_OUT); - - pinAnOutTrigger = new mraa::Gpio(PIN_ANOUT_TRIGGER); - response = pinAnOutTrigger->dir(mraa::DIR_OUT); - - - - spi = new mraa::Spi(SPI_CHANNEL); - - pinAnOutTrigger->write(1); - -} - -int MuxSetup::apply(){ - pinMux1->write(mux1value); - pinMux2->write(mux2value); - pinMux3->write(mux3value); - - return mux1value + mux2value * 2 + mux3value * 4; -} - -int MuxSetup::set(int v1, int v2, int v3){ - - mux1value = v1; - mux2value = v2; - mux3value = v3; - return apply(); -} - -int MuxSetup::readDigital(){ - return pinDigitalRead->read(); -} - -int MuxSetup::readAnalog(){ - - uint8_t zero[] = {0x00, 0x00, 0x000}; - uint8_t* recv = spi->write(zero, 3); - int a = recv[0]; - int b = recv[1]; - int c = recv[2]; - std::cout << a << " - " << b << " - " << c << std::endl; - - if (c == 13){ - int x = a * 256; - x = x + b; - return x; - } else { - return -1; - } -} - -void MuxSetup::preAnalogWrite(){ - pinAnOutTrigger->write(0); -} - -void MuxSetup::postAnalogWrite(){ - pinAnOutTrigger->write(1); -} - -MuxSetup::~MuxSetup() { - // TODO Auto-generated destructor stub -} - - - diff --git a/src/MuxSetup.h b/src/MuxSetup.h deleted file mode 100644 index d2baf45..0000000 --- a/src/MuxSetup.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * MuxSetup.h - * - * Created on: Jun 27, 2017 - * Author: patrickjmcd - */ - -#ifndef MUXSETUP_H_ -#define MUXSETUP_H_ - -#include "mraa.hpp" - - -#include - - -const int MUX_VALUES[9][3] = { - {0,0,0}, - {0,0,0}, - {1,0,0}, - {0,1,0}, - {1,1,0}, - {0,0,1}, - {1,0,1}, - {0,1,1}, - {1,1,1}, -}; - -class MuxSetup { -public: - - MuxSetup(); - int set(int v1, int v2, int v3); - void preAnalogWrite(); - void postAnalogWrite(); - int readAnalog(); - int readDigital(); - int writeDigital(int val); - virtual ~MuxSetup(); - - -private: - int apply(); - int mux1value, mux2value, mux3value; - mraa::Gpio* pinMux1; - mraa::Gpio* pinMux2; - mraa::Gpio* pinMux3; - mraa::Gpio* pinDigitalRead; - mraa::Gpio* pinAnOutTrigger; - mraa::Spi* spi; - -}; - -#endif /* MUXSETUP_H_ */ diff --git a/src/Well.cpp b/src/Well.cpp index cf246b4..fa2e0c4 100644 --- a/src/Well.cpp +++ b/src/Well.cpp @@ -747,22 +747,43 @@ double lookupRodWeightPerFoot(double i_ym, double i_diam) { return wtPerFt; }; +bool fileExists (const std::string& name) { + std::ifstream f(name.c_str()); + return f.good(); +} + void Well::getWellSetup(){ std::string jsonFilename = "wellSetup.json"; + std::string renamedFilename = "wellSetup.json.bak"; std::ifstream i(jsonFilename); json jsonData; i >> jsonData; - try { - wellName = jsonData["wellName"]; - dt = jsonData["dt"]; - setPumpDiameter(jsonData["pumpDiameter"]); - fluidGradient = jsonData["fluidGradient"]; - setTubingInnerDiameter(jsonData["tubingID"]); - setTubingOuterDiameter(jsonData["tubingOD"]); - tubingAnchorDepth = jsonData["] - + if (fileExists(jsonFilename)){ + + try { + wellName = jsonData["wellName"]; + dt = jsonData["dt"]; + setPumpDiameter(jsonData["pumpDiameter"]); + fluidGradient = jsonData["fluidGradient"]; + setTubingInnerDiameter(jsonData["tubingID"]); + setTubingOuterDiameter(jsonData["tubingOD"]); + + auto tapers = jsonData["tapers"]; + + for (int i = 0; i < tapers.size(); i++){ + setRodLength(i, tapers[i]["length"]); + setRodDiameter(i, tapers[i]["diameter"]); + setRodYM(i, tapers[i]["material"]); + setDampingFactor(i, tapers[i]["dampingFactor"]); + } + rename(jsonFilename.c_str(), renamedFilename.c_str()); + // updateTapers(true); + + } catch (std::exception){ + std::cout << "Error in JSON" << std::endl; + }; } @@ -771,36 +792,7 @@ void Well::getWellSetup(){ try { - Object newTubingAnchorDepth = well.get("tubingAnchorDepth"); - if (newTubingAnchorDepth != null) tubingAnchorDepth = (Double) newTubingAnchorDepth; - - Object newStructuralRating = well.get("structuralRating"); - if (newStructuralRating != null) structuralRating = (Double) newStructuralRating; - - Object newStuffingBoxFriction = well.get("stuffingBoxFriction"); - if (newStuffingBoxFriction != null) setSbfriction((Double) newStuffingBoxFriction); - - Object newTubingHeadPressure = well.get("tubingOD"); - if (newTubingHeadPressure != null) setTubingOD((Double) newTubingHeadPressure); - - JSONArray tapers = (JSONArray) well.get("tapers"); - numTapers = tapers.size(); - for (int i = 0; i < numTapers; i++){ - int currentTaperNum = i + 1; - JSONObject taperObj = (JSONObject) tapers.get(i); - - Object newLength = taperObj.get("length"); - if (newLength != null) setRodLength(currentTaperNum, (Double) newLength); - - Object newDiameter = taperObj.get("diameter"); - if (newDiameter != null) setRodDiameter(currentTaperNum, (Double) newDiameter); - - Object newMaterial = taperObj.get("material"); - if (newMaterial != null) setRodYM(currentTaperNum, (String) newMaterial); - - Object newDampingFactor = taperObj.get("dampingFactor"); - if (newDampingFactor != null) setDampingFactor(currentTaperNum, (Double) newDampingFactor); - } + Path fromFile = Paths.get(jsonFilename); Path toFile = Paths.get(jsonFilename + ".bak");