plottyfile done
This commit is contained in:
parent
71b156aa6f
commit
f59e1d4de8
13 changed files with 235 additions and 64 deletions
|
@ -1,7 +1,9 @@
|
|||
#include "dot.h"
|
||||
|
||||
Dot::Dot(uint16_t x, uint16_t y, DotColor color) : x(x), y(y), color(color)
|
||||
Dot::Dot(uint16_t x, uint16_t y, uint8_t curve) : x(x), y(y), curve(curve)
|
||||
{
|
||||
if(curve >= 64)
|
||||
throw std::range_error("Kurvenindex muss im Bereich [0, 63] liegen");
|
||||
}
|
||||
|
||||
uint16_t Dot::getX() const
|
||||
|
@ -14,7 +16,7 @@ uint16_t Dot::getY() const
|
|||
return y;
|
||||
}
|
||||
|
||||
DotColor Dot::getColor(void) const
|
||||
uint8_t Dot::getCurve(void) const
|
||||
{
|
||||
return color;
|
||||
return curve;
|
||||
}
|
||||
|
|
13
drv/dot.h
13
drv/dot.h
|
@ -2,24 +2,19 @@
|
|||
#define DOT_H
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
enum DotColor
|
||||
{
|
||||
PURPLE = 0,
|
||||
GREEN = 32,
|
||||
};
|
||||
#include <stdexcept>
|
||||
|
||||
class Dot
|
||||
{
|
||||
public:
|
||||
Dot(uint16_t x, uint16_t y, DotColor color);
|
||||
Dot(uint16_t x, uint16_t y, uint8_t curve);
|
||||
uint16_t getX(void) const;
|
||||
uint16_t getY(void) const;
|
||||
DotColor getColor(void) const;
|
||||
uint8_t getCurve(void) const;
|
||||
|
||||
private:
|
||||
uint16_t x, y;
|
||||
DotColor color;
|
||||
uint8_t curve;
|
||||
};
|
||||
|
||||
|
||||
|
|
BIN
drv/dot.o
BIN
drv/dot.o
Binary file not shown.
|
@ -5,6 +5,131 @@ void PlottyFile::addDot(Dot& dot)
|
|||
dots.push_back(dot);
|
||||
}
|
||||
|
||||
void PlottyFile::addDot(Dot dot)
|
||||
{
|
||||
dots.push_back(dot);
|
||||
}
|
||||
|
||||
void PlottyFile::setFunctionType(FunctionType function_type)
|
||||
{
|
||||
this->function_type = function_type;
|
||||
}
|
||||
|
||||
void PlottyFile::setQuadrant(uint8_t quadrant)
|
||||
{
|
||||
this->quadrant = quadrant;
|
||||
}
|
||||
|
||||
void PlottyFile::setRefX(uint16_t ref_x)
|
||||
{
|
||||
this->ref_x = ref_x;
|
||||
}
|
||||
|
||||
void PlottyFile::setRefY(uint16_t ref_y)
|
||||
{
|
||||
this->ref_y = ref_y;
|
||||
}
|
||||
|
||||
void PlottyFile::setParaFirstCurve(uint16_t para_first)
|
||||
{
|
||||
this->para_first = para_first;
|
||||
}
|
||||
|
||||
void PlottyFile::setParaStepWidth(uint16_t para_stepwidth)
|
||||
{
|
||||
this->para_stepwidth = para_stepwidth;
|
||||
}
|
||||
|
||||
void PlottyFile::setUnitX(std::string unit_x)
|
||||
{
|
||||
this->unit_x = unit_x;
|
||||
}
|
||||
|
||||
void PlottyFile::setDescX(std::string desc_x)
|
||||
{
|
||||
this->desc_x = desc_x;
|
||||
}
|
||||
|
||||
void PlottyFile::setUnitY(std::string unit_y)
|
||||
{
|
||||
this->unit_y = unit_y;
|
||||
}
|
||||
|
||||
void PlottyFile::setDescY(std::string desc_y)
|
||||
{
|
||||
this->desc_y = desc_y;
|
||||
}
|
||||
|
||||
void PlottyFile::setUnitPara(std::string unit_para)
|
||||
{
|
||||
this->unit_para = unit_para;
|
||||
}
|
||||
|
||||
void PlottyFile::setDescPara(std::string desc_para)
|
||||
{
|
||||
this->desc_para = desc_para;
|
||||
}
|
||||
|
||||
FunctionType PlottyFile::getFunctionType() const
|
||||
{
|
||||
return function_type;
|
||||
}
|
||||
|
||||
uint8_t PlottyFile::getQuadrant() const
|
||||
{
|
||||
return quadrant;
|
||||
}
|
||||
|
||||
uint16_t PlottyFile::getRefX() const
|
||||
{
|
||||
return ref_x;
|
||||
}
|
||||
|
||||
uint16_t PlottyFile::getRefY() const
|
||||
{
|
||||
return ref_y;
|
||||
}
|
||||
|
||||
uint16_t PlottyFile::getParaFirstCurve() const
|
||||
{
|
||||
return para_first;
|
||||
}
|
||||
|
||||
uint16_t PlottyFile::getParaStepWidth() const
|
||||
{
|
||||
return para_stepwidth;
|
||||
}
|
||||
|
||||
std::string PlottyFile::getUnitX() const
|
||||
{
|
||||
return unit_x;
|
||||
}
|
||||
|
||||
std::string PlottyFile::getDescX() const
|
||||
{
|
||||
return desc_x;
|
||||
}
|
||||
|
||||
std::string PlottyFile::getUnitY() const
|
||||
{
|
||||
return unit_y;
|
||||
}
|
||||
|
||||
std::string PlottyFile::getDescY() const
|
||||
{
|
||||
return desc_y;
|
||||
}
|
||||
|
||||
std::string PlottyFile::getUnitPara() const
|
||||
{
|
||||
return unit_para;
|
||||
}
|
||||
|
||||
std::string PlottyFile::getDescPara() const
|
||||
{
|
||||
return desc_para;
|
||||
}
|
||||
|
||||
void PlottyFile::prepStr(std::string& str, uint8_t len)
|
||||
{
|
||||
if(str.length() > len)
|
||||
|
@ -18,41 +143,23 @@ void PlottyFile::prepStr(std::string& str, uint8_t len)
|
|||
}
|
||||
|
||||
void PlottyFile::writeToFile(std::string filename)
|
||||
{
|
||||
|
||||
command = 0x1D;
|
||||
title = "HTWK-HWLab";
|
||||
filetype = "MD";
|
||||
version = 1;
|
||||
subversion = 0;
|
||||
function_type = 'C';
|
||||
quadrant = 1;
|
||||
ref_x = 5000;
|
||||
ref_y = 50;
|
||||
para_first = 1;
|
||||
para_stepwidth = 1;
|
||||
unit_x = "Unit X";
|
||||
desc_x = "Desc X";
|
||||
unit_y = "Unit Y";
|
||||
desc_y = "Desc Y";
|
||||
unit_para = "Unit P";
|
||||
desc_para = "Desc P";
|
||||
|
||||
prepStr(title, 10);
|
||||
prepStr(unit_x, 10);
|
||||
prepStr(desc_x, 20);
|
||||
prepStr(unit_y, 10);
|
||||
prepStr(desc_y, 20);
|
||||
prepStr(unit_para, 10);
|
||||
prepStr(desc_para, 20);
|
||||
{
|
||||
prepStr(unit_x, STR_LEN_SHORT);
|
||||
prepStr(desc_x, STR_LEN_LARGE);
|
||||
prepStr(unit_y, STR_LEN_SHORT);
|
||||
prepStr(desc_y, STR_LEN_LARGE);
|
||||
prepStr(unit_para, STR_LEN_SHORT);
|
||||
prepStr(desc_para, STR_LEN_LARGE);
|
||||
|
||||
std::ofstream file(filename);
|
||||
|
||||
// write file header
|
||||
file.write(reinterpret_cast<char*>(&command), 1);
|
||||
file.write(title.c_str(), title.length());
|
||||
file.write(filetype.c_str(), 2);
|
||||
file.write(head.c_str(), head.length());
|
||||
file.write(filetype.c_str(), filetype.length());
|
||||
file.write(reinterpret_cast<char*>(&version), 2);
|
||||
file.write(reinterpret_cast<char*>(&subversion), 2);
|
||||
file.write(reinterpret_cast<char*>(&function_type), 1);
|
||||
file.put(static_cast<uint8_t>(function_type));
|
||||
file.write(reinterpret_cast<char*>(&quadrant), 1);
|
||||
file.write(reinterpret_cast<char*>(&ref_x), 2);
|
||||
file.write(reinterpret_cast<char*>(&ref_y), 2);
|
||||
|
@ -66,12 +173,13 @@ void PlottyFile::writeToFile(std::string filename)
|
|||
file.write(desc_para.c_str(), desc_para.length());
|
||||
file.write(reinterpret_cast<const char*>(&eof), 1);
|
||||
|
||||
// make sure header size is 256 Byte
|
||||
while(file.tellp() < 256)
|
||||
file.put(0);
|
||||
|
||||
for(Dot& dot : dots)
|
||||
{
|
||||
file.put((dot.getX() >> 8) | (static_cast<uint8_t>(dot.getColor()) << 2));
|
||||
file.put((dot.getX() >> 8) | (static_cast<uint8_t>(dot.getCurve()) << 2));
|
||||
file.put(dot.getX() & 0xFF);
|
||||
file.put(dot.getY() >> 8);
|
||||
file.put(dot.getY() & 0xFF);
|
||||
|
|
|
@ -7,27 +7,62 @@
|
|||
#include <vector>
|
||||
#include "dot.h"
|
||||
|
||||
enum FunctionType
|
||||
{
|
||||
CurveFamily = 'S',
|
||||
Curve = 'C',
|
||||
Level = 'P'
|
||||
};
|
||||
|
||||
class PlottyFile
|
||||
{
|
||||
public:
|
||||
void addDot(Dot& dot);
|
||||
void addDot(Dot dot);
|
||||
|
||||
void setFunctionType(FunctionType);
|
||||
void setQuadrant(uint8_t);
|
||||
void setRefX(uint16_t);
|
||||
void setRefY(uint16_t);
|
||||
void setParaFirstCurve(uint16_t);
|
||||
void setParaStepWidth(uint16_t);
|
||||
void setUnitX(std::string);
|
||||
void setDescX(std::string);
|
||||
void setUnitY(std::string);
|
||||
void setDescY(std::string);
|
||||
void setUnitPara(std::string);
|
||||
void setDescPara(std::string);
|
||||
|
||||
FunctionType getFunctionType(void) const;
|
||||
uint8_t getQuadrant(void) const;
|
||||
uint16_t getRefX(void) const;
|
||||
uint16_t getRefY(void) const;
|
||||
uint16_t getParaFirstCurve(void) const;
|
||||
uint16_t getParaStepWidth(void) const;
|
||||
std::string getUnitX(void) const;
|
||||
std::string getDescX(void) const;
|
||||
std::string getUnitY(void) const;
|
||||
std::string getDescY(void) const;
|
||||
std::string getUnitPara(void) const;
|
||||
std::string getDescPara(void) const;
|
||||
|
||||
void writeToFile(std::string filename);
|
||||
private:
|
||||
void prepStr(std::string& str, uint8_t len);
|
||||
|
||||
std::vector<Dot> dots;
|
||||
|
||||
int8_t command;
|
||||
std::string title;
|
||||
std::string filetype;
|
||||
int16_t version;
|
||||
int16_t subversion;
|
||||
uint8_t function_type;
|
||||
uint8_t quadrant;
|
||||
uint16_t ref_x;
|
||||
uint16_t ref_y;
|
||||
uint16_t para_first;
|
||||
uint16_t para_stepwidth;
|
||||
int8_t command = 0x1D;
|
||||
const std::string head = "HTWK-HWLab";
|
||||
const std::string filetype = "MD";
|
||||
int16_t version = 1;
|
||||
int16_t subversion = 0;
|
||||
FunctionType function_type = FunctionType::Curve;
|
||||
uint8_t quadrant = 1;
|
||||
uint16_t ref_x = 1023;
|
||||
uint16_t ref_y = 1023;
|
||||
uint16_t para_first = 1;
|
||||
uint16_t para_stepwidth = 1;
|
||||
std::string unit_x;
|
||||
std::string desc_x;
|
||||
std::string unit_y;
|
||||
|
@ -35,6 +70,9 @@ private:
|
|||
std::string unit_para;
|
||||
std::string desc_para;
|
||||
const uint8_t eof = 0xD;
|
||||
|
||||
constexpr static uint8_t STR_LEN_SHORT = 10;
|
||||
constexpr static uint8_t STR_LEN_LARGE = 20;
|
||||
};
|
||||
|
||||
#endif // PLOTTYFILE_H
|
||||
|
|
BIN
drv/plottyfile.o
BIN
drv/plottyfile.o
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue