Dump from SVN
7
PlottWareControl/ChangeLog.txt
Normal file
@ -0,0 +1,7 @@
|
||||
06 December 2017
|
||||
released version 0.1.5 of PlottWareControl
|
||||
|
||||
Change log:
|
||||
-Added: UI now completely ready and working (I hope so)
|
||||
-Typo: Todo: saving in JSON and class serializations
|
||||
|
60
PlottWareControl/GcodeEditorDialog.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include "GcodeEditorDialog.h"
|
||||
|
||||
//(*InternalHeaders(GcodeEditorDialog)
|
||||
#include <wx/settings.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/intl.h>
|
||||
#include <wx/string.h>
|
||||
//*)
|
||||
|
||||
//(*IdInit(GcodeEditorDialog)
|
||||
const long GcodeEditorDialog::ID_TEXTCTRL1 = wxNewId();
|
||||
const long GcodeEditorDialog::ID_STATICTEXT1 = wxNewId();
|
||||
const long GcodeEditorDialog::ID_BUTTON1 = wxNewId();
|
||||
const long GcodeEditorDialog::ID_BUTTON2 = wxNewId();
|
||||
//*)
|
||||
|
||||
BEGIN_EVENT_TABLE(GcodeEditorDialog,wxDialog)
|
||||
//(*EventTable(GcodeEditorDialog)
|
||||
//*)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
GcodeEditorDialog::GcodeEditorDialog(wxWindow* parent,wxWindowID id,std::string* _gcode,const wxPoint& pos,const wxSize& size)
|
||||
{
|
||||
gcode=_gcode;
|
||||
//(*Initialize(GcodeEditorDialog)
|
||||
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("id"));
|
||||
SetClientSize(wxSize(902,565));
|
||||
Move(wxDefaultPosition);
|
||||
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||
GcodeText = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxPoint(16,48), wxSize(872,500), wxTE_MULTILINE, wxDefaultValidator, _T("ID_TEXTCTRL1"));
|
||||
wxFont GcodeTextFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("Courier New"),wxFONTENCODING_DEFAULT);
|
||||
GcodeText->SetFont(GcodeTextFont);
|
||||
StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("G code editor"), wxPoint(24,16), wxDefaultSize, 0, _T("ID_STATICTEXT1"));
|
||||
wxFont StaticText1Font(16,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,wxEmptyString,wxFONTENCODING_DEFAULT);
|
||||
StaticText1->SetFont(StaticText1Font);
|
||||
SaveButton = new wxButton(this, ID_BUTTON1, _("Save"), wxPoint(704,16), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
|
||||
CancelButton = new wxButton(this, ID_BUTTON2, _("Cancel"), wxPoint(792,16), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
|
||||
|
||||
Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&GcodeEditorDialog::OnSaveButtonClick);
|
||||
Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&GcodeEditorDialog::OnCancelButtonClick);
|
||||
//*)
|
||||
GcodeText->SetValue(*gcode);
|
||||
}
|
||||
|
||||
GcodeEditorDialog::~GcodeEditorDialog()
|
||||
{
|
||||
//(*Destroy(GcodeEditorDialog)
|
||||
//*)
|
||||
}
|
||||
|
||||
|
||||
void GcodeEditorDialog::OnSaveButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
*gcode=GcodeText->GetValue();
|
||||
}
|
||||
|
||||
void GcodeEditorDialog::OnCancelButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
GcodeText->SetValue(*gcode);
|
||||
}
|
47
PlottWareControl/GcodeEditorDialog.h
Normal file
@ -0,0 +1,47 @@
|
||||
#ifndef GCODEEDITORDIALOG_H
|
||||
#define GCODEEDITORDIALOG_H
|
||||
|
||||
#include <string>
|
||||
|
||||
//(*Headers(GcodeEditorDialog)
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
//*)
|
||||
|
||||
class GcodeEditorDialog: public wxDialog
|
||||
{
|
||||
public:
|
||||
|
||||
GcodeEditorDialog(wxWindow* parent,wxWindowID id=wxID_ANY,std::string* _gcode=NULL,const wxPoint& pos=wxDefaultPosition,const wxSize& size=wxDefaultSize);
|
||||
virtual ~GcodeEditorDialog();
|
||||
|
||||
//(*Declarations(GcodeEditorDialog)
|
||||
wxTextCtrl* GcodeText;
|
||||
wxStaticText* StaticText1;
|
||||
wxButton* CancelButton;
|
||||
wxButton* SaveButton;
|
||||
//*)
|
||||
|
||||
protected:
|
||||
|
||||
//(*Identifiers(GcodeEditorDialog)
|
||||
static const long ID_TEXTCTRL1;
|
||||
static const long ID_STATICTEXT1;
|
||||
static const long ID_BUTTON1;
|
||||
static const long ID_BUTTON2;
|
||||
//*)
|
||||
|
||||
private:
|
||||
|
||||
//(*Handlers(GcodeEditorDialog)
|
||||
void OnSaveButtonClick(wxCommandEvent& event);
|
||||
void OnCancelButtonClick(wxCommandEvent& event);
|
||||
//*)
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
std::string* gcode;
|
||||
};
|
||||
|
||||
#endif
|
619
PlottWareControl/LICENSE.txt
Normal file
@ -0,0 +1,619 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
146
PlottWareControl/PlottWareControl.cbp
Normal file
@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_project_file>
|
||||
<FileVersion major="1" minor="6" />
|
||||
<Project>
|
||||
<Option title="PlottWareControl" />
|
||||
<Option pch_mode="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Build>
|
||||
<Target title="Release">
|
||||
<Option output="bin/Release/PlottWareControl" prefix_auto="1" extension_auto="1" />
|
||||
<Option object_output="obj/Release/" />
|
||||
<Option type="0" />
|
||||
<Option compiler="gcc" />
|
||||
<Option projectLinkerOptionsRelation="2" />
|
||||
<Compiler>
|
||||
<Add option="-O2" />
|
||||
<Add option="-std=c++14" />
|
||||
<Add option="-m64" />
|
||||
<Add directory="D:/wxWidgets-3.0.3/lib/gcc_dll/mswu" />
|
||||
<Add directory="D:/opencv-3.3.1/build/include" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="D:/wxWidgets-3.0.3/lib/gcc_dll/mswu" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add option="-s" />
|
||||
<Add option="-m64" />
|
||||
<Add library="libwxmsw30u_core.a" />
|
||||
<Add library="libwxbase30u.a" />
|
||||
<Add library="libwxpng.a" />
|
||||
<Add library="libwxzlib.a" />
|
||||
<Add library="libopencv_core331.dll.a" />
|
||||
<Add library="libopencv_imgproc331.dll.a" />
|
||||
<Add library="libopencv_imgcodecs331.dll.a" />
|
||||
<Add library="libopencv_highgui331.dll.a" />
|
||||
<Add directory="D:/wxWidgets-3.0.3/lib/gcc_dll" />
|
||||
<Add directory="D:/opencv-3.3.1/build/x64/gcc/lib" />
|
||||
<Add directory="D:/opencv-3.3.1/build/x64/gcc/bin" />
|
||||
</Linker>
|
||||
</Target>
|
||||
<Target title="Debug">
|
||||
<Option output="bin/Release/PlottWareControl" prefix_auto="1" extension_auto="1" />
|
||||
<Option object_output="obj/Release/" />
|
||||
<Option type="1" />
|
||||
<Option compiler="gcc" />
|
||||
<Option use_console_runner="0" />
|
||||
<Option projectLinkerOptionsRelation="2" />
|
||||
<Compiler>
|
||||
<Add option="-O2" />
|
||||
<Add option="-std=c++14" />
|
||||
<Add option="-m64" />
|
||||
<Add option="-DPWC_DEBUG" />
|
||||
<Add directory="D:/wxWidgets-3.0.3/lib/gcc_dll/mswu" />
|
||||
<Add directory="D:/opencv-3.3.1/build/include" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="D:/wxWidgets-3.0.3/lib/gcc_dll/mswu" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add option="-s" />
|
||||
<Add option="-m64" />
|
||||
<Add library="libwxmsw30u_core.a" />
|
||||
<Add library="libwxbase30u.a" />
|
||||
<Add library="libwxpng.a" />
|
||||
<Add library="libwxzlib.a" />
|
||||
<Add library="libopencv_core331.dll.a" />
|
||||
<Add library="libopencv_imgproc331.dll.a" />
|
||||
<Add library="libopencv_imgcodecs331.dll.a" />
|
||||
<Add library="libopencv_highgui331.dll.a" />
|
||||
<Add directory="D:/wxWidgets-3.0.3/lib/gcc_dll" />
|
||||
<Add directory="D:/opencv-3.3.1/build/x64/gcc/lib" />
|
||||
<Add directory="D:/opencv-3.3.1/build/x64/gcc/bin" />
|
||||
</Linker>
|
||||
</Target>
|
||||
</Build>
|
||||
<Compiler>
|
||||
<Add option="-pipe" />
|
||||
<Add option="-mthreads" />
|
||||
<Add option="-D__GNUWIN32__" />
|
||||
<Add option="-D__WXMSW__" />
|
||||
<Add option="-DWXUSINGDLL" />
|
||||
<Add option="-DwxUSE_UNICODE" />
|
||||
<Add option="-Wall" />
|
||||
<Add directory="D:/wxWidgets-3.0.3/include" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="D:/wxWidgets-3.0.3/include" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add option="-mthreads" />
|
||||
</Linker>
|
||||
<Unit filename="GcodeEditorDialog.cpp" />
|
||||
<Unit filename="GcodeEditorDialog.h" />
|
||||
<Unit filename="PlottWareControlApp.cpp" />
|
||||
<Unit filename="PlottWareControlApp.h" />
|
||||
<Unit filename="PlottWareControlMain.cpp" />
|
||||
<Unit filename="PlottWareControlMain.h" />
|
||||
<Unit filename="SettingDialog.cpp" />
|
||||
<Unit filename="SettingDialog.h" />
|
||||
<Unit filename="image.cpp" />
|
||||
<Unit filename="image.h" />
|
||||
<Unit filename="imageViewer.cpp" />
|
||||
<Unit filename="imageViewer.h" />
|
||||
<Unit filename="json.hpp" />
|
||||
<Unit filename="point.cpp" />
|
||||
<Unit filename="point.h" />
|
||||
<Unit filename="printer.cpp" />
|
||||
<Unit filename="printer.h" />
|
||||
<Unit filename="project.cpp" />
|
||||
<Unit filename="project.h" />
|
||||
<Unit filename="res/gCode.txt">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="res/icon.bmp" />
|
||||
<Unit filename="resource.rc">
|
||||
<Option compilerVar="WINDRES" />
|
||||
</Unit>
|
||||
<Unit filename="serial.cpp" />
|
||||
<Unit filename="serial.h" />
|
||||
<Unit filename="settings.cpp" />
|
||||
<Unit filename="settings.h" />
|
||||
<Unit filename="version.h" />
|
||||
<Unit filename="wxsmith/GcodeEditorDialog.wxs" />
|
||||
<Unit filename="wxsmith/PlottWareControlframe.wxs" />
|
||||
<Unit filename="wxsmith/SettingDialog.wxs" />
|
||||
<Extensions>
|
||||
<AutoVersioning>
|
||||
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="5" />
|
||||
<Settings autoincrement="1" date_declarations="1" use_define="0" update_manifest="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
|
||||
<Changes_Log show_changes_editor="1" app_title="released version %M.%m.%b of %p" changeslog_path="ChangeLog.txt" />
|
||||
<Code header_guard="VERSION_H" namespace="Version" prefix="" />
|
||||
</AutoVersioning>
|
||||
<code_completion />
|
||||
<envvars />
|
||||
<debugger />
|
||||
<wxsmith version="1">
|
||||
<gui name="wxWidgets" src="PlottWareControlApp.cpp" main="PlottWareControlFrame" init_handlers="necessary" language="CPP" />
|
||||
<resources>
|
||||
<wxFrame wxs="wxsmith/PlottWareControlframe.wxs" src="PlottWareControlMain.cpp" hdr="PlottWareControlMain.h" fwddecl="0" i18n="1" name="PlottWareControlFrame" language="CPP" />
|
||||
<wxDialog wxs="wxsmith/SettingDialog.wxs" src="SettingDialog.cpp" hdr="SettingDialog.h" fwddecl="0" i18n="1" name="SettingDialog" language="CPP" />
|
||||
<wxDialog wxs="wxsmith/GcodeEditorDialog.wxs" src="GcodeEditorDialog.cpp" hdr="GcodeEditorDialog.h" fwddecl="0" i18n="1" name="GcodeEditorDialog" language="CPP" />
|
||||
</resources>
|
||||
</wxsmith>
|
||||
</Extensions>
|
||||
</Project>
|
||||
</CodeBlocks_project_file>
|
4078
PlottWareControl/PlottWareControl.depend
Normal file
105
PlottWareControl/PlottWareControl.layout
Normal file
@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_layout_file>
|
||||
<FileVersion major="1" minor="0" />
|
||||
<ActiveTarget name="Release" />
|
||||
<File name="project.cpp" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1901" topLine="129" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="settings.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="297" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="PlottWareControlMain.cpp" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="49963" topLine="810" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="imageViewer.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="493" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="SettingDialog.cpp" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="10102" topLine="250" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="GcodeEditorDialog.cpp" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2393" topLine="4" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="json.hpp" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3176" topLine="39" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="PlottWareControlMain.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="472" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="imageViewer.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="480" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="PlottWareControlApp.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="801" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="printer.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="673" topLine="5" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="SettingDialog.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="141" topLine="12" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="image.cpp" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="798" topLine="27" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="serial.cpp" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3692" topLine="92" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="GcodeEditorDialog.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="348" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="settings.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="348" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="printer.cpp" open="1" top="1" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="988" topLine="12" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="image.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="517" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="project.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1487" topLine="22" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="serial.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="107" topLine="6" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
33
PlottWareControl/PlottWareControlApp.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
/***************************************************************
|
||||
* Name: PlottWareControlApp.cpp
|
||||
* Purpose: Code for Application Class
|
||||
* Author: Fandly Gergo (fandlygergo@gmail.hu)
|
||||
* Created: 2017-11-25
|
||||
* Copyright: Fandly Gergo (systemtest.tk)
|
||||
* License:
|
||||
**************************************************************/
|
||||
|
||||
#include "PlottWareControlApp.h"
|
||||
|
||||
//(*AppHeaders
|
||||
#include "PlottWareControlMain.h"
|
||||
#include <wx/image.h>
|
||||
//*)
|
||||
|
||||
IMPLEMENT_APP(PlottWareControlApp);
|
||||
|
||||
bool PlottWareControlApp::OnInit()
|
||||
{
|
||||
//(*AppInitialize
|
||||
bool wxsOK = true;
|
||||
wxInitAllImageHandlers();
|
||||
if ( wxsOK )
|
||||
{
|
||||
PlottWareControlFrame* Frame = new PlottWareControlFrame(0);
|
||||
Frame->Show();
|
||||
SetTopWindow(Frame);
|
||||
}
|
||||
//*)
|
||||
return wxsOK;
|
||||
|
||||
}
|
21
PlottWareControl/PlottWareControlApp.h
Normal file
@ -0,0 +1,21 @@
|
||||
/***************************************************************
|
||||
* Name: PlottWareControlApp.h
|
||||
* Purpose: Defines Application Class
|
||||
* Author: Fandly Gergo (fandlygergo@gmail.hu)
|
||||
* Created: 2017-11-25
|
||||
* Copyright: Fandly Gergo (systemtest.tk)
|
||||
* License:
|
||||
**************************************************************/
|
||||
|
||||
#ifndef PLOTTWARECONTROLAPP_H
|
||||
#define PLOTTWARECONTROLAPP_H
|
||||
|
||||
#include <wx/app.h>
|
||||
|
||||
class PlottWareControlApp : public wxApp
|
||||
{
|
||||
public:
|
||||
virtual bool OnInit();
|
||||
};
|
||||
|
||||
#endif // PLOTTWARECONTROLAPP_H
|
1029
PlottWareControl/PlottWareControlMain.cpp
Normal file
303
PlottWareControl/PlottWareControlMain.h
Normal file
@ -0,0 +1,303 @@
|
||||
/***************************************************************
|
||||
* Name: PlottWareControlMain.h
|
||||
* Purpose: Defines Application Frame
|
||||
* Author: Fandly Gergo (fandlygergo@gmail.hu)
|
||||
* Created: 2017-11-25
|
||||
* Copyright: Fandly Gergo (systemtest.tk)
|
||||
* License:
|
||||
**************************************************************/
|
||||
|
||||
#ifndef PLOTTWARECONTROLMAIN_H
|
||||
#define PLOTTWARECONTROLMAIN_H
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdio>
|
||||
#include <sstream>
|
||||
|
||||
#include "settings.h"
|
||||
#include "project.h"
|
||||
|
||||
//(*Headers(PlottWareControlFrame)
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/menu.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wx/listbox.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/radiobut.h>
|
||||
#include <wx/stopwatch.h>
|
||||
#include <wx/slider.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/filedlg.h>
|
||||
#include <wx/choice.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/frame.h>
|
||||
#include <wx/timer.h>
|
||||
#include <wx/gauge.h>
|
||||
#include <wx/statusbr.h>
|
||||
//*)
|
||||
|
||||
class PlottWareControlFrame: public wxFrame
|
||||
{
|
||||
public:
|
||||
|
||||
PlottWareControlFrame(wxWindow* parent,wxWindowID id = -1);
|
||||
virtual ~PlottWareControlFrame();
|
||||
Settings* getSettings();
|
||||
Project* getProject();
|
||||
|
||||
private:
|
||||
|
||||
//(*Handlers(PlottWareControlFrame)
|
||||
void OnQuit(wxCommandEvent& event);
|
||||
void OnAbout(wxCommandEvent& event);
|
||||
void OnListBox1Select(wxCommandEvent& event);
|
||||
void OnScrollBar1Scroll(wxScrollEvent& event);
|
||||
void OnMenuItemSettingsSelected(wxCommandEvent& event);
|
||||
void OnProjNewButtonClick(wxCommandEvent& event);
|
||||
void OnProjOpenButtonClick(wxCommandEvent& event);
|
||||
void OnProjCloseButtonClick(wxCommandEvent& event);
|
||||
void OnImagesAddButtonClick(wxCommandEvent& event);
|
||||
void OnImagesDeleteButtonClick(wxCommandEvent& event);
|
||||
void OnImagesImageListBoxSelect(wxCommandEvent& event);
|
||||
void OnImagesPositionXSpinnerChange(wxSpinEvent& event);
|
||||
void OnImagesPositionYSpinnerChange(wxSpinEvent& event);
|
||||
void OnImagesCropX1SpinnerChange(wxSpinEvent& event);
|
||||
void OnImagesCropY1SpinnerChange(wxSpinEvent& event);
|
||||
void OnImagesCropX2SpinnerChange(wxSpinEvent& event);
|
||||
void OnImagesCropY2SpinnerChange(wxSpinEvent& event);
|
||||
void OnImagesPreviewButtonClick(wxCommandEvent& event);
|
||||
void OnImagesImageListMoveUpButtonClick(wxCommandEvent& event);
|
||||
void OnImagesImageListMoveDownButtonClick(wxCommandEvent& event);
|
||||
void OnImagesScaleTextText(wxCommandEvent& event);
|
||||
void OnProcessingRetrAllRadioSelect(wxCommandEvent& event);
|
||||
void OnProcessingRetrExtRadioSelect(wxCommandEvent& event);
|
||||
void OnProcessingCannyThreshSliderCmdScroll(wxScrollEvent& event);
|
||||
void OnProcessingPreviewButtonClick(wxCommandEvent& event);
|
||||
void OnProcessingColorLineSelectSelect(wxCommandEvent& event);
|
||||
void OnProcessingColorColorSelectSelect(wxCommandEvent& event);
|
||||
void OnProcessingColorForAllButtonClick(wxCommandEvent& event);
|
||||
void OnGcodeGenerateButtonClick(wxCommandEvent& event);
|
||||
void OnGcodeEditButtonClick(wxCommandEvent& event);
|
||||
void OnGcodeExportButtonClick(wxCommandEvent& event);
|
||||
void OnNotebook1PageChanged(wxNotebookEvent& event);
|
||||
void OnPrintingPrinterConnectButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterHomeButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterPowerButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterHeadSelectSelect(wxCommandEvent& event);
|
||||
void OnPrintingPrinterUpButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterDownButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterRightButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterLeftButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingPrinterConsoleText(wxCommandEvent& event);
|
||||
void OnPrintingPrinterConsoleTextEnter(wxCommandEvent& event);
|
||||
void OnPrintingPrintButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingElapsedTimeCheckerTimerTrigger(wxTimerEvent& event);
|
||||
void OnButton1Click(wxCommandEvent& event);
|
||||
void OnPrintingStopButtonClick(wxCommandEvent& event);
|
||||
void OnPrintingEmergencyButtonClick(wxCommandEvent& event);
|
||||
//*)
|
||||
|
||||
//(*Identifiers(PlottWareControlFrame)
|
||||
static const long ID_BUTTON1;
|
||||
static const long ID_STATICTEXT1;
|
||||
static const long ID_BUTTON2;
|
||||
static const long ID_BUTTON3;
|
||||
static const long ID_BUTTON4;
|
||||
static const long ID_PANEL2;
|
||||
static const long ID_STATICTEXT2;
|
||||
static const long ID_LISTBOX1;
|
||||
static const long ID_BUTTON5;
|
||||
static const long ID_BUTTON6;
|
||||
static const long ID_BUTTON9;
|
||||
static const long ID_BUTTON23;
|
||||
static const long ID_BUTTON24;
|
||||
static const long ID_STATICTEXT25;
|
||||
static const long ID_STATICTEXT26;
|
||||
static const long ID_STATICTEXT27;
|
||||
static const long ID_TEXTCTRL2;
|
||||
static const long ID_SPINCTRL1;
|
||||
static const long ID_SPINCTRL2;
|
||||
static const long ID_SPINCTRL3;
|
||||
static const long ID_SPINCTRL4;
|
||||
static const long ID_SPINCTRL5;
|
||||
static const long ID_SPINCTRL6;
|
||||
static const long ID_STATICTEXT4;
|
||||
static const long ID_STATICTEXT5;
|
||||
static const long ID_STATICTEXT3;
|
||||
static const long ID_STATICTEXT7;
|
||||
static const long ID_STATICTEXT9;
|
||||
static const long ID_STATICTEXT8;
|
||||
static const long ID_STATICTEXT10;
|
||||
static const long ID_STATICTEXT6;
|
||||
static const long ID_PANEL3;
|
||||
static const long ID_STATICTEXT12;
|
||||
static const long ID_STATICTEXT11;
|
||||
static const long ID_RADIOBUTTON1;
|
||||
static const long ID_RADIOBUTTON2;
|
||||
static const long ID_STATICTEXT13;
|
||||
static const long ID_SLIDER1;
|
||||
static const long ID_STATICTEXT14;
|
||||
static const long ID_STATICTEXT15;
|
||||
static const long ID_STATICTEXT16;
|
||||
static const long ID_CHOICE1;
|
||||
static const long ID_CHOICE2;
|
||||
static const long ID_BUTTON25;
|
||||
static const long ID_BUTTON8;
|
||||
static const long ID_PANEL4;
|
||||
static const long ID_STATICTEXT17;
|
||||
static const long ID_BUTTON10;
|
||||
static const long ID_BUTTON12;
|
||||
static const long ID_BUTTON13;
|
||||
static const long ID_PANEL5;
|
||||
static const long ID_STATICTEXT18;
|
||||
static const long ID_STATICTEXT19;
|
||||
static const long ID_STATICTEXT20;
|
||||
static const long ID_STATICTEXT21;
|
||||
static const long ID_BUTTON7;
|
||||
static const long ID_BUTTON16;
|
||||
static const long ID_BUTTON17;
|
||||
static const long ID_BUTTON18;
|
||||
static const long ID_BUTTON19;
|
||||
static const long ID_BUTTON20;
|
||||
static const long ID_CHOICE3;
|
||||
static const long ID_STATICTEXT22;
|
||||
static const long ID_BUTTON21;
|
||||
static const long ID_SPINCTRL7;
|
||||
static const long ID_STATICTEXT24;
|
||||
static const long ID_STATICTEXT23;
|
||||
static const long ID_STATICTEXT28;
|
||||
static const long ID_STATICTEXT29;
|
||||
static const long ID_STATICTEXT30;
|
||||
static const long ID_STATICTEXT32;
|
||||
static const long ID_STATICTEXT33;
|
||||
static const long ID_STATICTEXT31;
|
||||
static const long ID_TEXTCTRL1;
|
||||
static const long ID_LISTBOX2;
|
||||
static const long ID_STATICTEXT34;
|
||||
static const long ID_PANEL1;
|
||||
static const long ID_BUTTON11;
|
||||
static const long ID_BUTTON14;
|
||||
static const long ID_BUTTON15;
|
||||
static const long ID_STATICTEXT35;
|
||||
static const long ID_GAUGE1;
|
||||
static const long ID_STATICTEXT36;
|
||||
static const long ID_STATICTEXT37;
|
||||
static const long ID_PANEL6;
|
||||
static const long ID_NOTEBOOK2;
|
||||
static const long MenuSettingItem;
|
||||
static const long MenuQuitItem;
|
||||
static const long idMenuAbout;
|
||||
static const long ID_STATUSBAR1;
|
||||
static const long ID_MESSAGEDIALOG1;
|
||||
static const long ID_TIMER1;
|
||||
//*)
|
||||
|
||||
//(*Declarations(PlottWareControlFrame)
|
||||
wxStaticText* StaticText10;
|
||||
wxStaticText* StaticText22;
|
||||
wxSpinCtrl* ImagesCropX1Spinner;
|
||||
wxStaticText* StaticText9;
|
||||
wxStaticText* StaticText20;
|
||||
wxChoice* ProcessingColorLineSelect;
|
||||
wxButton* ProjCloseButton;
|
||||
wxListBox* ImagesImageListBox;
|
||||
wxNotebook* MenuChanger;
|
||||
wxButton* ProcessingColorForAllButton;
|
||||
wxButton* ImagesPreviewButton;
|
||||
wxStaticText* StaticText29;
|
||||
wxButton* PrintingEmergencyButton;
|
||||
wxStaticText* StaticText13;
|
||||
wxStaticText* StaticText2;
|
||||
wxStaticText* StaticText14;
|
||||
wxRadioButton* ProcessingRetrAllRadio;
|
||||
wxStaticText* PrintingStatusLabel;
|
||||
wxPanel* MenuChangerProjectPage;
|
||||
wxStaticText* StaticText26;
|
||||
wxStaticText* StaticText6;
|
||||
wxSpinCtrl* ImagesPositionXSpinner;
|
||||
wxPanel* MenuChangerPrintingPage;
|
||||
wxChoice* ProcessingColorColorSelect;
|
||||
wxButton* PrintingPrinterPowerButton;
|
||||
wxButton* PrintingPrinterConnectButton;
|
||||
wxSpinCtrl* ImagesCropY1Spinner;
|
||||
wxSpinCtrl* ImagesCropY2Spinner;
|
||||
wxButton* ImagesImageListMoveDownButton;
|
||||
wxStaticText* StaticText19;
|
||||
wxRadioButton* ProcessingRetrExtRadio;
|
||||
wxButton* ProjOpenButton;
|
||||
wxStaticText* StaticText8;
|
||||
wxTextCtrl* ImagesScaleText;
|
||||
wxStaticText* StaticText11;
|
||||
wxStaticText* StaticText18;
|
||||
wxButton* PrintingPrinterRightButton;
|
||||
wxButton* PrintingPrinterDownButton;
|
||||
wxStaticText* PrintingPrinterStatusLabel;
|
||||
wxPanel* Panel1;
|
||||
wxStaticText* StaticText1;
|
||||
wxStaticText* StaticText27;
|
||||
wxFileDialog* FileDialog1;
|
||||
wxButton* ImagesDeleteButton;
|
||||
wxPanel* MenuChangerProcessingPage;
|
||||
wxStaticText* StaticText3;
|
||||
wxSpinCtrl* ImagesCropX2Spinner;
|
||||
wxButton* PrintingStopButton;
|
||||
wxListBox* PrintingPrinterLog;
|
||||
wxButton* GcodeEditButton;
|
||||
wxTextCtrl* PrintingPrinterConsole;
|
||||
wxStaticText* StaticText21;
|
||||
wxTimer PrintingElapsedTimeCheckerTimer;
|
||||
wxStaticText* StaticText23;
|
||||
wxButton* ProcessingPreviewButton;
|
||||
wxStaticText* StaticText24;
|
||||
wxButton* ImagesAddButton;
|
||||
wxButton* PrintingPrinterUpButton;
|
||||
wxPanel* MenuChangerGcodePage;
|
||||
wxStaticText* PrintingPrinterPowerLabel;
|
||||
wxStaticText* StaticText5;
|
||||
wxStaticText* StaticText7;
|
||||
wxButton* ProjNewButton;
|
||||
wxButton* PrintingPrinterLeftButton;
|
||||
wxStatusBar* StatusBar1;
|
||||
wxButton* ImagesImageListMoveUpButton;
|
||||
wxStopWatch PrintingStopWatch;
|
||||
wxButton* PrintingPrinterHomeButton;
|
||||
wxSlider* ProcessingCannyThreshSlider;
|
||||
wxStaticText* StaticText28;
|
||||
wxGauge* PrintingStatusGauge;
|
||||
wxChoice* PrintingPrinterHeadSelect;
|
||||
wxPanel* MenuChangerImagesPage;
|
||||
wxStaticText* ImagesSizeLabel;
|
||||
wxStaticText* StaticText15;
|
||||
wxStaticText* StaticText12;
|
||||
wxButton* ProjSaveButton;
|
||||
wxStaticText* PrintingPrinterYLabel;
|
||||
wxStaticText* PrintingElapsedTimeLabelLabel;
|
||||
wxMessageDialog* MessageDialog1;
|
||||
wxMenuItem* MenuItemSettings;
|
||||
wxStaticText* StaticText25;
|
||||
wxStaticText* StaticText17;
|
||||
wxStaticText* StaticText4;
|
||||
wxButton* GcodeExportButton;
|
||||
wxStaticText* PrintingElapsedTimeLabel;
|
||||
wxStaticText* PrintingPrinterXLabel;
|
||||
wxStaticText* StaticText16;
|
||||
wxButton* PrintingPrintButton;
|
||||
wxSpinCtrl* PrintingPrinterMoveSpinner;
|
||||
wxSpinCtrl* ImagesPositionYSpinner;
|
||||
wxButton* GcodeGenerateButton;
|
||||
//*)
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
Settings *settings;
|
||||
Project *project;
|
||||
|
||||
//helper functions
|
||||
void projectControlEnable(bool to);
|
||||
void printerControlEnable(bool to);
|
||||
void printingControlShow(bool to);
|
||||
};
|
||||
|
||||
#endif // PLOTTWARECONTROLMAIN_H
|
BIN
PlottWareControl/Release/PlottWareControl.exe
Normal file
BIN
PlottWareControl/Release/Release.zip
Normal file
BIN
PlottWareControl/Release/libopencv_core331.dll
Normal file
BIN
PlottWareControl/Release/libopencv_highgui331.dll
Normal file
BIN
PlottWareControl/Release/libopencv_imgcodecs331.dll
Normal file
BIN
PlottWareControl/Release/libopencv_imgproc331.dll
Normal file
21
PlottWareControl/Release/res/gCode.txt
Normal file
@ -0,0 +1,21 @@
|
||||
commands:
|
||||
G0 Xx Yy - Rapid move to (z,y) coordinates
|
||||
G1 Xx Yy - Move to (x,y) coordinates
|
||||
G4 Pn - Wait n ms
|
||||
M300 S10 - Pen down
|
||||
M300 S50 - Pen up
|
||||
Tn - change to nth tool
|
||||
G28 - Home
|
||||
G90 - Set to absolute positioning
|
||||
G91 - Set to relative positioning
|
||||
M2 - Program end
|
||||
M17 - Enable steppers
|
||||
M18 - Disable steppers
|
||||
M80 - ATX power on
|
||||
M81 - ATX power off
|
||||
M112 - Emergency stop
|
||||
M114 - Get current position
|
||||
M703 - Get info from printer firmware
|
||||
M118 OK - Response to host when line done
|
||||
; - line comment
|
||||
(...) - block comment
|
BIN
PlottWareControl/Release/res/icon.bmp
Normal file
After Width: | Height: | Size: 117 KiB |
BIN
PlottWareControl/Release/wxbase30u_gcc510TDM_x64.dll
Normal file
BIN
PlottWareControl/Release/wxmsw30u_core_gcc510TDM_x64.dll
Normal file
189
PlottWareControl/SettingDialog.cpp
Normal file
@ -0,0 +1,189 @@
|
||||
#include "SettingDialog.h"
|
||||
|
||||
#include <string>
|
||||
#include "printer.h"
|
||||
|
||||
//(*InternalHeaders(SettingDialog)
|
||||
#include <wx/settings.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/intl.h>
|
||||
#include <wx/string.h>
|
||||
//*)
|
||||
|
||||
//(*IdInit(SettingDialog)
|
||||
const long SettingDialog::ID_STATICTEXT1 = wxNewId();
|
||||
const long SettingDialog::ID_STATICBOX1 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT2 = wxNewId();
|
||||
const long SettingDialog::ID_SPINCTRL1 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT3 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT4 = wxNewId();
|
||||
const long SettingDialog::ID_SPINCTRL2 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT5 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT6 = wxNewId();
|
||||
const long SettingDialog::ID_SPINCTRL3 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT7 = wxNewId();
|
||||
const long SettingDialog::ID_LISTBOX1 = wxNewId();
|
||||
const long SettingDialog::ID_TEXTCTRL1 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT8 = wxNewId();
|
||||
const long SettingDialog::ID_BUTTON1 = wxNewId();
|
||||
const long SettingDialog::ID_STATICLINE1 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT9 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT10 = wxNewId();
|
||||
const long SettingDialog::ID_BUTTON2 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT11 = wxNewId();
|
||||
const long SettingDialog::ID_CHECKBOX1 = wxNewId();
|
||||
const long SettingDialog::ID_BUTTON3 = wxNewId();
|
||||
const long SettingDialog::ID_BUTTON4 = wxNewId();
|
||||
const long SettingDialog::ID_CHOICE2 = wxNewId();
|
||||
const long SettingDialog::ID_SPINCTRL4 = wxNewId();
|
||||
const long SettingDialog::ID_STATICTEXT12 = wxNewId();
|
||||
const long SettingDialog::ID_MESSAGEDIALOG1 = wxNewId();
|
||||
//*)
|
||||
|
||||
BEGIN_EVENT_TABLE(SettingDialog,wxDialog)
|
||||
//(*EventTable(SettingDialog)
|
||||
//*)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
SettingDialog::SettingDialog(wxWindow* parent,wxWindowID id,PlottWareControlFrame *_p)
|
||||
{
|
||||
p=_p;
|
||||
//(*Initialize(SettingDialog)
|
||||
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("id"));
|
||||
SetClientSize(wxSize(389,432));
|
||||
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
||||
StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("Settings"), wxPoint(0,8), wxDefaultSize, 0, _T("ID_STATICTEXT1"));
|
||||
wxFont StaticText1Font(14,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,wxEmptyString,wxFONTENCODING_DEFAULT);
|
||||
StaticText1->SetFont(StaticText1Font);
|
||||
StaticBox1 = new wxStaticBox(this, ID_STATICBOX1, _("Printer"), wxPoint(8,48), wxSize(376,280), 0, _T("ID_STATICBOX1"));
|
||||
StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("Length:"), wxPoint(32,72), wxDefaultSize, 0, _T("ID_STATICTEXT2"));
|
||||
LengthSpinner = new wxSpinCtrl(this, ID_SPINCTRL1, _T("0"), wxPoint(104,64), wxDefaultSize, 0, -1, 100000, 0, _T("ID_SPINCTRL1"));
|
||||
LengthSpinner->SetValue(_T("0"));
|
||||
LengthSpinner->SetToolTip(_("Length of printing area (-1 for infinite)"));
|
||||
StaticText3 = new wxStaticText(this, ID_STATICTEXT3, _("mm"), wxPoint(248,72), wxDefaultSize, 0, _T("ID_STATICTEXT3"));
|
||||
StaticText4 = new wxStaticText(this, ID_STATICTEXT4, _("Width:"), wxPoint(32,96), wxDefaultSize, 0, _T("ID_STATICTEXT4"));
|
||||
WidthSpinner = new wxSpinCtrl(this, ID_SPINCTRL2, _T("0"), wxPoint(104,88), wxDefaultSize, 0, -1, 100000, 0, _T("ID_SPINCTRL2"));
|
||||
WidthSpinner->SetValue(_T("0"));
|
||||
WidthSpinner->SetToolTip(_("Width of printing area (-1 for infinite)"));
|
||||
StaticText5 = new wxStaticText(this, ID_STATICTEXT5, _("mm"), wxPoint(248,96), wxDefaultSize, 0, _T("ID_STATICTEXT5"));
|
||||
StaticText6 = new wxStaticText(this, ID_STATICTEXT6, _("Pen count:"), wxPoint(32,120), wxDefaultSize, 0, _T("ID_STATICTEXT6"));
|
||||
PencountSpinner = new wxSpinCtrl(this, ID_SPINCTRL3, _T("0"), wxPoint(104,112), wxDefaultSize, 0, 0, 100, 0, _T("ID_SPINCTRL3"));
|
||||
PencountSpinner->SetValue(_T("0"));
|
||||
PencountSpinner->SetToolTip(_("Number of available drawing pens"));
|
||||
StaticText7 = new wxStaticText(this, ID_STATICTEXT7, _("Pens:"), wxPoint(32,144), wxDefaultSize, 0, _T("ID_STATICTEXT7"));
|
||||
PensListBox = new wxListBox(this, ID_LISTBOX1, wxPoint(104,136), wxSize(120,80), 0, 0, 0, wxDefaultValidator, _T("ID_LISTBOX1"));
|
||||
PensListBox->SetToolTip(_("List of pens"));
|
||||
PenColorText = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxPoint(264,152), wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
|
||||
PenColorText->SetToolTip(_("Color of pen"));
|
||||
StaticText8 = new wxStaticText(this, ID_STATICTEXT8, _("Color:"), wxPoint(232,160), wxDefaultSize, 0, _T("ID_STATICTEXT8"));
|
||||
PenColorSetButton = new wxButton(this, ID_BUTTON1, _("Set"), wxPoint(232,176), wxSize(136,23), 0, wxDefaultValidator, _T("ID_BUTTON1"));
|
||||
PenColorSetButton->SetToolTip(_("Set color"));
|
||||
StaticLine1 = new wxStaticLine(this, ID_STATICLINE1, wxPoint(24,232), wxSize(344,3), wxLI_HORIZONTAL, _T("ID_STATICLINE1"));
|
||||
StaticText9 = new wxStaticText(this, ID_STATICTEXT9, _("Serial port:"), wxPoint(32,248), wxDefaultSize, 0, _T("ID_STATICTEXT9"));
|
||||
StaticText10 = new wxStaticText(this, ID_STATICTEXT10, _("Baud rate:"), wxPoint(32,272), wxDefaultSize, 0, _T("ID_STATICTEXT10"));
|
||||
PrinterAutoDetectButton = new wxButton(this, ID_BUTTON2, _("Auto detect"), wxPoint(32,296), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
|
||||
PrinterAutoDetectButton->SetToolTip(_("Auto detect printer settings (only works if serial port and baud rate is set)"));
|
||||
StaticText11 = new wxStaticText(this, ID_STATICTEXT11, _("Debug mode:"), wxPoint(16,352), wxDefaultSize, 0, _T("ID_STATICTEXT11"));
|
||||
DebugModeCheck = new wxCheckBox(this, ID_CHECKBOX1, _("Enable"), wxPoint(96,352), wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
|
||||
DebugModeCheck->SetValue(false);
|
||||
DebugModeCheck->SetToolTip(_("Enable debug mode (show stages of image processing)"));
|
||||
SaveSettingsButton = new wxButton(this, ID_BUTTON3, _("Save"), wxPoint(176,384), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
|
||||
SaveSettingsButton->SetToolTip(_("Save settings"));
|
||||
CancelSettingsButton = new wxButton(this, ID_BUTTON4, _("Cancel"), wxPoint(272,384), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON4"));
|
||||
CancelSettingsButton->SetToolTip(_("Dismiss changes"));
|
||||
BaudRateChoice = new wxChoice(this, ID_CHOICE2, wxPoint(104,264), wxSize(120,21), 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE2"));
|
||||
BaudRateChoice->SetSelection( BaudRateChoice->Append(_("300")) );
|
||||
BaudRateChoice->Append(_("600"));
|
||||
BaudRateChoice->Append(_("1200"));
|
||||
BaudRateChoice->Append(_("2400"));
|
||||
BaudRateChoice->Append(_("4800"));
|
||||
BaudRateChoice->Append(_("9600"));
|
||||
BaudRateChoice->Append(_("14400"));
|
||||
BaudRateChoice->Append(_("19200"));
|
||||
BaudRateChoice->Append(_("28800"));
|
||||
BaudRateChoice->Append(_("38400"));
|
||||
BaudRateChoice->Append(_("57600"));
|
||||
BaudRateChoice->Append(_("115200"));
|
||||
BaudRateChoice->SetToolTip(_("Baud rate of device"));
|
||||
SerialPortSpinner = new wxSpinCtrl(this, ID_SPINCTRL4, _T("0"), wxPoint(136,240), wxSize(88,21), 0, 0, 100, 0, _T("ID_SPINCTRL4"));
|
||||
SerialPortSpinner->SetValue(_T("0"));
|
||||
SerialPortSpinner->SetToolTip(_("Serial port on which the plotter is connected"));
|
||||
StaticText12 = new wxStaticText(this, ID_STATICTEXT12, _("COM"), wxPoint(104,248), wxDefaultSize, 0, _T("ID_STATICTEXT12"));
|
||||
MessageDialog1 = new wxMessageDialog(this, wxEmptyString, _("Message"), wxOK|wxCANCEL, wxDefaultPosition);
|
||||
|
||||
Connect(ID_SPINCTRL3,wxEVT_COMMAND_SPINCTRL_UPDATED,(wxObjectEventFunction)&SettingDialog::OnPencountSpinnerChange);
|
||||
Connect(ID_LISTBOX1,wxEVT_COMMAND_LISTBOX_SELECTED,(wxObjectEventFunction)&SettingDialog::OnPensListBoxSelect);
|
||||
Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&SettingDialog::OnPenColorSetButtonClick);
|
||||
Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&SettingDialog::OnPrinterAutoDetectButtonClick);
|
||||
Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&SettingDialog::OnSaveSettingsButtonClick);
|
||||
Connect(ID_BUTTON4,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&SettingDialog::OnCancelSettingsButtonClick);
|
||||
//*)
|
||||
|
||||
//Load default values
|
||||
LengthSpinner->SetValue(p->getSettings()->getPrinter()->getLength());
|
||||
WidthSpinner->SetValue(p->getSettings()->getPrinter()->getWidth());
|
||||
PencountSpinner->SetValue(p->getSettings()->getPrinter()->getPenCount());
|
||||
s_pens=p->getSettings()->getPrinter()->getPens();
|
||||
for(int i=0; i<s_pens.size(); i++){
|
||||
PensListBox->Append(s_pens[i]);
|
||||
}
|
||||
SerialPortSpinner->SetValue(p->getSettings()->getPrinter()->getPortInt());
|
||||
BaudRateChoice->SetSelection(BaudRateChoice->FindString(std::to_string(p->getSettings()->getPrinter()->getBaudRate()))!=wxNOT_FOUND?BaudRateChoice->FindString(std::to_string(p->getSettings()->getPrinter()->getBaudRate())):0);
|
||||
DebugModeCheck->SetValue(p->getSettings()->isDebug());
|
||||
}
|
||||
|
||||
SettingDialog::~SettingDialog()
|
||||
{
|
||||
//(*Destroy(SettingDialog)
|
||||
//*)
|
||||
}
|
||||
|
||||
void SettingDialog::OnCancelSettingsButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
this->Destroy();
|
||||
}
|
||||
|
||||
void SettingDialog::OnPencountSpinnerChange(wxSpinEvent& event)
|
||||
{
|
||||
PensListBox->Clear();
|
||||
s_pens.clear();
|
||||
for(int i=0; i<PencountSpinner->GetValue(); i++){
|
||||
PensListBox->Append("<<"+std::to_string(i)+">>");
|
||||
s_pens[i]="<<"+std::to_string(i)+">>";
|
||||
}
|
||||
PensListBox->SetSelection(0);
|
||||
}
|
||||
|
||||
void SettingDialog::OnPenColorSetButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
int sel=PensListBox->GetSelection();
|
||||
std::string val=std::string(PenColorText->GetValue().mb_str());
|
||||
PensListBox->SetString(sel, val);
|
||||
s_pens[sel]=val;
|
||||
}
|
||||
|
||||
void SettingDialog::OnPensListBoxSelect(wxCommandEvent& event)
|
||||
{
|
||||
PenColorText->SetValue(PensListBox->GetString(PensListBox->GetSelection()));
|
||||
}
|
||||
|
||||
void SettingDialog::OnSaveSettingsButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
Printer printer=Printer(LengthSpinner->GetValue(), WidthSpinner->GetValue(), PencountSpinner->GetValue(), s_pens, SerialPortSpinner->GetValue(), std::stol(std::string(BaudRateChoice->GetString(BaudRateChoice->GetSelection()).mb_str())));
|
||||
p->getSettings()->setSettings(printer, DebugModeCheck->GetValue());
|
||||
this->Destroy();
|
||||
}
|
||||
|
||||
void SettingDialog::OnPrinterAutoDetectButtonClick(wxCommandEvent& event)
|
||||
{
|
||||
p->getSettings()->getPrinter()->setComParameters(SerialPortSpinner->GetValue(), std::stol(std::string(BaudRateChoice->GetString(BaudRateChoice->GetSelection()).mb_str())));
|
||||
if(!p->getSettings()->getPrinter()->connect()){
|
||||
wxMessageDialog(this, _("Can not connect to printer. Please recheck the settings!"), _("Error"), wxCENTER|wxOK|wxICON_ERROR).ShowModal();
|
||||
return;
|
||||
}
|
||||
if(!p->getSettings()->getPrinter()->autoDetect()){
|
||||
wxMessageDialog(this, _("Can not parse the output of auto-detect command (M703). Is your software compatible?"), _("Warning"), wxCENTER|wxOK|wxICON_WARNING).ShowModal();
|
||||
return;
|
||||
}
|
||||
wxMessageDialog(this, _("Settings successfully detected!"), _("Info"), wxCENTER|wxOK|wxICON_INFORMATION).ShowModal();
|
||||
}
|
110
PlottWareControl/SettingDialog.h
Normal file
@ -0,0 +1,110 @@
|
||||
#ifndef SETTINGDIALOG_H
|
||||
#define SETTINGDIALOG_H
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include "settings.h"
|
||||
#include "PlottWareControlMain.h"
|
||||
|
||||
//(*Headers(SettingDialog)
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/listbox.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/choice.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
//*)
|
||||
|
||||
class SettingDialog: public wxDialog
|
||||
{
|
||||
public:
|
||||
|
||||
SettingDialog(wxWindow* parent,wxWindowID id=wxID_ANY,PlottWareControlFrame *_p=NULL);
|
||||
virtual ~SettingDialog();
|
||||
|
||||
//(*Declarations(SettingDialog)
|
||||
wxStaticText* StaticText10;
|
||||
wxCheckBox* DebugModeCheck;
|
||||
wxTextCtrl* PenColorText;
|
||||
wxStaticText* StaticText9;
|
||||
wxButton* CancelSettingsButton;
|
||||
wxChoice* BaudRateChoice;
|
||||
wxButton* PrinterAutoDetectButton;
|
||||
wxStaticText* StaticText2;
|
||||
wxStaticText* StaticText6;
|
||||
wxListBox* PensListBox;
|
||||
wxSpinCtrl* PencountSpinner;
|
||||
wxStaticText* StaticText8;
|
||||
wxStaticText* StaticText11;
|
||||
wxButton* PenColorSetButton;
|
||||
wxStaticText* StaticText1;
|
||||
wxStaticText* StaticText3;
|
||||
wxSpinCtrl* LengthSpinner;
|
||||
wxStaticBox* StaticBox1;
|
||||
wxSpinCtrl* WidthSpinner;
|
||||
wxButton* SaveSettingsButton;
|
||||
wxSpinCtrl* SerialPortSpinner;
|
||||
wxStaticText* StaticText5;
|
||||
wxStaticText* StaticText7;
|
||||
wxStaticLine* StaticLine1;
|
||||
wxStaticText* StaticText12;
|
||||
wxMessageDialog* MessageDialog1;
|
||||
wxStaticText* StaticText4;
|
||||
//*)
|
||||
|
||||
protected:
|
||||
|
||||
//(*Identifiers(SettingDialog)
|
||||
static const long ID_STATICTEXT1;
|
||||
static const long ID_STATICBOX1;
|
||||
static const long ID_STATICTEXT2;
|
||||
static const long ID_SPINCTRL1;
|
||||
static const long ID_STATICTEXT3;
|
||||
static const long ID_STATICTEXT4;
|
||||
static const long ID_SPINCTRL2;
|
||||
static const long ID_STATICTEXT5;
|
||||
static const long ID_STATICTEXT6;
|
||||
static const long ID_SPINCTRL3;
|
||||
static const long ID_STATICTEXT7;
|
||||
static const long ID_LISTBOX1;
|
||||
static const long ID_TEXTCTRL1;
|
||||
static const long ID_STATICTEXT8;
|
||||
static const long ID_BUTTON1;
|
||||
static const long ID_STATICLINE1;
|
||||
static const long ID_STATICTEXT9;
|
||||
static const long ID_STATICTEXT10;
|
||||
static const long ID_BUTTON2;
|
||||
static const long ID_STATICTEXT11;
|
||||
static const long ID_CHECKBOX1;
|
||||
static const long ID_BUTTON3;
|
||||
static const long ID_BUTTON4;
|
||||
static const long ID_CHOICE2;
|
||||
static const long ID_SPINCTRL4;
|
||||
static const long ID_STATICTEXT12;
|
||||
static const long ID_MESSAGEDIALOG1;
|
||||
//*)
|
||||
|
||||
private:
|
||||
|
||||
//(*Handlers(SettingDialog)
|
||||
void OnSpinCtrl1Change(wxSpinEvent& event);
|
||||
void OnCancelSettingsButtonClick(wxCommandEvent& event);
|
||||
void OnPencountSpinnerChange(wxSpinEvent& event);
|
||||
void OnPenColorSetButtonClick(wxCommandEvent& event);
|
||||
void OnPensListBoxSelect(wxCommandEvent& event);
|
||||
void OnSaveSettingsButtonClick(wxCommandEvent& event);
|
||||
void OnPrinterAutoDetectButtonClick(wxCommandEvent& event);
|
||||
//*)
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
PlottWareControlFrame *p;
|
||||
std::map<int, std::string> s_pens;
|
||||
};
|
||||
|
||||
#endif
|
BIN
PlottWareControl/bin/Debug/PlottWareControl.exe
Normal file
BIN
PlottWareControl/bin/Release/PlottWareControl.exe
Normal file
67
PlottWareControl/image.cpp
Normal file
@ -0,0 +1,67 @@
|
||||
#include "image.h"
|
||||
|
||||
Image::Image(){
|
||||
filename="";
|
||||
scale=1;
|
||||
}
|
||||
|
||||
Image::Image(std::string _filename){
|
||||
filename=_filename;
|
||||
scale=1;
|
||||
load();
|
||||
}
|
||||
|
||||
Image::~Image(){
|
||||
img.release();
|
||||
}
|
||||
|
||||
std::string Image::getFilename(){
|
||||
return filename;
|
||||
}
|
||||
|
||||
cv::Mat* Image::getMat(){
|
||||
return &img;
|
||||
}
|
||||
|
||||
Point Image::getPosition(){
|
||||
return position;
|
||||
}
|
||||
|
||||
Point Image::getCrop1(){
|
||||
return crop1;
|
||||
}
|
||||
|
||||
Point Image::getCrop2(){
|
||||
return crop2;
|
||||
}
|
||||
|
||||
double Image::getScale(){
|
||||
return scale;
|
||||
}
|
||||
|
||||
void Image::setScale(double _scale){
|
||||
scale=_scale;
|
||||
}
|
||||
|
||||
void Image::setFilename(std::string _filename){
|
||||
filename=_filename;
|
||||
}
|
||||
|
||||
bool Image::load(){
|
||||
img=cv::imread(filename, CV_LOAD_IMAGE_COLOR);
|
||||
if(!img.data){
|
||||
fprintf(stderr, "Error> Image can not be found or can not be loaded. At: Image::load() (file: %s, line: %d)\n", __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
crop2=Point(img.cols, img.rows);
|
||||
return true;
|
||||
}
|
||||
|
||||
void Image::setPosition(Point _position){
|
||||
position=_position;
|
||||
}
|
||||
|
||||
void Image::setCrop(Point _crop1, Point _crop2){
|
||||
crop1=_crop1;
|
||||
crop2=_crop2;
|
||||
}
|
32
PlottWareControl/image.h
Normal file
@ -0,0 +1,32 @@
|
||||
#ifndef IMAGE_H_INCLUDED
|
||||
#define IMAGE_H_INCLUDED
|
||||
|
||||
#include <string>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include "point.h"
|
||||
|
||||
class Image{
|
||||
std::string filename;
|
||||
cv::Mat img;
|
||||
Point position;
|
||||
Point crop1;
|
||||
Point crop2;
|
||||
double scale;
|
||||
public:
|
||||
Image();
|
||||
Image(std::string _filename);
|
||||
~Image();
|
||||
std::string getFilename();
|
||||
cv::Mat* getMat();
|
||||
Point getPosition();
|
||||
Point getCrop1();
|
||||
Point getCrop2();
|
||||
double getScale();
|
||||
void setScale(double _scale);
|
||||
void setFilename(std::string _filename);
|
||||
bool load();
|
||||
void setPosition(Point _position);
|
||||
void setCrop(Point _crop1, Point _crop2);
|
||||
};
|
||||
|
||||
#endif // IMAGE_H_INCLUDED
|
40
PlottWareControl/imageViewer.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include "imageViewer.h"
|
||||
|
||||
ImageViewer::ImageViewer(){
|
||||
name="";
|
||||
}
|
||||
|
||||
ImageViewer::ImageViewer(cv::Mat* _img, std::string _name){
|
||||
img=_img;
|
||||
name=_name;
|
||||
}
|
||||
|
||||
ImageViewer::ImageViewer(cv::Mat _cimg, std::string _name){
|
||||
cimg=_cimg;
|
||||
name=_name;
|
||||
img=&cimg;
|
||||
}
|
||||
|
||||
ImageViewer::~ImageViewer(){
|
||||
show(false);
|
||||
img->release();
|
||||
}
|
||||
|
||||
void ImageViewer::assignImage(cv::Mat* _img){
|
||||
img=_img;
|
||||
}
|
||||
|
||||
void ImageViewer::show(bool show){
|
||||
if(show){
|
||||
cv::namedWindow(name, CV_WINDOW_AUTOSIZE);
|
||||
cv::imshow(name, *img);
|
||||
}
|
||||
else{
|
||||
cv::destroyWindow(name);
|
||||
}
|
||||
}
|
||||
|
||||
void ImageViewer::refresh(){
|
||||
show(false);
|
||||
show(true);
|
||||
}
|
23
PlottWareControl/imageViewer.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef IMAGEVIEWER_H_INCLUDED
|
||||
#define IMAGEVIEWER_H_INCLUDED
|
||||
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <opencv2/highgui.hpp>
|
||||
|
||||
class ImageViewer{
|
||||
cv::Mat* img;
|
||||
cv::Mat cimg;
|
||||
std::string name;
|
||||
public:
|
||||
ImageViewer();
|
||||
ImageViewer(cv::Mat* _img, std::string _name);
|
||||
ImageViewer(cv::Mat _cimg, std::string _name);
|
||||
~ImageViewer();
|
||||
void assignImage(cv::Mat* _img);
|
||||
void show(bool show=true);
|
||||
void refresh();
|
||||
};
|
||||
|
||||
#endif // IMAGEVIEWER_H_INCLUDED
|
14742
PlottWareControl/json.hpp
Normal file
BIN
PlottWareControl/obj/Debug/PlottWareControlApp.o
Normal file
BIN
PlottWareControl/obj/Debug/PlottWareControlMain.o
Normal file
BIN
PlottWareControl/obj/Debug/SettingDialog.o
Normal file
BIN
PlottWareControl/obj/Debug/image.o
Normal file
BIN
PlottWareControl/obj/Debug/point.o
Normal file
BIN
PlottWareControl/obj/Debug/printer.o
Normal file
BIN
PlottWareControl/obj/Debug/project.o
Normal file
BIN
PlottWareControl/obj/Debug/resource.res
Normal file
BIN
PlottWareControl/obj/Debug/serial.o
Normal file
BIN
PlottWareControl/obj/Debug/settings.o
Normal file
BIN
PlottWareControl/obj/Release/GcodeEditorDialog.o
Normal file
BIN
PlottWareControl/obj/Release/PlottWareControlApp.o
Normal file
BIN
PlottWareControl/obj/Release/PlottWareControlMain.o
Normal file
BIN
PlottWareControl/obj/Release/SettingDialog.o
Normal file
BIN
PlottWareControl/obj/Release/image.o
Normal file
BIN
PlottWareControl/obj/Release/imageViewer.o
Normal file
BIN
PlottWareControl/obj/Release/point.o
Normal file
BIN
PlottWareControl/obj/Release/printer.o
Normal file
BIN
PlottWareControl/obj/Release/project.o
Normal file
BIN
PlottWareControl/obj/Release/resource.res
Normal file
BIN
PlottWareControl/obj/Release/serial.o
Normal file
BIN
PlottWareControl/obj/Release/settings.o
Normal file
27
PlottWareControl/point.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
#include "point.h"
|
||||
|
||||
Point::Point(){
|
||||
x=0;
|
||||
y=0;
|
||||
}
|
||||
|
||||
Point::Point(float _x, float _y){
|
||||
x=_x;
|
||||
y=_y;
|
||||
}
|
||||
|
||||
float Point::getX(){
|
||||
return x;
|
||||
}
|
||||
|
||||
float Point::getY(){
|
||||
return y;
|
||||
}
|
||||
|
||||
void Point::setX(float _x){
|
||||
x=_x;
|
||||
}
|
||||
|
||||
void Point::setY(float _y){
|
||||
y=_y;
|
||||
}
|
16
PlottWareControl/point.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef POINT_H_INCLUDED
|
||||
#define POINT_H_INCLUDED
|
||||
|
||||
class Point{
|
||||
float x;
|
||||
float y;
|
||||
public:
|
||||
Point();
|
||||
Point(float _x, float _y);
|
||||
float getX();
|
||||
float getY();
|
||||
void setX(float _x);
|
||||
void setY(float _y);
|
||||
};
|
||||
|
||||
#endif // POINT_H_INCLUDED
|
143
PlottWareControl/printer.cpp
Normal file
@ -0,0 +1,143 @@
|
||||
#include "printer.h"
|
||||
|
||||
Printer::Printer(){
|
||||
position=Point(-1, -1);
|
||||
length=0;
|
||||
width=0;
|
||||
pencount=0;
|
||||
port=0;
|
||||
}
|
||||
|
||||
Printer::Printer(long int _length, long int _width, int _pencount, std::map<int, std::string> _pens, int _port, long int _baudrate){
|
||||
length=_length;
|
||||
width=_width;
|
||||
pencount=_pencount;
|
||||
pens=_pens;
|
||||
port=_port;
|
||||
baudrate=_baudrate;
|
||||
com=Serial();
|
||||
}
|
||||
|
||||
Point Printer::getPosition(){
|
||||
//get head position
|
||||
send("M114\n");
|
||||
std::string r=recv();
|
||||
position=Point(std::stoi(r.substr(r.find("X:")+2, r.find(" ", r.find("X:")))), std::stoi(r.substr(r.find("Y:")+2, r.find(" ", r.find("Y:")))));
|
||||
return position;
|
||||
}
|
||||
|
||||
long int Printer::getLength(){
|
||||
return length;
|
||||
}
|
||||
|
||||
long int Printer::getWidth(){
|
||||
return width;
|
||||
}
|
||||
|
||||
int Printer::getPenCount(){
|
||||
return pencount;
|
||||
}
|
||||
|
||||
std::map<int, std::string> Printer::getPens(){
|
||||
return pens;
|
||||
}
|
||||
|
||||
bool Printer::getPowerState(){
|
||||
return power;
|
||||
}
|
||||
|
||||
std::string Printer::getPort(){
|
||||
return "COM"+std::to_string(port);
|
||||
}
|
||||
|
||||
int Printer::getPortInt(){
|
||||
return port;
|
||||
}
|
||||
|
||||
long int Printer::getBaudRate(){
|
||||
return baudrate;
|
||||
}
|
||||
|
||||
bool Printer::setSettings(long int _length, long int _width, int _pencount, std::map<int, std::string> _pens, int _port, long int _baudrate){
|
||||
length=_length;
|
||||
width=_width;
|
||||
pencount=_pencount;
|
||||
pens=_pens;
|
||||
port=_port;
|
||||
baudrate=_baudrate;
|
||||
}
|
||||
|
||||
bool Printer::setComParameters(int _port, long int _baudrate){
|
||||
port=_port;
|
||||
baudrate=_baudrate;
|
||||
}
|
||||
|
||||
bool Printer::connect(){
|
||||
std::string p="\\\\.\\COM"+std::to_string(port);
|
||||
if(!com.conn(p.c_str(), baudrate)){
|
||||
return false;
|
||||
}
|
||||
|
||||
//get pwr state
|
||||
send("M115\n");
|
||||
std::string r=recv();
|
||||
try{
|
||||
nlohmann::json j=nlohmann::json::parse(r);
|
||||
power=j["power"];
|
||||
}
|
||||
catch(nlohmann::json::parse_error &e){
|
||||
fprintf(stderr, "ERROR> Can not parse JSON response from printer for M115. Message: %s; position: %i. At: Printer::autoDetect() (file: %s, line: %i)\n", e.what(), e.byte, __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
|
||||
//get head position
|
||||
getPosition();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Printer::disconnect(){
|
||||
com.disconn();
|
||||
}
|
||||
|
||||
bool Printer::isConnected(){
|
||||
return com.IsConnected();
|
||||
}
|
||||
|
||||
bool Printer::send(std::string s){
|
||||
if(!isConnected()){
|
||||
return false;
|
||||
}
|
||||
com.WriteData(s.c_str(), s.size());
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string Printer::recv(){
|
||||
char buff[501];
|
||||
com.ReadData(buff, 500);
|
||||
return std::string(buff);
|
||||
}
|
||||
|
||||
bool Printer::autoDetect(){
|
||||
if(isConnected()){
|
||||
send("M115\n"); //get info from the firmware
|
||||
std::string r=recv();
|
||||
try{
|
||||
nlohmann::json j=nlohmann::json::parse(r);
|
||||
length=j["length"];
|
||||
width=j["width"];
|
||||
pencount=j["pencount"];
|
||||
pens.clear();
|
||||
for(int i=0; i<pencount; i++){
|
||||
pens[i]=j["pens"][i];
|
||||
}
|
||||
}
|
||||
catch(nlohmann::json::parse_error &e){
|
||||
fprintf(stderr, "ERROR> Can not parse JSON response from printer for M115. Message: %s; position: %i. At: Printer::autoDetect() (file: %s, line: %i)\n", e.what(), e.byte, __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
45
PlottWareControl/printer.h
Normal file
@ -0,0 +1,45 @@
|
||||
#ifndef PRINTER_H_INCLUDED
|
||||
#define PRINTER_H_INCLUDED
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include "serial.h"
|
||||
#include "json.hpp"
|
||||
#include "point.h"
|
||||
|
||||
class Printer{
|
||||
Point position;
|
||||
long int length;
|
||||
long int width;
|
||||
int pencount;
|
||||
std::map<int, std::string> pens;
|
||||
bool power;
|
||||
int port;
|
||||
long int baudrate;
|
||||
Serial com;
|
||||
public:
|
||||
Printer();
|
||||
Printer(long int _length, long int _width, int _pencount, std::map<int, std::string> _pens, int _port, long int _baudrate);
|
||||
|
||||
Point getPosition();
|
||||
long int getLength();
|
||||
long int getWidth();
|
||||
int getPenCount();
|
||||
std::map<int, std::string> getPens();
|
||||
bool getPowerState();
|
||||
std::string getPort();
|
||||
int getPortInt();
|
||||
long int getBaudRate();
|
||||
|
||||
bool setSettings(long int _length, long int _width, int _pencount, std::map<int, std::string> _pens, int _port, long int _baudrate);
|
||||
bool setComParameters(int _port, long int _baudrate);
|
||||
|
||||
bool connect();
|
||||
void disconnect();
|
||||
bool isConnected();
|
||||
bool send(std::string s);
|
||||
std::string recv();
|
||||
bool autoDetect();
|
||||
};
|
||||
|
||||
#endif // PRINTER_H_INCLUDED
|
317
PlottWareControl/project.cpp
Normal file
@ -0,0 +1,317 @@
|
||||
#include "project.h"
|
||||
|
||||
Project::Project(Settings* _settings){
|
||||
settings=_settings;
|
||||
filename="";
|
||||
retrmode=CV_RETR_LIST;
|
||||
cannythresh=100;
|
||||
gcode="";
|
||||
ivcombined=ImageViewer(&combined, "Images");
|
||||
ivprocessed=ImageViewer(&processed, "Processing");
|
||||
}
|
||||
|
||||
Project::Project(Settings* _settings, std::string _filename){
|
||||
settings=_settings;
|
||||
filename=_filename;
|
||||
retrmode=CV_RETR_LIST;
|
||||
cannythresh=100;
|
||||
gcode="";
|
||||
ivcombined=ImageViewer(&combined, "Images");
|
||||
ivprocessed=ImageViewer(&processed, "Processing");
|
||||
}
|
||||
|
||||
std::vector<Image>* Project::getImages(){
|
||||
return &images;
|
||||
}
|
||||
|
||||
int Project::getRetrMode(){
|
||||
return retrmode;
|
||||
}
|
||||
|
||||
int Project::getCannyThresh(){
|
||||
return cannythresh;
|
||||
}
|
||||
|
||||
std::map<int, int>* Project::getColoring(){
|
||||
return &coloring;
|
||||
}
|
||||
|
||||
std::string* Project::getGcode(){
|
||||
return &gcode;
|
||||
}
|
||||
|
||||
void Project::setFileName(std::string _filename){
|
||||
filename=_filename;
|
||||
}
|
||||
|
||||
void Project::setRetrMode(int _retrmode){
|
||||
retrmode=_retrmode;
|
||||
}
|
||||
|
||||
void Project::setCannyThresh(int _cannythresh){
|
||||
cannythresh=_cannythresh;
|
||||
}
|
||||
|
||||
bool Project::newProj(){
|
||||
//create files, save def, etc
|
||||
FILE* f=fopen(filename.c_str(), "w");
|
||||
if(!f){
|
||||
fprintf(stderr, "Error> Creating file for project. At: Project::newProj() (file: %s, line: %i)\n", __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
fprintf(f,"");
|
||||
fclose(f);
|
||||
return true;
|
||||
}
|
||||
|
||||
void Project::loadProj(){
|
||||
//load stuff, deserialize
|
||||
}
|
||||
|
||||
void Project::save(){
|
||||
//serialize, save to file
|
||||
}
|
||||
|
||||
void Project::close(){
|
||||
//close project, free up resources;
|
||||
cv::destroyAllWindows();
|
||||
}
|
||||
|
||||
bool Project::combine(){
|
||||
//get col and row count
|
||||
int colmax=0, rowmax=0;
|
||||
for(std::vector<Image>::iterator it=images.begin(); it<images.end(); it++){
|
||||
//get current mat
|
||||
cv::Mat cur=*it->getMat();
|
||||
|
||||
//get resized mat
|
||||
cv::Mat resz;
|
||||
cv::resize(cur, resz, cv::Size(cur.cols*it->getScale(), cur.rows*it->getScale()));
|
||||
|
||||
//get cropped mat
|
||||
cv::Mat crop=resz(cv::Rect(it->getCrop1().getX(), it->getCrop1().getY(), (it->getCrop2().getX()-it->getCrop1().getX())*it->getScale(), (it->getCrop2().getY()-it->getCrop1().getY())*it->getScale()));
|
||||
|
||||
//crop debug
|
||||
if(settings->isDebug()){
|
||||
ImageViewer* iv=new ImageViewer(crop, "DEBUG:combine> "+it->getFilename());
|
||||
iv->show();
|
||||
}
|
||||
|
||||
if(it->getPosition().getX()+crop.cols > colmax){
|
||||
colmax=it->getPosition().getX()+crop.cols;
|
||||
}
|
||||
if(it->getPosition().getY()+crop.rows > rowmax){
|
||||
rowmax=it->getPosition().getY()+crop.rows;
|
||||
}
|
||||
|
||||
//cleanup
|
||||
resz.release();
|
||||
crop.release();
|
||||
}
|
||||
|
||||
if(settings->isDebug()){
|
||||
printf("DEBUG:combine> colmax=%i, rowmax=%i\n", colmax, rowmax);
|
||||
}
|
||||
|
||||
//create new mat
|
||||
combined=cv::Mat::zeros(rowmax, colmax, CV_8UC3);
|
||||
|
||||
//add layers
|
||||
for(std::vector<Image>::iterator it=images.begin(); it<images.end(); it++){
|
||||
//get current mat
|
||||
cv::Mat cur=*it->getMat();
|
||||
|
||||
//get resized mat
|
||||
cv::Mat resz;
|
||||
cv::resize(cur, resz, cv::Size(cur.cols*it->getScale(), cur.rows*it->getScale()));
|
||||
|
||||
//get cropped mat
|
||||
cv::Mat crop=resz(cv::Rect(it->getCrop1().getX()*it->getScale(), it->getCrop1().getY()*it->getScale(), (it->getCrop2().getX()-it->getCrop1().getX())*it->getScale(), (it->getCrop2().getY()-it->getCrop1().getY())*it->getScale()));
|
||||
|
||||
//add layer
|
||||
crop.copyTo(combined(cv::Rect(it->getPosition().getX(), it->getPosition().getY(), crop.cols, crop.rows)));
|
||||
|
||||
//cleanup
|
||||
resz.release();
|
||||
crop.release();
|
||||
}
|
||||
|
||||
//show results
|
||||
ivcombined.refresh();
|
||||
|
||||
//everything alright
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Project::process(){
|
||||
if(combined.empty()){
|
||||
return false;
|
||||
}
|
||||
|
||||
//convert mat to gray
|
||||
cv::Mat graymat;
|
||||
cv::cvtColor(combined, graymat, CV_BGR2GRAY);
|
||||
if(settings->isDebug()){
|
||||
ImageViewer* iv=new ImageViewer(graymat, "DEBUG:process> cvtColor");
|
||||
iv->show();
|
||||
}
|
||||
|
||||
//blur edges
|
||||
cv::blur(graymat, graymat, cv::Size(3, 3));
|
||||
if(settings->isDebug()){
|
||||
ImageViewer* iv=new ImageViewer(graymat, "DEBUG:process> blur");
|
||||
iv->show();
|
||||
}
|
||||
|
||||
//canny edge detection
|
||||
cv::Mat canny;
|
||||
cv::Canny(graymat, canny, cannythresh, cannythresh*2, 3);
|
||||
if(settings->isDebug()){
|
||||
ImageViewer* iv=new ImageViewer(canny, "DEBUG:process> Canny");
|
||||
iv->show();
|
||||
}
|
||||
|
||||
//find contours
|
||||
cv::findContours(canny, contours, hierarchy, retrmode, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));
|
||||
|
||||
//build color map if not ready
|
||||
if(coloring.size()!=contours.size()){
|
||||
coloring.clear();
|
||||
for(int i=0; i<contours.size(); i++){
|
||||
coloring[i]=-1; //set to default head to use
|
||||
}
|
||||
}
|
||||
|
||||
//draw output
|
||||
processed=cv::Mat::zeros(canny.size(), CV_8UC3);
|
||||
for(int i=0; i<contours.size(); i++){
|
||||
cv::Scalar color=cv::Scalar(30, 200, 30);
|
||||
cv::drawContours(processed, contours, i, color, 2, 8, hierarchy, 0, cv::Point());
|
||||
}
|
||||
|
||||
//show results
|
||||
ivprocessed.refresh();
|
||||
|
||||
//cleanup
|
||||
graymat.release();
|
||||
canny.release();
|
||||
|
||||
//it's k
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Project::printEdge(int n){
|
||||
//the same story
|
||||
if(combined.empty()){
|
||||
return false;
|
||||
}
|
||||
|
||||
//draw contours
|
||||
processed=cv::Mat::zeros(processed.size(), CV_8UC3);
|
||||
for(int i=0; i<contours.size(); i++){
|
||||
cv::Scalar color=cv::Scalar(30, 200, 30);
|
||||
cv::drawContours(processed, contours, i, color, 2, 8, hierarchy, 0, cv::Point());
|
||||
}
|
||||
|
||||
//highlight "The One"
|
||||
cv::Scalar color=cv::Scalar(30, 30, 200);
|
||||
cv::drawContours(processed, contours, n, color, 2, 8, hierarchy, 0, cv::Point());
|
||||
|
||||
//show results
|
||||
ivprocessed.refresh();
|
||||
|
||||
//kkk
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Project::generateGcode(){
|
||||
//check if the stuff is set
|
||||
if(contours.empty()){
|
||||
return false;
|
||||
}
|
||||
|
||||
//clear previous gcode
|
||||
gcode="";
|
||||
|
||||
//statistics
|
||||
unsigned int lines=0;
|
||||
double maxX=0, maxY=0;
|
||||
|
||||
//add info
|
||||
gcode+=";Generated by: PlottWareControl\n;Project: "+filename+"\n;Program created by: Fandly Gergo (fandlygergo@gmail.hu, systemtest.tk)\n\n\n\n";
|
||||
|
||||
//startup code
|
||||
gcode+="G90 ;absolute positioning\n";
|
||||
gcode+="M17 ;enable steppers\n";
|
||||
gcode+="T1000 ;deselect all tools\n";
|
||||
gcode+="G28 ;home axises\n";
|
||||
lines+=10;
|
||||
|
||||
//iterate through contours
|
||||
for(int i=0; i<contours.size(); i++){
|
||||
//if we need to eliminate the contour...
|
||||
if(coloring[i]==0){
|
||||
continue; //we do so
|
||||
}
|
||||
|
||||
if(coloring[i]==-1){
|
||||
coloring[i]=1; //set to the default if not set...
|
||||
}
|
||||
|
||||
//start contour drawing
|
||||
gcode+=";printing contour #"+std::to_string(i)+"\n";
|
||||
//select tool
|
||||
gcode+="T"+std::to_string(coloring[i])+"\n";
|
||||
|
||||
//move to first point
|
||||
gcode+="G0 X"+std::to_string(contours[i][0].x/10.0)+" Y"+std::to_string(contours[i][0].y/10.0)+"\n";
|
||||
if(contours[i][0].x/10.0 > maxX){
|
||||
maxX=contours[i][0].x/10.0;
|
||||
}
|
||||
if(contours[i][0].y/10.0 > maxY){
|
||||
maxY=contours[i][0].y/10.0;
|
||||
}
|
||||
|
||||
//move pen down
|
||||
gcode+="M300 S10\n";
|
||||
lines+=4;
|
||||
|
||||
//iterate through points
|
||||
for(int o=1; o<contours[i].size(); o++){
|
||||
gcode+="G1 X"+std::to_string(contours[i][o].x/10.0)+" Y"+std::to_string(contours[i][o].y/10.0)+"\n";
|
||||
if(contours[i][o].x/10.0 > maxX){
|
||||
maxX=contours[i][o].x/10.0;
|
||||
}
|
||||
if(contours[i][o].y/10.0 > maxY){
|
||||
maxY=contours[i][o].y/10.0;
|
||||
}
|
||||
lines++;
|
||||
}
|
||||
|
||||
//lift up pen
|
||||
gcode+="M300 S50\n";
|
||||
lines+=1;
|
||||
}
|
||||
|
||||
//end
|
||||
gcode+="T1000 ;deselect tool\n";
|
||||
gcode+="M18 ;disable steppers\n";
|
||||
gcode+="M2 ;program end\n";
|
||||
lines+=3;
|
||||
|
||||
//print "final thoughts"
|
||||
lines+=7;
|
||||
gcode+="\n\n\n;Line count: "+std::to_string(lines)+"\n;Max X: "+std::to_string(maxX)+"\n;Max Y: "+std::to_string(maxY)+"\n;ENJOY!";
|
||||
}
|
||||
|
||||
bool Project::exportGcode(std::string file){
|
||||
FILE* f=fopen(file.c_str(), "w");
|
||||
if(!f){
|
||||
fprintf(stderr, "Error> Can't create file for gcode export. At: Project::exportGcode(std::string file) (file: %s, line: %i)\n", __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
|
||||
fprintf(f, "%s", gcode.c_str());
|
||||
fclose(f);
|
||||
return true;
|
||||
}
|
63
PlottWareControl/project.h
Normal file
@ -0,0 +1,63 @@
|
||||
#ifndef PROJECT_H_INCLUDED
|
||||
#define PROJECT_H_INCLUDED
|
||||
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <opencv2/imgproc.hpp>
|
||||
#include <opencv2/highgui.hpp>
|
||||
#include "image.h"
|
||||
#include "settings.h"
|
||||
#include "imageViewer.h"
|
||||
|
||||
class Project{
|
||||
Settings* settings;
|
||||
std::string filename;
|
||||
std::vector<Image> images;
|
||||
cv::Mat combined;
|
||||
cv::Mat processed;
|
||||
int retrmode;
|
||||
int cannythresh;
|
||||
std::vector< std::vector<cv::Point> > contours;
|
||||
std::vector<cv::Vec4i> hierarchy;
|
||||
std::map<int, int> coloring;
|
||||
std::string gcode;
|
||||
|
||||
//image viewers:
|
||||
ImageViewer ivcombined;
|
||||
ImageViewer ivprocessed;
|
||||
public:
|
||||
Project(Settings* _settings);
|
||||
Project(Settings* _settings, std::string _filename);
|
||||
std::vector<Image>* getImages();
|
||||
int getRetrMode();
|
||||
int getCannyThresh();
|
||||
std::map<int, int>* getColoring();
|
||||
std::string* getGcode();
|
||||
void setFileName(std::string _filename);
|
||||
void setRetrMode(int _retrmode);
|
||||
void setCannyThresh(int _cannythresh);
|
||||
|
||||
//project operations
|
||||
bool newProj();
|
||||
void loadProj();
|
||||
void save();
|
||||
void close();
|
||||
|
||||
//processing operations
|
||||
bool combine();
|
||||
bool process();
|
||||
bool printEdge(int n);
|
||||
|
||||
//gcode operations
|
||||
bool generateGcode();
|
||||
bool exportGcode(std::string file);
|
||||
|
||||
//print status
|
||||
unsigned long int printStatus;
|
||||
bool printStop;
|
||||
};
|
||||
|
||||
#endif // PROJECT_H_INCLUDED
|
24
PlottWareControl/res/gCode.txt
Normal file
@ -0,0 +1,24 @@
|
||||
commands:
|
||||
G0 Xx Yy - Rapid move to (z,y) coordinates
|
||||
G1 Xx Yy - Move to (x,y) coordinates
|
||||
G4 Pn - Wait n ms
|
||||
G28 - Home
|
||||
G90 - Set to absolute positioning
|
||||
G91 - Set to relative positioning
|
||||
Tn - change to nth tool
|
||||
M2 - Program end
|
||||
M17 - Enable steppers
|
||||
M18 - Disable steppers
|
||||
M80 - ATX power on
|
||||
M81 - ATX power off
|
||||
M112 - Emergency stop
|
||||
M114 - Get current position
|
||||
M115 - Get info from printer firmware
|
||||
M118 OK - Response to host when line done
|
||||
; - line comment
|
||||
(...) - block comment
|
||||
|
||||
|
||||
M114 response: X:x Y:y
|
||||
M115 response: {"software":"PlottWareFirmware v1.0","power":true/false,"length":L,"width":W,"pencount":PC,"pens":["C1","C2","C3"]}
|
||||
Deselect tool: T0 ot T1000
|
BIN
PlottWareControl/res/icon.bmp
Normal file
After Width: | Height: | Size: 117 KiB |
3
PlottWareControl/resource.rc
Normal file
@ -0,0 +1,3 @@
|
||||
aaaa ICON "wx/msw/std.ico"
|
||||
|
||||
#include "wx/msw/wx.rc"
|
175
PlottWareControl/serial.cpp
Normal file
@ -0,0 +1,175 @@
|
||||
#include "serial.h"
|
||||
|
||||
/**
|
||||
Got from: https://playground.arduino.cc/Interfacing/CPPWindows
|
||||
**/
|
||||
|
||||
Serial::Serial(){
|
||||
//We're not yet connected
|
||||
this->connected = false;
|
||||
return;
|
||||
}
|
||||
|
||||
bool Serial::conn(const char *portName, int baud)
|
||||
{
|
||||
if(this->connected){
|
||||
return false; //we're already connected;
|
||||
}
|
||||
//Try to connect to the given port throuh CreateFile
|
||||
this->hSerial = CreateFileA(portName,
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
0,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
NULL);
|
||||
|
||||
//Check if the connection was successfull
|
||||
if(this->hSerial==INVALID_HANDLE_VALUE)
|
||||
{
|
||||
//If not success full display an Error
|
||||
if(GetLastError()==ERROR_FILE_NOT_FOUND){
|
||||
|
||||
//Print Error if neccessary
|
||||
fprintf(stderr, "ERROR> Handle was not attached. Reason: %s not available. At: Serial::conn(const char *portName, int baud) (file: %s, line: %i)\n", portName, __FILE__, __LINE__);
|
||||
return false;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "ERROR> Serial connection failed. At: Serial::conn(const char *portName, int baud) (file: %s, line: %i)\n", __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//If connected we try to set the comm parameters
|
||||
DCB dcbSerialParams = {0};
|
||||
|
||||
//Try to get the current
|
||||
if (!GetCommState(this->hSerial, &dcbSerialParams))
|
||||
{
|
||||
//If impossible, show an error
|
||||
fprintf(stderr, "ERROR> Failed to get current serial parameters! At: Serial::conn(const char *portName, int baud) (file: %s, line: %i)\n", __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Define serial connection parameters for the arduino board
|
||||
dcbSerialParams.BaudRate=baud;
|
||||
dcbSerialParams.ByteSize=8;
|
||||
dcbSerialParams.StopBits=ONESTOPBIT;
|
||||
dcbSerialParams.Parity=NOPARITY;
|
||||
//Setting the DTR to Control_Enable ensures that the Arduino is properly
|
||||
//reset upon establishing a connection
|
||||
dcbSerialParams.fDtrControl = DTR_CONTROL_ENABLE;
|
||||
|
||||
//Set the parameters and check for their proper application
|
||||
if(!SetCommState(hSerial, &dcbSerialParams))
|
||||
{
|
||||
fprintf(stderr, "ERROR> Could not set Serial Port parameters At: Serial::conn(const char *portName, int baud) (file: %s, line: %i)\n", __FILE__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//If everything went fine we're connected
|
||||
this->connected = true;
|
||||
//Flush any remaining characters in the buffers
|
||||
PurgeComm(this->hSerial, PURGE_RXCLEAR | PURGE_TXCLEAR);
|
||||
//We wait 2s as the arduino board will be reseting
|
||||
Sleep(ARDUINO_WAIT_TIME);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Serial::~Serial()
|
||||
{
|
||||
//Check if we are connected before trying to disconnect
|
||||
if(this->connected)
|
||||
{
|
||||
//We're no longer connected
|
||||
this->connected = false;
|
||||
//Close the serial handler
|
||||
CloseHandle(this->hSerial);
|
||||
}
|
||||
}
|
||||
|
||||
void Serial::disconn(){
|
||||
//Check if we are connected before trying to disconnect
|
||||
if(this->connected)
|
||||
{
|
||||
//We're no longer connected
|
||||
this->connected = false;
|
||||
//Close the serial handler
|
||||
CloseHandle(this->hSerial);
|
||||
}
|
||||
}
|
||||
|
||||
int Serial::ReadData(char *buffer, unsigned int nbChar)
|
||||
{
|
||||
//Number of bytes we'll have read
|
||||
DWORD bytesRead;
|
||||
//Number of bytes we'll really ask to read
|
||||
unsigned int toRead;
|
||||
|
||||
//Use the ClearCommError function to get status info on the Serial port
|
||||
ClearCommError(this->hSerial, &this->errors, &this->status);
|
||||
|
||||
//block till there's something to read
|
||||
while(this->status.cbInQue<=0){
|
||||
Sleep(10);
|
||||
}
|
||||
|
||||
//Check if there is something to read
|
||||
if(this->status.cbInQue>0)
|
||||
{
|
||||
//If there is we check if there is enough data to read the required number
|
||||
//of characters, if not we'll read only the available characters to prevent
|
||||
//locking of the application.
|
||||
if(this->status.cbInQue>nbChar)
|
||||
{
|
||||
toRead = nbChar;
|
||||
}
|
||||
else
|
||||
{
|
||||
toRead = this->status.cbInQue;
|
||||
}
|
||||
|
||||
//Try to read the require number of chars, and return the number of read bytes on success
|
||||
if(ReadFile(this->hSerial, buffer, toRead, &bytesRead, NULL))
|
||||
{
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//If nothing has been read, or that an error was detected return 0
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool Serial::WriteData(const char *buffer, unsigned int nbChar)
|
||||
{
|
||||
DWORD bytesSend;
|
||||
|
||||
//Try to write the buffer on the Serial port
|
||||
if(!WriteFile(this->hSerial, (void *)buffer, nbChar, &bytesSend, 0))
|
||||
{
|
||||
//In case it don't work get comm error and return false
|
||||
ClearCommError(this->hSerial, &this->errors, &this->status);
|
||||
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Serial::IsConnected()
|
||||
{
|
||||
//Simply return the connection status
|
||||
return this->connected;
|
||||
}
|
46
PlottWareControl/serial.h
Normal file
@ -0,0 +1,46 @@
|
||||
#ifndef SERIAL_H_INCLUDED
|
||||
#define SERIAL_H_INCLUDED
|
||||
|
||||
//#include <windows.h>
|
||||
#include <wx/msw/private.h>
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
|
||||
#define ARDUINO_WAIT_TIME 2000
|
||||
|
||||
/**
|
||||
Got from: https://playground.arduino.cc/Interfacing/CPPWindows
|
||||
**/
|
||||
|
||||
class Serial
|
||||
{
|
||||
private:
|
||||
//Serial comm handler
|
||||
HANDLE hSerial;
|
||||
//Connection status
|
||||
bool connected;
|
||||
//Get various information about the connection
|
||||
COMSTAT status;
|
||||
//Keep track of last error
|
||||
DWORD errors;
|
||||
|
||||
public:
|
||||
//Initialize Serial communication with the given COM port
|
||||
Serial();
|
||||
bool conn(const char *portName, int baud);
|
||||
//Close the connection
|
||||
~Serial();
|
||||
void disconn();
|
||||
//Read data in a buffer, if nbChar is greater than the
|
||||
//maximum number of bytes available, it will return only the
|
||||
//bytes available. The function return -1 when nothing could
|
||||
//be read, the number of bytes actually read.
|
||||
int ReadData(char *buffer, unsigned int nbChar);
|
||||
//Writes data from a buffer through the Serial connection
|
||||
//return true on success.
|
||||
bool WriteData(const char *buffer, unsigned int nbChar);
|
||||
//Check if we are actually connected
|
||||
bool IsConnected();
|
||||
};
|
||||
|
||||
#endif // SERIAL_H_INCLUDED
|
29
PlottWareControl/settings.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
#include "settings.h"
|
||||
|
||||
Settings::Settings(){
|
||||
printer=Printer();
|
||||
#ifdef PWC_DEBUG
|
||||
debugmode=true;
|
||||
#else
|
||||
debugmode=false;
|
||||
#endif // PWC_DEBUG
|
||||
}
|
||||
|
||||
Settings::Settings(Printer _printer, bool _debugmode){
|
||||
printer=_printer;
|
||||
debugmode=_debugmode;
|
||||
}
|
||||
|
||||
Printer* Settings::getPrinter(){
|
||||
return &printer;
|
||||
}
|
||||
|
||||
bool Settings::isDebug(){
|
||||
return debugmode;
|
||||
}
|
||||
|
||||
bool Settings::setSettings(Printer _printer, bool _debugmode){
|
||||
printer=_printer;
|
||||
debugmode=_debugmode;
|
||||
return true;
|
||||
}
|
20
PlottWareControl/settings.h
Normal file
@ -0,0 +1,20 @@
|
||||
#ifndef SETTINGS_H_INCLUDED
|
||||
#define SETTINGS_H_INCLUDED
|
||||
|
||||
#include <string>
|
||||
#include "printer.h"
|
||||
|
||||
class Settings{
|
||||
Printer printer;
|
||||
bool debugmode;
|
||||
public:
|
||||
Settings();
|
||||
Settings(Printer _printer, bool _debugmode);
|
||||
|
||||
Printer* getPrinter();
|
||||
bool isDebug();
|
||||
|
||||
bool setSettings(Printer _printer, bool _debugmode);
|
||||
};
|
||||
|
||||
#endif // SETTINGS_H_INCLUDED
|
33
PlottWareControl/version.h
Normal file
@ -0,0 +1,33 @@
|
||||
#ifndef VERSION_H
|
||||
#define VERSION_H
|
||||
|
||||
namespace Version{
|
||||
|
||||
//Date Version Types
|
||||
static const char DATE[] = "06";
|
||||
static const char MONTH[] = "12";
|
||||
static const char YEAR[] = "2017";
|
||||
static const char UBUNTU_VERSION_STYLE[] = "17.12";
|
||||
|
||||
//Software Status
|
||||
static const char STATUS[] = "Alpha";
|
||||
static const char STATUS_SHORT[] = "a";
|
||||
|
||||
//Standard Version Type
|
||||
static const long MAJOR = 0;
|
||||
static const long MINOR = 1;
|
||||
static const long BUILD = 5;
|
||||
static const long REVISION = 28;
|
||||
|
||||
//Miscellaneous Version Types
|
||||
static const long BUILDS_COUNT = 356;
|
||||
#define RC_FILEVERSION 0,1,5,28
|
||||
#define RC_FILEVERSION_STRING "0, 1, 5, 28\0"
|
||||
static const char FULLVERSION_STRING [] = "0.1.5.28";
|
||||
|
||||
//These values are to keep track of your versioning state, don't modify them.
|
||||
static const long BUILD_HISTORY = 0;
|
||||
|
||||
|
||||
}
|
||||
#endif //VERSION_H
|
44
PlottWareControl/wxsmith/GcodeEditorDialog.wxs
Normal file
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<wxsmith>
|
||||
<object class="wxDialog" name="GcodeEditorDialog">
|
||||
<size>902,565</size>
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<pos_arg>1</pos_arg>
|
||||
<size_arg>1</size_arg>
|
||||
<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="GcodeText" member="yes">
|
||||
<pos>16,48</pos>
|
||||
<size>872,500</size>
|
||||
<font>
|
||||
<size>10</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
<face>Courier New</face>
|
||||
</font>
|
||||
<style>wxTE_MULTILINE</style>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText1" member="yes">
|
||||
<label>G code editor</label>
|
||||
<pos>24,16</pos>
|
||||
<font>
|
||||
<size>16</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
<face></face>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON1" variable="SaveButton" member="yes">
|
||||
<label>Save</label>
|
||||
<pos>704,16</pos>
|
||||
<handler function="OnSaveButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON2" variable="CancelButton" member="yes">
|
||||
<label>Cancel</label>
|
||||
<pos>792,16</pos>
|
||||
<handler function="OnCancelButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
</object>
|
||||
</wxsmith>
|
621
PlottWareControl/wxsmith/PlottWareControlframe.wxs
Normal file
@ -0,0 +1,621 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<wxsmith>
|
||||
<object class="wxFrame" name="PlottWareControlFrame">
|
||||
<title>PlottWareControl</title>
|
||||
<icon>.\res\icon.bmp</icon>
|
||||
<size>473,543</size>
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<id_arg>0</id_arg>
|
||||
<object class="wxNotebook" name="ID_NOTEBOOK2" variable="MenuChanger" member="yes">
|
||||
<pos>680,72</pos>
|
||||
<size>475,536</size>
|
||||
<object class="notebookpage">
|
||||
<object class="wxPanel" name="ID_PANEL2" variable="MenuChangerProjectPage" member="yes">
|
||||
<size>467,421</size>
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<object class="wxButton" name="ID_BUTTON1" variable="ProjNewButton" member="yes">
|
||||
<label>New</label>
|
||||
<pos>16,56</pos>
|
||||
<tooltip>Create new project</tooltip>
|
||||
<handler function="OnProjNewButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText1" member="yes">
|
||||
<label>Project</label>
|
||||
<pos>16,16</pos>
|
||||
<font>
|
||||
<size>14</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON2" variable="ProjOpenButton" member="yes">
|
||||
<label>Open</label>
|
||||
<pos>104,56</pos>
|
||||
<tooltip>Open an existing project</tooltip>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON3" variable="ProjSaveButton" member="yes">
|
||||
<label>Save</label>
|
||||
<pos>192,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Save current project</tooltip>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON4" variable="ProjCloseButton" member="yes">
|
||||
<label>Close</label>
|
||||
<pos>280,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Close current project</tooltip>
|
||||
<handler function="OnProjCloseButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
</object>
|
||||
<label>Project</label>
|
||||
</object>
|
||||
<object class="notebookpage">
|
||||
<object class="wxPanel" name="ID_PANEL3" variable="MenuChangerImagesPage" member="yes">
|
||||
<size>467,479</size>
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT2" variable="StaticText2" member="yes">
|
||||
<label>Images</label>
|
||||
<pos>16,16</pos>
|
||||
<font>
|
||||
<size>14</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxListBox" name="ID_LISTBOX1" variable="ImagesImageListBox" member="yes">
|
||||
<default>-1</default>
|
||||
<pos>24,56</pos>
|
||||
<size>120,168</size>
|
||||
<handler function="OnImagesImageListBoxSelect" entry="EVT_LISTBOX" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON5" variable="ImagesAddButton" member="yes">
|
||||
<label>Add image</label>
|
||||
<pos>160,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Load new image</tooltip>
|
||||
<handler function="OnImagesAddButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON6" variable="ImagesDeleteButton" member="yes">
|
||||
<label>Delete</label>
|
||||
<pos>160,88</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Delete selected image</tooltip>
|
||||
<handler function="OnImagesDeleteButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON9" variable="ImagesPreviewButton" member="yes">
|
||||
<label>Combine</label>
|
||||
<pos>16,464</pos>
|
||||
<size>432,23</size>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Preview images on canvas</tooltip>
|
||||
<handler function="OnImagesPreviewButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON23" variable="ImagesImageListMoveUpButton" member="yes">
|
||||
<label>/\\</label>
|
||||
<pos>160,168</pos>
|
||||
<size>24,23</size>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnImagesImageListMoveUpButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON24" variable="ImagesImageListMoveDownButton" member="yes">
|
||||
<label>\\/</label>
|
||||
<pos>160,200</pos>
|
||||
<size>24,23</size>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnImagesImageListMoveDownButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT25" variable="StaticText24" member="yes">
|
||||
<label>Size:</label>
|
||||
<pos>24,248</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT26" variable="ImagesSizeLabel" member="yes">
|
||||
<label>0x0</label>
|
||||
<pos>88,248</pos>
|
||||
<size>120,13</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT27" variable="StaticText25" member="yes">
|
||||
<label>Scale:</label>
|
||||
<pos>24,272</pos>
|
||||
</object>
|
||||
<object class="wxTextCtrl" name="ID_TEXTCTRL2" variable="ImagesScaleText" member="yes">
|
||||
<value>0</value>
|
||||
<pos>88,264</pos>
|
||||
<size>120,21</size>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnImagesScaleTextText" entry="EVT_TEXT" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL1" variable="ImagesPositionXSpinner" member="yes">
|
||||
<value>0</value>
|
||||
<max>999999999</max>
|
||||
<pos>88,288</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>X coordinate of image</tooltip>
|
||||
<handler function="OnImagesPositionXSpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL2" variable="ImagesPositionYSpinner" member="yes">
|
||||
<value>0</value>
|
||||
<max>999999999</max>
|
||||
<pos>88,312</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>X coordinate of image</tooltip>
|
||||
<handler function="OnImagesPositionYSpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL3" variable="ImagesCropX1Spinner" member="yes">
|
||||
<value>0</value>
|
||||
<max>999999999</max>
|
||||
<pos>88,336</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>X coordinate of top-left crop point</tooltip>
|
||||
<handler function="OnImagesCropX1SpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL4" variable="ImagesCropY1Spinner" member="yes">
|
||||
<value>0</value>
|
||||
<max>999999999</max>
|
||||
<pos>88,360</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Y coordinate of top-left crop point</tooltip>
|
||||
<handler function="OnImagesCropY1SpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL5" variable="ImagesCropX2Spinner" member="yes">
|
||||
<value>0</value>
|
||||
<max>999999999</max>
|
||||
<pos>88,384</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>X coordinate of bottom-right crop point</tooltip>
|
||||
<handler function="OnImagesCropX2SpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL6" variable="ImagesCropY2Spinner" member="yes">
|
||||
<value>0</value>
|
||||
<max>999999999</max>
|
||||
<pos>88,408</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Y coordinate of bottom-right crop point</tooltip>
|
||||
<handler function="OnImagesCropY2SpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT4" variable="StaticText4" member="yes">
|
||||
<label>X</label>
|
||||
<pos>72,296</pos>
|
||||
<size>8,13</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT5" variable="StaticText5" member="yes">
|
||||
<label>Y</label>
|
||||
<pos>72,320</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT3" variable="StaticText3" member="yes">
|
||||
<label>Position:</label>
|
||||
<pos>24,296</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT7" variable="StaticText7" member="yes">
|
||||
<label>X1</label>
|
||||
<pos>72,344</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT9" variable="StaticText9" member="yes">
|
||||
<label>Y1</label>
|
||||
<pos>72,368</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT8" variable="StaticText8" member="yes">
|
||||
<label>X2</label>
|
||||
<pos>72,392</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT10" variable="StaticText10" member="yes">
|
||||
<label>Y2</label>
|
||||
<pos>72,416</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT6" variable="StaticText6" member="yes">
|
||||
<label>Crop:</label>
|
||||
<pos>24,344</pos>
|
||||
</object>
|
||||
</object>
|
||||
<label>Images</label>
|
||||
</object>
|
||||
<object class="notebookpage">
|
||||
<object class="wxPanel" name="ID_PANEL4" variable="MenuChangerProcessingPage" member="yes">
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT12" variable="StaticText12" member="yes">
|
||||
<label>Retrival mode:</label>
|
||||
<pos>16,56</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT11" variable="StaticText11" member="yes">
|
||||
<label>Processing</label>
|
||||
<pos>16,16</pos>
|
||||
<font>
|
||||
<size>14</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxRadioButton" name="ID_RADIOBUTTON1" variable="ProcessingRetrAllRadio" member="yes">
|
||||
<label>All</label>
|
||||
<selected>1</selected>
|
||||
<pos>144,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Retrive all borders</tooltip>
|
||||
<style>wxRB_GROUP</style>
|
||||
<handler function="OnProcessingRetrAllRadioSelect" entry="EVT_RADIOBUTTON" />
|
||||
</object>
|
||||
<object class="wxRadioButton" name="ID_RADIOBUTTON2" variable="ProcessingRetrExtRadio" member="yes">
|
||||
<label>External</label>
|
||||
<pos>192,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Retrive only the external border</tooltip>
|
||||
<handler function="OnProcessingRetrExtRadioSelect" entry="EVT_RADIOBUTTON" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT13" variable="StaticText13" member="yes">
|
||||
<label>Canny threshold:</label>
|
||||
<pos>16,88</pos>
|
||||
</object>
|
||||
<object class="wxSlider" name="ID_SLIDER1" variable="ProcessingCannyThreshSlider" member="yes">
|
||||
<value>100</value>
|
||||
<max>255</max>
|
||||
<pos>144,80</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Threshold for canny edge detection</tooltip>
|
||||
<handler function="OnProcessingCannyThreshSliderCmdScroll" entry="EVT_COMMAND_SCROLL" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT14" variable="StaticText14" member="yes">
|
||||
<label>Coloring:</label>
|
||||
<pos>16,136</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT15" variable="StaticText15" member="yes">
|
||||
<label>Edge:</label>
|
||||
<pos>144,136</pos>
|
||||
<size>32,13</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT16" variable="StaticText16" member="yes">
|
||||
<label>Color:</label>
|
||||
<pos>144,160</pos>
|
||||
</object>
|
||||
<object class="wxChoice" name="ID_CHOICE1" variable="ProcessingColorLineSelect" member="yes">
|
||||
<pos>184,128</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Edge to be colored</tooltip>
|
||||
<handler function="OnProcessingColorLineSelectSelect" entry="EVT_CHOICE" />
|
||||
</object>
|
||||
<object class="wxChoice" name="ID_CHOICE2" variable="ProcessingColorColorSelect" member="yes">
|
||||
<content>
|
||||
<item>Leave out</item>
|
||||
</content>
|
||||
<pos>184,152</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Used color</tooltip>
|
||||
<handler function="OnProcessingColorColorSelectSelect" entry="EVT_CHOICE" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON25" variable="ProcessingColorForAllButton" member="yes">
|
||||
<label>Set for all</label>
|
||||
<pos>320,152</pos>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnProcessingColorForAllButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON8" variable="ProcessingPreviewButton" member="yes">
|
||||
<label>Process</label>
|
||||
<pos>16,208</pos>
|
||||
<size>440,23</size>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Preview the processed image</tooltip>
|
||||
<handler function="OnProcessingPreviewButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
</object>
|
||||
<label>Processing</label>
|
||||
</object>
|
||||
<object class="notebookpage">
|
||||
<object class="wxPanel" name="ID_PANEL5" variable="MenuChangerGcodePage" member="yes">
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT17" variable="StaticText17" member="yes">
|
||||
<label>G code</label>
|
||||
<pos>16,16</pos>
|
||||
<font>
|
||||
<size>14</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON10" variable="GcodeGenerateButton" member="yes">
|
||||
<label>Generate</label>
|
||||
<pos>16,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Generate G code</tooltip>
|
||||
<handler function="OnGcodeGenerateButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON12" variable="GcodeEditButton" member="yes">
|
||||
<label>Edit</label>
|
||||
<pos>104,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Edit generate G code</tooltip>
|
||||
<handler function="OnGcodeEditButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON13" variable="GcodeExportButton" member="yes">
|
||||
<label>Export</label>
|
||||
<pos>192,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Export G code to file</tooltip>
|
||||
<handler function="OnGcodeExportButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
</object>
|
||||
<label>G code</label>
|
||||
</object>
|
||||
<object class="notebookpage">
|
||||
<object class="wxPanel" name="ID_PANEL6" variable="MenuChangerPrintingPage" member="yes">
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT18" variable="StaticText18" member="yes">
|
||||
<label>Printing</label>
|
||||
<pos>16,16</pos>
|
||||
<font>
|
||||
<size>14</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxPanel" name="ID_PANEL1" variable="Panel1" member="yes">
|
||||
<pos>8,120</pos>
|
||||
<size>440,280</size>
|
||||
<bg>#E0E0E0</bg>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT19" variable="StaticText19" member="yes">
|
||||
<label>Printer</label>
|
||||
<pos>8,8</pos>
|
||||
<font>
|
||||
<size>12</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT20" variable="StaticText20" member="yes">
|
||||
<label>Status:</label>
|
||||
<pos>88,8</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT21" variable="PrintingPrinterStatusLabel" member="yes">
|
||||
<label>Offline</label>
|
||||
<pos>128,8</pos>
|
||||
<size>48,13</size>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON7" variable="PrintingPrinterConnectButton" member="yes">
|
||||
<label>Connect</label>
|
||||
<pos>8,32</pos>
|
||||
<size>72,23</size>
|
||||
<tooltip>Connect/Disconnect to the printer</tooltip>
|
||||
<handler function="OnPrintingPrinterConnectButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON16" variable="PrintingPrinterUpButton" member="yes">
|
||||
<label>/\\</label>
|
||||
<pos>208,40</pos>
|
||||
<size>20,20</size>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnPrintingPrinterUpButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON17" variable="PrintingPrinterDownButton" member="yes">
|
||||
<label>\\/</label>
|
||||
<pos>208,72</pos>
|
||||
<size>20,20</size>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnPrintingPrinterDownButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON18" variable="PrintingPrinterLeftButton" member="yes">
|
||||
<label><</label>
|
||||
<pos>184,56</pos>
|
||||
<size>20,20</size>
|
||||
<enabled>0</enabled>
|
||||
<font>
|
||||
<size>12</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
<face>Arial</face>
|
||||
</font>
|
||||
<handler function="OnPrintingPrinterLeftButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON19" variable="PrintingPrinterRightButton" member="yes">
|
||||
<label>></label>
|
||||
<pos>232,56</pos>
|
||||
<size>20,20</size>
|
||||
<enabled>0</enabled>
|
||||
<font>
|
||||
<size>12</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
<handler function="OnPrintingPrinterRightButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON20" variable="PrintingPrinterHomeButton" member="yes">
|
||||
<label>Home</label>
|
||||
<pos>320,8</pos>
|
||||
<size>50,23</size>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Home axises</tooltip>
|
||||
<handler function="OnPrintingPrinterHomeButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxChoice" name="ID_CHOICE3" variable="PrintingPrinterHeadSelect" member="yes">
|
||||
<content>
|
||||
<item>No tool</item>
|
||||
</content>
|
||||
<selection>0</selection>
|
||||
<pos>320,32</pos>
|
||||
<size>112,21</size>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Select used drawing head</tooltip>
|
||||
<handler function="OnPrintingPrinterHeadSelectSelect" entry="EVT_CHOICE" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT22" variable="StaticText21" member="yes">
|
||||
<label>Head:</label>
|
||||
<pos>280,40</pos>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON21" variable="PrintingPrinterPowerButton" member="yes">
|
||||
<label>Power</label>
|
||||
<pos>384,8</pos>
|
||||
<size>50,23</size>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Cycle power supply</tooltip>
|
||||
<handler function="OnPrintingPrinterPowerButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL7" variable="PrintingPrinterMoveSpinner" member="yes">
|
||||
<value>25</value>
|
||||
<pos>320,64</pos>
|
||||
<size>48,21</size>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Amount in mm to move when button pressed</tooltip>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT24" variable="StaticText23" member="yes">
|
||||
<label>Move:</label>
|
||||
<pos>280,72</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT23" variable="StaticText22" member="yes">
|
||||
<label>Power:</label>
|
||||
<pos>88,32</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT28" variable="PrintingPrinterPowerLabel" member="yes">
|
||||
<label></label>
|
||||
<pos>128,32</pos>
|
||||
<size>48,13</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT29" variable="StaticText26" member="yes">
|
||||
<label>X:</label>
|
||||
<pos>8,64</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT30" variable="StaticText27" member="yes">
|
||||
<label>Y:</label>
|
||||
<pos>8,80</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT32" variable="PrintingPrinterXLabel" member="yes">
|
||||
<label></label>
|
||||
<pos>24,64</pos>
|
||||
<size>48,13</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT33" variable="PrintingPrinterYLabel" member="yes">
|
||||
<label></label>
|
||||
<pos>24,80</pos>
|
||||
<size>48,13</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT31" variable="StaticText28" member="yes">
|
||||
<label>Console:</label>
|
||||
<pos>8,120</pos>
|
||||
</object>
|
||||
<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="PrintingPrinterConsole" member="yes">
|
||||
<pos>64,112</pos>
|
||||
<size>360,21</size>
|
||||
<enabled>0</enabled>
|
||||
<handler function="OnPrintingPrinterConsoleTextEnter" entry="EVT_TEXT_ENTER" />
|
||||
</object>
|
||||
<object class="wxListBox" name="ID_LISTBOX2" variable="PrintingPrinterLog" member="yes">
|
||||
<default>-1</default>
|
||||
<pos>8,160</pos>
|
||||
<size>424,104</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT34" variable="StaticText29" member="yes">
|
||||
<label>Log:</label>
|
||||
<pos>8,144</pos>
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON11" variable="PrintingPrintButton" member="yes">
|
||||
<label>Print</label>
|
||||
<pos>16,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Start printing</tooltip>
|
||||
<handler function="OnPrintingPrintButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON14" variable="PrintingStopButton" member="yes">
|
||||
<label>Stop</label>
|
||||
<pos>104,56</pos>
|
||||
<enabled>0</enabled>
|
||||
<tooltip>Stop printing</tooltip>
|
||||
<handler function="OnPrintingStopButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON15" variable="PrintingEmergencyButton" member="yes">
|
||||
<label>Emergency stop</label>
|
||||
<pos>320,16</pos>
|
||||
<size>128,56</size>
|
||||
<enabled>0</enabled>
|
||||
<bg>#F81F5A</bg>
|
||||
<font>
|
||||
<size>10</size>
|
||||
<style>normal</style>
|
||||
<weight>bold</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
<tooltip>Reset printer immediately</tooltip>
|
||||
<handler function="OnPrintingEmergencyButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT35" variable="PrintingStatusLabel" member="yes">
|
||||
<label>Print status:</label>
|
||||
<pos>24,440</pos>
|
||||
<hidden>1</hidden>
|
||||
</object>
|
||||
<object class="wxGauge" name="ID_GAUGE1" variable="PrintingStatusGauge" member="yes">
|
||||
<range>1</range>
|
||||
<pos>104,432</pos>
|
||||
<size>336,36</size>
|
||||
<hidden>1</hidden>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT36" variable="PrintingElapsedTimeLabelLabel" member="yes">
|
||||
<label>Elapsed time:</label>
|
||||
<pos>24,488</pos>
|
||||
<size>72,13</size>
|
||||
<hidden>1</hidden>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT37" variable="PrintingElapsedTimeLabel" member="yes">
|
||||
<label>00:00:00</label>
|
||||
<pos>104,488</pos>
|
||||
<size>336,13</size>
|
||||
<hidden>1</hidden>
|
||||
</object>
|
||||
</object>
|
||||
<label>Printing</label>
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxMenuBar" variable="MenuBar1" member="no">
|
||||
<object class="wxMenu" variable="Menu1" member="no">
|
||||
<label>&File</label>
|
||||
<object class="wxMenuItem" name="MenuSettingItem" variable="MenuItemSettings" member="yes">
|
||||
<label>Settings</label>
|
||||
<accel>Ctrl-s</accel>
|
||||
<help>Change settings</help>
|
||||
<handler function="OnMenuItemSettingsSelected" entry="EVT_MENU" />
|
||||
</object>
|
||||
<object class="wxMenuItem" name="MenuQuitItem" variable="MenuItem1" member="no">
|
||||
<label>Quit</label>
|
||||
<accel>Alt-F4</accel>
|
||||
<help>Quit the application</help>
|
||||
<handler function="OnQuit" entry="EVT_MENU" />
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxMenu" variable="Menu2" member="no">
|
||||
<label>Help</label>
|
||||
<object class="wxMenuItem" name="idMenuAbout" variable="MenuItem2" member="no">
|
||||
<label>About</label>
|
||||
<accel>F1</accel>
|
||||
<help>Show info about this application</help>
|
||||
<handler function="OnAbout" entry="EVT_MENU" />
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="wxStatusBar" name="ID_STATUSBAR1" variable="StatusBar1" member="yes">
|
||||
<fields>2</fields>
|
||||
<widths>375,100</widths>
|
||||
<styles>wxSB_NORMAL,wxSB_NORMAL</styles>
|
||||
</object>
|
||||
<object class="wxFileDialog" variable="FileDialog1" member="yes">
|
||||
<message>Select file</message>
|
||||
</object>
|
||||
<object class="wxMessageDialog" name="ID_MESSAGEDIALOG1" variable="MessageDialog1" member="yes">
|
||||
<caption>Message</caption>
|
||||
<message></message>
|
||||
</object>
|
||||
<object class="wxStopWatch" variable="PrintingStopWatch" member="yes" />
|
||||
<object class="wxTimer" name="ID_TIMER1" variable="PrintingElapsedTimeCheckerTimer" member="yes">
|
||||
<handler function="OnPrintingElapsedTimeCheckerTimerTrigger" entry="EVT_TIMER" />
|
||||
</object>
|
||||
</object>
|
||||
</wxsmith>
|
162
PlottWareControl/wxsmith/SettingDialog.wxs
Normal file
@ -0,0 +1,162 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<wxsmith>
|
||||
<object class="wxDialog" name="SettingDialog">
|
||||
<size>389,432</size>
|
||||
<bg>wxSYS_COLOUR_WINDOW</bg>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText1" member="yes">
|
||||
<label>Settings</label>
|
||||
<pos>0,8</pos>
|
||||
<font>
|
||||
<size>14</size>
|
||||
<style>normal</style>
|
||||
<weight>normal</weight>
|
||||
<underlined>0</underlined>
|
||||
<family>swiss</family>
|
||||
</font>
|
||||
</object>
|
||||
<object class="wxStaticBox" name="ID_STATICBOX1" variable="StaticBox1" member="yes">
|
||||
<label>Printer</label>
|
||||
<pos>8,48</pos>
|
||||
<size>376,280</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT2" variable="StaticText2" member="yes">
|
||||
<label>Length:</label>
|
||||
<pos>32,72</pos>
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL1" variable="LengthSpinner" member="yes">
|
||||
<value>0</value>
|
||||
<min>-1</min>
|
||||
<max>100000</max>
|
||||
<pos>104,64</pos>
|
||||
<tooltip>Length of printing area (-1 for infinite)</tooltip>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT3" variable="StaticText3" member="yes">
|
||||
<label>mm</label>
|
||||
<pos>248,72</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT4" variable="StaticText4" member="yes">
|
||||
<label>Width:</label>
|
||||
<pos>32,96</pos>
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL2" variable="WidthSpinner" member="yes">
|
||||
<value>0</value>
|
||||
<min>-1</min>
|
||||
<max>100000</max>
|
||||
<pos>104,88</pos>
|
||||
<tooltip>Width of printing area (-1 for infinite)</tooltip>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT5" variable="StaticText5" member="yes">
|
||||
<label>mm</label>
|
||||
<pos>248,96</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT6" variable="StaticText6" member="yes">
|
||||
<label>Pen count:</label>
|
||||
<pos>32,120</pos>
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL3" variable="PencountSpinner" member="yes">
|
||||
<value>0</value>
|
||||
<pos>104,112</pos>
|
||||
<tooltip>Number of available drawing pens</tooltip>
|
||||
<handler function="OnPencountSpinnerChange" entry="EVT_SPINCTRL" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT7" variable="StaticText7" member="yes">
|
||||
<label>Pens:</label>
|
||||
<pos>32,144</pos>
|
||||
</object>
|
||||
<object class="wxListBox" name="ID_LISTBOX1" variable="PensListBox" member="yes">
|
||||
<default>-1</default>
|
||||
<pos>104,136</pos>
|
||||
<size>120,80</size>
|
||||
<tooltip>List of pens</tooltip>
|
||||
<handler function="OnPensListBoxSelect" entry="EVT_LISTBOX" />
|
||||
</object>
|
||||
<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="PenColorText" member="yes">
|
||||
<pos>264,152</pos>
|
||||
<tooltip>Color of pen</tooltip>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT8" variable="StaticText8" member="yes">
|
||||
<label>Color:</label>
|
||||
<pos>232,160</pos>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON1" variable="PenColorSetButton" member="yes">
|
||||
<label>Set</label>
|
||||
<pos>232,176</pos>
|
||||
<size>136,23</size>
|
||||
<tooltip>Set color</tooltip>
|
||||
<handler function="OnPenColorSetButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxStaticLine" name="ID_STATICLINE1" variable="StaticLine1" member="yes">
|
||||
<pos>24,232</pos>
|
||||
<size>344,3</size>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT9" variable="StaticText9" member="yes">
|
||||
<label>Serial port:</label>
|
||||
<pos>32,248</pos>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT10" variable="StaticText10" member="yes">
|
||||
<label>Baud rate:</label>
|
||||
<pos>32,272</pos>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON2" variable="PrinterAutoDetectButton" member="yes">
|
||||
<label>Auto detect</label>
|
||||
<pos>32,296</pos>
|
||||
<tooltip>Auto detect printer settings (only works if serial port and baud rate is set)</tooltip>
|
||||
<handler function="OnPrinterAutoDetectButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT11" variable="StaticText11" member="yes">
|
||||
<label>Debug mode:</label>
|
||||
<pos>16,352</pos>
|
||||
</object>
|
||||
<object class="wxCheckBox" name="ID_CHECKBOX1" variable="DebugModeCheck" member="yes">
|
||||
<label>Enable</label>
|
||||
<pos>96,352</pos>
|
||||
<tooltip>Enable debug mode (show stages of image processing)</tooltip>
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON3" variable="SaveSettingsButton" member="yes">
|
||||
<label>Save</label>
|
||||
<pos>176,384</pos>
|
||||
<tooltip>Save settings</tooltip>
|
||||
<handler function="OnSaveSettingsButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxButton" name="ID_BUTTON4" variable="CancelSettingsButton" member="yes">
|
||||
<label>Cancel</label>
|
||||
<pos>272,384</pos>
|
||||
<tooltip>Dismiss changes</tooltip>
|
||||
<handler function="OnCancelSettingsButtonClick" entry="EVT_BUTTON" />
|
||||
</object>
|
||||
<object class="wxChoice" name="ID_CHOICE2" variable="BaudRateChoice" member="yes">
|
||||
<content>
|
||||
<item>300</item>
|
||||
<item>600</item>
|
||||
<item>1200</item>
|
||||
<item>2400</item>
|
||||
<item>4800</item>
|
||||
<item>9600</item>
|
||||
<item>14400</item>
|
||||
<item>19200</item>
|
||||
<item>28800</item>
|
||||
<item>38400</item>
|
||||
<item>57600</item>
|
||||
<item>115200</item>
|
||||
</content>
|
||||
<selection>0</selection>
|
||||
<pos>104,264</pos>
|
||||
<size>120,21</size>
|
||||
<tooltip>Baud rate of device</tooltip>
|
||||
</object>
|
||||
<object class="wxSpinCtrl" name="ID_SPINCTRL4" variable="SerialPortSpinner" member="yes">
|
||||
<value>0</value>
|
||||
<pos>136,240</pos>
|
||||
<size>88,21</size>
|
||||
<tooltip>Serial port on which the plotter is connected</tooltip>
|
||||
</object>
|
||||
<object class="wxStaticText" name="ID_STATICTEXT12" variable="StaticText12" member="yes">
|
||||
<label>COM</label>
|
||||
<pos>104,248</pos>
|
||||
</object>
|
||||
<object class="wxMessageDialog" name="ID_MESSAGEDIALOG1" variable="MessageDialog1" member="yes">
|
||||
<caption>Message</caption>
|
||||
<message></message>
|
||||
</object>
|
||||
</object>
|
||||
</wxsmith>
|
619
PlottWareFirmware/LICENSE.txt
Normal file
@ -0,0 +1,619 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
672
PlottWareFirmware/PlottWareFirmware.cbp
Normal file
@ -0,0 +1,672 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_project_file>
|
||||
<FileVersion major="1" minor="6" />
|
||||
<Project>
|
||||
<Option title="PlottWareFirmware" />
|
||||
<Option pch_mode="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Build>
|
||||
<Target title="Simulator - Debug">
|
||||
<Option output="build/PlottWareFirmware_sim.exe" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="obj/Debug/" />
|
||||
<Option type="1" />
|
||||
<Option compiler="GCC" />
|
||||
<Compiler>
|
||||
<Add option="-g" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-DARDUSIM" />
|
||||
<Add option="-D__AVR_ATmega2560__" />
|
||||
<Add option="-x c++" />
|
||||
<Add directory="$(ARDUINO_DIR)/arduino/cores" />
|
||||
<Add directory="$(ARDUINO_DIR)/arduino/variants/standard" />
|
||||
<Add directory="$(ARDUINO_DIR)/include" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-lardusim" />
|
||||
</Linker>
|
||||
<Environment>
|
||||
<Variable name="ARDUINO_DIR" value="$(APP_PATH)/ardusim" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Simulator - Release">
|
||||
<Option output="build/PlottWareFirmware_sim.exe" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="obj/Release/" />
|
||||
<Option type="1" />
|
||||
<Option compiler="GCC" />
|
||||
<Compiler>
|
||||
<Add option="-O2" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-DARDUSIM" />
|
||||
<Add option="-D__AVR_ATmega2560__" />
|
||||
<Add option="-x c++" />
|
||||
<Add directory="$(ARDUINO_DIR)/arduino/cores" />
|
||||
<Add directory="$(ARDUINO_DIR)/arduino/variants/standard" />
|
||||
<Add directory="$(ARDUINO_DIR)/include" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-s" />
|
||||
<Add option="-lardusim" />
|
||||
</Linker>
|
||||
<Environment>
|
||||
<Variable name="ARDUINO_DIR" value="$(APP_PATH)/ardusim" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Uno">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-Os" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega328P__" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" />
|
||||
<Add directory="C:/Users/setup/Downloads/CodeBlocks-arduino/include" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-s" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Uno" />
|
||||
<Variable name="BOARD_ID" value="uno" />
|
||||
<Variable name="MCU" value="atmega328p" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="115200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Leonardo">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega32U4__" />
|
||||
<Add option="-DUSB_VID=0x2341" />
|
||||
<Add option="-DUSB_PID=0x8036" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/leonardo" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Leonardo" />
|
||||
<Variable name="BOARD_ID" value="leonardo" />
|
||||
<Variable name="MCU" value="atmega32u4" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Esplora">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega32U4__" />
|
||||
<Add option="-DUSB_VID=0x2341" />
|
||||
<Add option="-DUSB_PID=0x8037" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/leonardo" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Esplora" />
|
||||
<Variable name="BOARD_ID" value="esplora" />
|
||||
<Variable name="MCU" value="atmega32u4" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Micro">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega32U4__" />
|
||||
<Add option="-DUSB_VID=0x2341" />
|
||||
<Add option="-DUSB_PID=0x803C" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/micro" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Micro" />
|
||||
<Variable name="BOARD_ID" value="micro" />
|
||||
<Variable name="MCU" value="atmega32u4" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Duemilanove (328)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega328P__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Duemilanove (328)" />
|
||||
<Variable name="BOARD_ID" value="duemilanove328" />
|
||||
<Variable name="MCU" value="atmega328p" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Duemilanove (168)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega168__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Duemilanove (168)" />
|
||||
<Variable name="BOARD_ID" value="duemilanove168" />
|
||||
<Variable name="MCU" value="atmega168" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="19200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Nano (328)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega328P__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Nano (328)" />
|
||||
<Variable name="BOARD_ID" value="nano328" />
|
||||
<Variable name="MCU" value="atmega328p" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Nano (168)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega168__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Nano (168)" />
|
||||
<Variable name="BOARD_ID" value="nano168" />
|
||||
<Variable name="MCU" value="atmega168" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="19200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Mini (328)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega328P__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Mini (328)" />
|
||||
<Variable name="BOARD_ID" value="mini328" />
|
||||
<Variable name="MCU" value="atmega328p" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Mini (168)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega168__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Mini (168)" />
|
||||
<Variable name="BOARD_ID" value="mini168" />
|
||||
<Variable name="MCU" value="atmega168" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="19200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Pro Mini (328)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega328P__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Pro Mini (328)" />
|
||||
<Variable name="BOARD_ID" value="promini328" />
|
||||
<Variable name="MCU" value="atmega328p" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Pro Mini (168)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega168__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Pro Mini (168)" />
|
||||
<Variable name="BOARD_ID" value="promini168" />
|
||||
<Variable name="MCU" value="atmega168" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="19200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Mega 2560/ADK">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega2560__" />
|
||||
<Add option="-O2" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/mega" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Mega 2560/ADK" />
|
||||
<Variable name="BOARD_ID" value="mega2560" />
|
||||
<Variable name="MCU" value="atmega2560" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Mega 1280">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega1280__" />
|
||||
<Add option="-O2" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/mega" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Mega 1280" />
|
||||
<Variable name="BOARD_ID" value="mega1280" />
|
||||
<Variable name="MCU" value="atmega1280" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="57600" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Arduino Mega 8">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega328P__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Arduino Mega 8" />
|
||||
<Variable name="BOARD_ID" value="mega8" />
|
||||
<Variable name="MCU" value="atmega8" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="19200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
<Target title="Microduino Core+ (644P)">
|
||||
<Option output="build/PlottWareFirmware_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" />
|
||||
<Option object_output="build" />
|
||||
<Option type="1" />
|
||||
<Option compiler="avrgcc" />
|
||||
<Compiler>
|
||||
<Add option="-x c++" />
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option="-DF_CPU=16000000L" />
|
||||
<Add option="-D__AVR_ATmega644P__" />
|
||||
<Add option="-O2" />
|
||||
<Add option="-Os" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" />
|
||||
<Add directory="$(ARDUINO_DIR)/libraries" />
|
||||
<Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/plus" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-mmcu=$(MCU)" />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add option="-s" />
|
||||
</Linker>
|
||||
<ExtraCommands>
|
||||
<Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' />
|
||||
<Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' />
|
||||
<Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' />
|
||||
<Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' />
|
||||
</ExtraCommands>
|
||||
<Environment>
|
||||
<Variable name="BOARD" value="Microduino Core+ (644P)" />
|
||||
<Variable name="BOARD_ID" value="uduino644p" />
|
||||
<Variable name="MCU" value="atmega644p" />
|
||||
<Variable name="MCU_CLOCK" value="16" />
|
||||
<Variable name="UPLOAD_BAUDRATE" value="115200" />
|
||||
<Variable name="UPLOAD_PORT" value="" />
|
||||
</Environment>
|
||||
</Target>
|
||||
</Build>
|
||||
<Compiler>
|
||||
<Add directory="." />
|
||||
</Compiler>
|
||||
<Unit filename="PlottWareFirmware.ino">
|
||||
<Option compile="1" />
|
||||
<Option link="1" />
|
||||
</Unit>
|
||||
<Unit filename="Utils.h" />
|
||||
<Unit filename="commandParsers.h" />
|
||||
<Unit filename="config.h" />
|
||||
<Unit filename="gcodeutils.h" />
|
||||
<Unit filename="globals.h" />
|
||||
<Unit filename="motors.h" />
|
||||
<Unit filename="selfreset.h" />
|
||||
<Extensions>
|
||||
<code_completion />
|
||||
<envvars />
|
||||
<debugger />
|
||||
</Extensions>
|
||||
</Project>
|
||||
</CodeBlocks_project_file>
|
115
PlottWareFirmware/PlottWareFirmware.depend
Normal file
@ -0,0 +1,115 @@
|
||||
# depslib dependency file v1.0
|
||||
1512676056 source:c:\users\setup\documents\plotter\plottwarefirmware\plottwarefirmware.ino
|
||||
<Arduino.h>
|
||||
<String.h>
|
||||
<Stepper.h>
|
||||
"config.h"
|
||||
"globals.h"
|
||||
"motors.h"
|
||||
"gcodeutils.h"
|
||||
|
||||
1371033102 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\arduino.h
|
||||
<stdlib.h>
|
||||
<string.h>
|
||||
<math.h>
|
||||
<avr/pgmspace.h>
|
||||
<avr/io.h>
|
||||
<avr/interrupt.h>
|
||||
"binary.h"
|
||||
"WCharacter.h"
|
||||
"WString.h"
|
||||
"HardwareSerial.h"
|
||||
"pins_arduino.h"
|
||||
|
||||
1314140394 c:\users\setup\downloads\codeblocks-arduino\include\stdlib.h
|
||||
<_mingw.h>
|
||||
<stddef.h>
|
||||
|
||||
1314140392 c:\users\setup\downloads\codeblocks-arduino\include\_mingw.h
|
||||
|
||||
1314140394 c:\users\setup\downloads\codeblocks-arduino\include\string.h
|
||||
<_mingw.h>
|
||||
<stddef.h>
|
||||
|
||||
1314140394 c:\users\setup\downloads\codeblocks-arduino\include\math.h
|
||||
<_mingw.h>
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\binary.h
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\wcharacter.h
|
||||
<ctype.h>
|
||||
|
||||
1314140392 c:\users\setup\downloads\codeblocks-arduino\include\ctype.h
|
||||
<_mingw.h>
|
||||
<stddef.h>
|
||||
|
||||
1371033134 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\wstring.h
|
||||
<stdlib.h>
|
||||
<string.h>
|
||||
<ctype.h>
|
||||
<avr/pgmspace.h>
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\hardwareserial.h
|
||||
<inttypes.h>
|
||||
"Stream.h"
|
||||
"USBAPI.h"
|
||||
|
||||
1314140394 c:\users\setup\downloads\codeblocks-arduino\include\inttypes.h
|
||||
<_mingw.h>
|
||||
<stdint.h>
|
||||
<stddef.h>
|
||||
|
||||
1314140394 c:\users\setup\downloads\codeblocks-arduino\include\stdint.h
|
||||
<stddef.h>
|
||||
|
||||
1371032830 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\stream.h
|
||||
<inttypes.h>
|
||||
"Print.h"
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\print.h
|
||||
<inttypes.h>
|
||||
<stdio.h>
|
||||
"WString.h"
|
||||
"Printable.h"
|
||||
|
||||
1314140394 c:\users\setup\downloads\codeblocks-arduino\include\stdio.h
|
||||
<_mingw.h>
|
||||
<stddef.h>
|
||||
<stdarg.h>
|
||||
<sys/types.h>
|
||||
|
||||
1314140396 c:\users\setup\downloads\codeblocks-arduino\include\sys\types.h
|
||||
<_mingw.h>
|
||||
<stddef.h>
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\printable.h
|
||||
<new.h>
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\new.h
|
||||
<stdlib.h>
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\cores\arduino\usbapi.h
|
||||
|
||||
1362986950 c:\users\setup\downloads\codeblocks-arduino\arduino\hardware\arduino\variants\standard\pins_arduino.h
|
||||
<avr/pgmspace.h>
|
||||
|
||||
1512675960 c:\users\setup\documents\plotter\plottwarefirmware\config.h
|
||||
<String.h>
|
||||
|
||||
1512674201 c:\users\setup\documents\plotter\plottwarefirmware\globals.h
|
||||
|
||||
1512675473 c:\users\setup\documents\plotter\plottwarefirmware\motors.h
|
||||
<Stepper.h>
|
||||
|
||||
1512675391 c:\users\setup\documents\plotter\plottwarefirmware\gcodeutils.h
|
||||
"Utils.h"
|
||||
"commandParsers.h"
|
||||
|
||||
1512677478 c:\users\setup\documents\plotter\plottwarefirmware\utils.h
|
||||
|
||||
1512677282 c:\users\setup\documents\plotter\plottwarefirmware\commandparsers.h
|
||||
<stdio.h>
|
||||
"selfreset.h"
|
||||
|
||||
1512674365 c:\users\setup\documents\plotter\plottwarefirmware\selfreset.h
|
||||
|
50
PlottWareFirmware/PlottWareFirmware.ino
Normal file
@ -0,0 +1,50 @@
|
||||
/***************************************************************************
|
||||
* Name: PlottWareFirmware.ino
|
||||
* Purpose: Source and project for the Arduino firmware
|
||||
* Author: Fandly Gergo (fandlygergo@gmail.hu)
|
||||
* Created: 2017-12-07
|
||||
* Copyright: Copyright (C) 2017 Fandly Gergo (systemtest.tk)
|
||||
* License:
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
**************************************************************************/
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#include <String.h>
|
||||
#include <Stepper.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "globals.h"
|
||||
#include "motors.h"
|
||||
#include "gcodeutils.h"
|
||||
|
||||
void setup(){
|
||||
Serial.begin(9600);
|
||||
motorSetup();
|
||||
penSetup();
|
||||
penPinsSetup();
|
||||
if(XHOME){
|
||||
pinMode(XHOME_PIN, INPUT);
|
||||
}
|
||||
if(YHOME){
|
||||
pinMode(YHOME_PIN, INPUT);
|
||||
}
|
||||
}
|
||||
|
||||
void loop(){
|
||||
if(Serial.available()){
|
||||
String code=Serial.readString();
|
||||
parseGcode(code);
|
||||
}
|
||||
}
|
39
PlottWareFirmware/PlottWareFirmware.layout
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_layout_file>
|
||||
<ActiveTarget name="Arduino Uno" />
|
||||
<File name="PlottWareFirmware.ino" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="240" topLine="4" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="gcodeutils.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="427" topLine="24" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="config.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1244" topLine="18" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="motors.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="76" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="commandParsers.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="168" topLine="9" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="globals.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="184" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="Utils.h" open="1" top="1" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="701" topLine="57" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
113
PlottWareFirmware/Utils.h
Normal file
@ -0,0 +1,113 @@
|
||||
#ifndef UTILS_H_INCLUDED
|
||||
#define UTILS_H_INCLUDED
|
||||
|
||||
unsigned long int mod(long int a){
|
||||
return a>0?a:-a;
|
||||
}
|
||||
|
||||
double toAbsoluteX(double x){
|
||||
return posX+x;
|
||||
}
|
||||
|
||||
double toAbsoluteY(double y){
|
||||
return posY+y;
|
||||
}
|
||||
|
||||
String removeComments(String code){
|
||||
if(code.indexOf(";")!=-1){
|
||||
return code.substring(0, code.indexOf(";"));
|
||||
}
|
||||
else if(code.indexOf("(")!=-1){
|
||||
return code.substring(0, code.indexOf("("))+code.substring(code.indexOf(")"));
|
||||
}
|
||||
else{
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
double getParameter(String code, char param){
|
||||
char b[50];
|
||||
code.substring(code.indexOf(param)+1, code.indexOf(" ", code.indexOf(param))).toCharArray(b, 50);
|
||||
return atof(b);
|
||||
}
|
||||
|
||||
String getCommand(String code){
|
||||
return code.substring(0, code.indexOf(" "));
|
||||
}
|
||||
|
||||
void goTo(double x, double y, long speed){
|
||||
/**
|
||||
Makes use of Bresenham algorithm
|
||||
@link https://www.marginallyclever.com/blog/2013/08/how-to-build-an-2-axis-arduino-cnc-gcode-interpreter/
|
||||
**/
|
||||
|
||||
//set speed
|
||||
stepperX.setSpeed(speed);
|
||||
stepperY.setSpeed(speed);
|
||||
|
||||
//convert to something "normal"
|
||||
if(relative){
|
||||
x=toAbsoluteX(x);
|
||||
y=toAbsoluteY(y);
|
||||
}
|
||||
|
||||
//maintain limits
|
||||
if(MAX_X!=-1 && x>MAX_X){
|
||||
x=MAX_X;
|
||||
}
|
||||
if(MAX_Y !=-1 && y>MAX_Y){
|
||||
y=MAX_Y;
|
||||
}
|
||||
|
||||
//coords to steps
|
||||
int xsteps=x*STEPX;
|
||||
int ysteps=y*STEPY;
|
||||
|
||||
//calculate deltas
|
||||
int dx=abs(xsteps-posX);
|
||||
int dy=abs(ysteps-posY);
|
||||
int moveX=x>posX?STEP_INCREMENT:-STEP_INCREMENT;
|
||||
int moveY=y>posY?STEP_INCREMENT:-STEP_INCREMENT;
|
||||
|
||||
unsigned long int over=0;
|
||||
|
||||
if(dx>dy){
|
||||
for(unsigned long int i=0; i<dx; i++){
|
||||
stepperX.step(moveX);
|
||||
over+=dy;
|
||||
if(over>=dx){
|
||||
over-=dx;
|
||||
stepperY.step(moveY);
|
||||
}
|
||||
delay(STEP_DELAY);
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(unsigned long int i=0; i<dy; i++){
|
||||
stepperY.step(moveY);
|
||||
over+=dx;
|
||||
if(over>=dy){
|
||||
over-=dy;
|
||||
stepperX.step(moveX);
|
||||
}
|
||||
delay(STEP_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
//update coords
|
||||
posX=x;
|
||||
posY=y;
|
||||
posXmm=x;
|
||||
posYmm=y;
|
||||
}
|
||||
|
||||
void penUp(int pen, bool up=true){
|
||||
if(up){
|
||||
digitalWrite(pen_pins[pen], HIGH);
|
||||
}
|
||||
else{
|
||||
digitalWrite(pen_pins[pen], LOW);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // UTILS_H_INCLUDED
|
BIN
PlottWareFirmware/build/PlottWareFirmware_uno.elf
Normal file
@ -0,0 +1 @@
|
||||
:00000001FF
|
811
PlottWareFirmware/build/PlottWareFirmware_uno.elf.hex
Normal file
@ -0,0 +1,811 @@
|
||||
:100000000C9482000C94AA000C94AA000C94AA00F0
|
||||
:100010000C94AA000C94AA000C94AA000C94AA00B8
|
||||
:100020000C94AA000C94AA000C94AA000C94AA00A8
|
||||
:100030000C94AA000C94AA000C94AA000C94AA0098
|
||||
:100040000C94B4120C94AA000C948C0F0C94DA0F3C
|
||||
:100050000C94AA000C94AA000C94AA000C94AA0078
|
||||
:100060000C94AA000C94AA000000000024002700B1
|
||||
:100070002A0000000000250028002B0000000000DE
|
||||
:1000800023002600290004040404040404040202DA
|
||||
:100090000202020203030303030301020408102007
|
||||
:1000A0004080010204081020010204081020000012
|
||||
:1000B0000007000201000003040600000000000029
|
||||
:1000C0000000494E46494E4954594E414ECDCCCC84
|
||||
:1000D0003D0AD7233C17B7D13877CC2B329595E61C
|
||||
:1000E000241FB14F0A000020410000C84200401CFC
|
||||
:1000F0004620BCBE4CCA1B0E5AAEC59D74004407B8
|
||||
:1001000046113D0711241FBECFEFD8E0DEBFCDBFA3
|
||||
:1001100011E0A0E0B1E0ECEAF1E302C005900D923D
|
||||
:10012000AE3EB107D9F713E0AEEEB1E001C01D92CB
|
||||
:10013000A530B107E1F710E0C2E0D1E004C022979A
|
||||
:10014000FE010E948318CE3FD107C9F70E949C117F
|
||||
:100150000C94C9180C940000CF93DF93BC0182303B
|
||||
:10016000910510F462E070E0A0910103B0910203E8
|
||||
:10017000ED01E0E0F0E040E050E021C088819981AD
|
||||
:100180008617970769F48A819B81309719F09383CA
|
||||
:10019000828304C09093020380930103FE0134C064
|
||||
:1001A0006817790738F44115510519F08417950738
|
||||
:1001B00008F4AC01FE018A819B819C01E901209732
|
||||
:1001C000E9F641155105A9F1CA01861B970B049761
|
||||
:1001D00008F4BA01E0E0F0E02AC08D919C911197FB
|
||||
:1001E00084179507F9F46417750781F412968D91B9
|
||||
:1001F0009C911397309719F09383828304C0909356
|
||||
:10020000020380930103FD0132964CC0CA01861B94
|
||||
:10021000970BFD01E80FF91F6193719302978D937E
|
||||
:100220009C9340C0FD01828193819C01D90110976C
|
||||
:10023000A1F68091FF0290910003892B41F48091F7
|
||||
:10024000C9019091CA01909300038093FF024091ED
|
||||
:10025000CB015091CC014115510541F44DB75EB72A
|
||||
:100260008091C7019091C801481B590B2091FF0252
|
||||
:1002700030910003CA01821B930B8617970780F009
|
||||
:10028000AB014E5F5F4F8417950750F0420F531F2D
|
||||
:10029000509300034093FF02F9016193719302C0F0
|
||||
:1002A000E0E0F0E0CF01DF91CF910895CF93DF93AD
|
||||
:1002B000009709F450C0EC0122971B821A82A0918A
|
||||
:1002C0000103B0910203109709F140E050E0AC1730
|
||||
:1002D000BD0708F1BB83AA83FE0121913191E20F92
|
||||
:1002E000F31FAE17BF0779F48D919C911197280FDA
|
||||
:1002F000391F2E5F3F4F3983288312968D919C9131
|
||||
:1003000013979B838A834115510571F4D09302039F
|
||||
:10031000C093010320C012968D919C911397AD015B
|
||||
:10032000009711F0DC01D3CFFA01D383C28321916E
|
||||
:100330003191E20FF31FCE17DF0769F488819981AD
|
||||
:10034000280F391F2E5F3F4FFA01318320838A81A6
|
||||
:100350009B8193838283DF91CF910895A0E0B0E0E9
|
||||
:10036000E4EBF1E00C9494186C01009729F4CB01B4
|
||||
:100370000E94AC006C01C1C08EEF882E8FEF982ECA
|
||||
:100380008C0C9D1C8601060F171F0815190508F413
|
||||
:10039000B2C0F401A081B181A617B707B8F0A530AB
|
||||
:1003A000B10508F4AAC0CD0104978617970708F491
|
||||
:1003B000A4C01297A61BB70BF801A193B193D40167
|
||||
:1003C0006D937C93CF010E94560197C07B01EA1A7E
|
||||
:1003D000FB0AEEEFFFEFEE0EFF1E36016A0E7B1EEC
|
||||
:1003E000C0910103D091020344245524AA24BB24C4
|
||||
:1003F0004AC0C615D705E1F5488159814E155F05FC
|
||||
:10040000B8F1CA0104978E159F05B0F41296A40F97
|
||||
:10041000B51FF401B183A0832A813B8141145104AB
|
||||
:1004200031F0D20113963C932E93129766C030930D
|
||||
:1004300002032093010361C08A819B81F8019383A9
|
||||
:100440008283425050404E195F09518340834114CA
|
||||
:10045000510431F0D20113961C930E93129704C0ED
|
||||
:100460001093020300930103F4017183608345C07C
|
||||
:1004700088819981A816B90608F45C012E018A8149
|
||||
:100480009B819C01E901209709F0B3CF8091FF0285
|
||||
:100490009091000386159705E9F4A616B706D0F4E7
|
||||
:1004A0002091CB013091CC012115310541F42DB7BC
|
||||
:1004B0003EB78091C7019091C801281B390B0217E4
|
||||
:1004C0001307C8F4109300030093FF02D4016D9347
|
||||
:1004D0007C9313C0CB010E94AC00EC01009759F053
|
||||
:1004E000F40140815181B6010E948702C6010E9439
|
||||
:1004F00056016E0102C0CC24DD24C601CDB7DEB7A3
|
||||
:10050000E0E10C94B018662777270C94D504FB0122
|
||||
:10051000DC0102C001900D9241505040D8F708957F
|
||||
:10052000FC018191861721F08823D9F79927089536
|
||||
:100530003197CF010895FB01DC018D910190801965
|
||||
:100540000110D9F3990B0895FB01DC0101900D9284
|
||||
:100550000020E1F70895FB01DC014150504048F0D4
|
||||
:1005600001900D920020C9F701C01D9241505040EA
|
||||
:10057000E0F70895FB0151915523A9F0BF01DC017B
|
||||
:100580004D9145174111E1F759F4CD01019000203B
|
||||
:1005900049F04D9140154111C9F3FB014111EFCFD5
|
||||
:1005A00081E090E001970895AEE0B0E0EAEDF2E07E
|
||||
:1005B0000C94A0180D891E8986E08C831A83098308
|
||||
:1005C0008FEF9FE79E838D839E01275E3F4FCE0175
|
||||
:1005D00001966F89788DA9010E94F8022F813885D4
|
||||
:1005E000020F131FF80110822E96E4E00C94BC1841
|
||||
:1005F000ABE0B0E0EEEFF2E00C9492183C012B017E
|
||||
:100600005A01FC0117821682838181FD03C06FEFBE
|
||||
:100610007FEFC6C19AE0892E1E010894211C311C6F
|
||||
:10062000F3012381F20123FD859123FF81912F01A5
|
||||
:10063000882309F4B2C1853239F423FD859123FF63
|
||||
:1006400081912F01853229F490E0B3010E94630665
|
||||
:10065000E7CF982FFF24EE249924FFE1FF15D0F077
|
||||
:100660009B3269F09C3228F4903259F0933291F425
|
||||
:100670000EC09D3249F0903369F441E024C052E04D
|
||||
:10068000F52A84E0F82A28C098E0F92A25C0E0E19C
|
||||
:10069000FE2A22C0F7FC29C0892F80538A3070F4CB
|
||||
:1006A000F6FE05C0989C902C1124980E15C0E89C6D
|
||||
:1006B000E02C1124E80EF0E2FF2A0EC09E3229F44D
|
||||
:1006C000F6FC6BC140E4F42A07C09C3619F450E8EC
|
||||
:1006D000F52A02C0983649F4F20123FD959123FFD3
|
||||
:1006E00091912F01992309F0B8CF892F8554833038
|
||||
:1006F00018F08052833038F444E050E0A40EB51E68
|
||||
:100700005FE359830FC0933631F0933779F0933517
|
||||
:1007100009F056C020C0F5018081898342E050E095
|
||||
:10072000A40EB51E610101E010E012C0F501C08009
|
||||
:10073000D180F6FC03C06FEF7FEF02C0692D70E03F
|
||||
:1007400042E050E0A40EB51EC6010E9458068C017E
|
||||
:100750005FE7F52214C0F501C080D180F6FC03C02C
|
||||
:100760006FEF7FEF02C0692D70E042E050E0A40E11
|
||||
:10077000B51EC6010E944D068C0150E8F52AF3FE15
|
||||
:1007800007C01AC080E290E0B3010E946306EA94B9
|
||||
:100790008E2D90E008171907A8F30EC0F601F7FC9C
|
||||
:1007A0008591F7FE81916F0190E0B3010E9463068D
|
||||
:1007B000E110EA94015010400115110579F7EAC0E3
|
||||
:1007C000943611F0993669F5F7FE08C0F5012081DD
|
||||
:1007D00031814281538184E090E00AC0F50180813B
|
||||
:1007E00091819C01442737FD4095542F82E090E091
|
||||
:1007F000A80EB91E9FE6F92257FF09C050954095F3
|
||||
:10080000309521953F4F4F4F5F4FE0E8FE2ACA01D8
|
||||
:10081000B901A1012AE030E00E948F06D82ED2183B
|
||||
:1008200040C0953729F41F2D1F7E2AE030E01DC0FF
|
||||
:100830001F2D197F9F3661F0903720F4983509F00D
|
||||
:10084000ACC00FC0903739F0983709F0A6C004C08B
|
||||
:1008500028E030E00AC0106114FD146020E130E0AF
|
||||
:1008600004C014FD166020E132E017FF08C0F50156
|
||||
:10087000608171818281938144E050E008C0F5017C
|
||||
:1008800080819181BC0180E090E042E050E0A40EC4
|
||||
:10089000B51EA1010E948F06D82ED2188FE7F82E20
|
||||
:1008A000F122F6FE0BC05EEFF522D91438F4F4FE07
|
||||
:1008B00007C0F2FC05C08FEEF82202C01D2D01C05A
|
||||
:1008C000192DF4FE0DC0FE01ED0DF11D8081803368
|
||||
:1008D00019F499EEF92208C01F5FF2FE05C003C0AB
|
||||
:1008E0008F2D867809F01F5F0F2DF3FC14C0F0FEEA
|
||||
:1008F0000FC01E1510F09D2C0BC09D2C9E0C911A44
|
||||
:100900001E2D06C080E290E0B3010E9463061F5FC7
|
||||
:100910001E15C0F304C01E1510F4E11A01C0EE2428
|
||||
:1009200004FF0FC080E390E0B3010E94630602FF62
|
||||
:100930001DC001FD03C088E790E00EC088E590E08F
|
||||
:100940000BC0802F867891F001FF02C08BE201C0BE
|
||||
:1009500080E2F7FC8DE290E0B3010E94630606C0DE
|
||||
:1009600080E390E0B3010E9463069A94D914C0F327
|
||||
:10097000DA94F101ED0DF11D808190E0B3010E9448
|
||||
:100980006306DD20A9F706C080E290E0B3010E9473
|
||||
:100990006306EA94EE20C1F743CEF30166817781C6
|
||||
:1009A000CB012B96E2E10C94AE18A0E0B0E0EBEDA9
|
||||
:1009B000F4E00C949818EC015B016115710519F0D5
|
||||
:1009C000FB0191838083F9908F2D90E00E9487181E
|
||||
:1009D000892BC9F7FDE2FF1621F4F990EE24E39488
|
||||
:1009E00005C02BE2F21609F4F990EE248E010150B5
|
||||
:1009F0001040C80162EC70E043E050E00E94350610
|
||||
:100A0000892B01F58E010E5F1F4FC80165EC70E068
|
||||
:100A100045E050E00E943506892B19F48E01095FEC
|
||||
:100A20001F4FA114B10419F0F50111830083E0FCFC
|
||||
:100A300004C070E090E080E814C070E090E080E8CE
|
||||
:100A40006FEF08C1C8016AEC70E043E050E00E941B
|
||||
:100A50003506892B69F4A114B10429F470E090E003
|
||||
:100A600080EC6FE7F7C02296F501D183C083F6CF03
|
||||
:100A70008824992440E050E060E070E0EF2DE053DE
|
||||
:100A8000EA30A0F5F2E0EF2A8E2D90E09C0128706C
|
||||
:100A90003070E2FE06C0232B79F50894811C911C6E
|
||||
:100AA0002BC0232B19F0089481089108DB01CA019F
|
||||
:100AB00012E0880F991FAA1FBB1F1A95D1F7480F84
|
||||
:100AC000591F6A1F7B1F440F551F661F771F4E0F4C
|
||||
:100AD000511D611D711D483929E9520729E9620735
|
||||
:100AE00029E1720748F084E0E82A06C0EE3F31F4BD
|
||||
:100AF000E3FC39C098E0E92AF990C0CFE53311F062
|
||||
:100B0000E53189F529912D3219F4E0E1EE2A05C08D
|
||||
:100B10002B3219F081E090E003C0299182E090E04F
|
||||
:100B2000E22FE053EA3018F0C81BD90B1CC020E0BC
|
||||
:100B300030E0FCE020383F075CF4C901880F991FC2
|
||||
:100B4000880F991F280F391F220F331F2E0F311DB9
|
||||
:100B5000E991E053EA3068F3E4FE03C03095219553
|
||||
:100B60003F4F820E931ECE2CDD24E1FE07C0A11460
|
||||
:100B7000B10421F02197F501D183C083CB01BA01E3
|
||||
:100B80000E9404177B018C01F3E0CF22DD2423E0D7
|
||||
:100B9000C216D10421F417FB109517F910955701CF
|
||||
:100BA0006801C801B70120E030E040E050E00E9459
|
||||
:100BB000CF16882309F44AC097FE0DC021EEE22E1D
|
||||
:100BC00020E0F22E9094819491089394C0E2D0E0BA
|
||||
:100BD00000E010E012C099EFE92E90E0F92EF6CF78
|
||||
:100BE000F7012591359145915491C601B5010E94B7
|
||||
:100BF000BA175B016C018C1A9D0A8C169D0684F74E
|
||||
:100C0000D595C7950F5F1F4F0630110529F08CEF62
|
||||
:100C10009FEFE80EF91EF1CFC501D6017C018D01D1
|
||||
:100C20008C2D880F8D2D881F8F3F51F0C601B50187
|
||||
:100C300020E030E040E050E00E94CF16882331F4FD
|
||||
:100C400082E290E090930403809303037E2D9F2D16
|
||||
:100C5000802F612F272F392F482F562FB901CA0116
|
||||
:100C6000CDB7DEB7ECE00C94B418FB01DC014150C9
|
||||
:100C7000504088F08D9181341CF08B350CF4805EEF
|
||||
:100C8000659161341CF06B350CF4605E861B61115C
|
||||
:100C900071F3990B0895881BFCCFFC0105906150FE
|
||||
:100CA00070400110D8F7809590958E0F9F1F089582
|
||||
:100CB000FC016150704001900110D8F7809590952B
|
||||
:100CC0008E0F9F1F08950F931F93CF93DF938C0177
|
||||
:100CD000EB018B8181FF1BC082FF0DC02E813F8104
|
||||
:100CE0008C819D812817390764F4E881F98101938B
|
||||
:100CF000F983E88306C0E885F985802F0995892B5B
|
||||
:100D000031F48E819F8101969F838E8302C00FEF05
|
||||
:100D10001FEFC801DF91CF911F910F910895FA0144
|
||||
:100D2000AA27283051F1203181F1E8946F936E7F2A
|
||||
:100D30006E5F7F4F8F4F9F4FAF4FB1E03ED0B4E01B
|
||||
:100D40003CD0670F781F891F9A1FA11D680F791F5C
|
||||
:100D50008A1F911DA11D6A0F711D811D911DA11D6D
|
||||
:100D600020D009F468943F912AE0269F112430197D
|
||||
:100D7000305D3193DEF6CF010895462F4770405D18
|
||||
:100D80004193B3E00FD0C9F7F6CF462F4F70405DC7
|
||||
:100D90004A3318F0495D31FD4052419302D0A9F722
|
||||
:100DA000EACFB4E0A6959795879577956795BA951C
|
||||
:100DB000C9F700976105710508959B01AC010A2EE2
|
||||
:100DC00006945795479537952795BA95C9F7620FB9
|
||||
:100DD000731F841F951FA01D0895EF92FF920F931C
|
||||
:100DE0001F938130910551F0892B19F46F5F7F4F6C
|
||||
:100DF000A1F11F910F91FF90EF9008956F5F7F4FCA
|
||||
:100E0000C1F70EEE11E0C80160E071E00E94AB1581
|
||||
:100E1000095F1F4F82E00A301807A9F785E192E0C9
|
||||
:100E200068EC70E048E050E029E030E00AE010E0D3
|
||||
:100E3000FBE0EF2EF12C0E94500F8FE292E068EC65
|
||||
:100E400070E042E050E023E030E004E010E0E5E054
|
||||
:100E5000EE2EF12C0E94500FCCCF03E012E0C8011F
|
||||
:100E60000E945E160750104081E0073E1807B9F750
|
||||
:100E70001F910F91FF90EF90089580E090E06FEF49
|
||||
:100E80007FEF0E94ED06089581E090E06FEF7FEF25
|
||||
:100E90000E94ED0608950F931F93DF93CF93CDB774
|
||||
:100EA000DEB7C45FD1400FB6F894DEBF0FBECDBF32
|
||||
:100EB0008DB79EB70C970FB6F8949EBF0FBE8DBF2F
|
||||
:100EC000EDB7FEB731968E010F5F1F4FADB7BEB7BE
|
||||
:100ED00012961C930E93119781E091E09383828385
|
||||
:100EE00087E391E09583848381E090E09783868314
|
||||
:100EF0008FEF9FEF9187808784E190E093878287CF
|
||||
:100F00000E94D4028DB79EB70C960FB6F8949EBF80
|
||||
:100F10000FBE8DBF83ED92E0B8010E941112CC503C
|
||||
:100F2000DE4F0FB6F894DEBF0FBECDBFCF91DF917D
|
||||
:100F30001F910F9108950F931F93DF93CF93CDB718
|
||||
:100F4000DEB7E2970FB6F894DEBF0FBECDBF8DB708
|
||||
:100F50009EB70C970FB6F8949EBF0FBE8DBFEDB72E
|
||||
:100F6000FEB731968E010F5F1F4FADB7BEB7129619
|
||||
:100F70001C930E93119780E591E093838283809177
|
||||
:100F8000D5019091D601A091D701B091D801848369
|
||||
:100F90009583A683B7838091D9019091DA01A091BE
|
||||
:100FA000DB01B091DC0180879187A287B3870E9423
|
||||
:100FB000D4028DB79EB70C960FB6F8949EBF0FBEA5
|
||||
:100FC0008DBF83ED92E0B8010E941112E2960FB638
|
||||
:100FD000F894DEBF0FBECDBFCF91DF911F910F916F
|
||||
:100FE000089583ED92E06AE571E00E941112089580
|
||||
:100FF000BC0183ED92E00E94571208950F931F9356
|
||||
:10100000DF93CF93CDB7DEB727970FB6F894DEBF47
|
||||
:101010000FBECDBF81E0809314028E010F5F1F4F82
|
||||
:10102000C80166E671E00E94AB15C8010E94F8078E
|
||||
:10103000C8010E945E1627960FB6F894DEBF0FBE59
|
||||
:10104000CDBFCF91DF911F910F9108950F931F9303
|
||||
:10105000DF93CF93CDB7DEB727970FB6F894DEBFF7
|
||||
:101060000FBECDBF109214028E010F5F1F4FC8013B
|
||||
:1010700066E671E00E94AB15C8010E94F807C8013E
|
||||
:101080000E945E1627960FB6F894DEBF0FBECDBF46
|
||||
:10109000CF91DF911F910F9108950F931F93DF93CD
|
||||
:1010A000CF93CDB7DEB727970FB6F894DEBF0FBE4C
|
||||
:1010B000CDBF1092CD011092CE011092CF011092AF
|
||||
:1010C000D0011092D1011092D2011092D30110924E
|
||||
:1010D000D4018E010F5F1F4FC80166E671E00E94C8
|
||||
:1010E000AB15C8010E94F807C8010E945E1627963A
|
||||
:1010F0000FB6F894DEBF0FBECDBFCF91DF911F9129
|
||||
:101100000F9108950F931F93DF93CF93CDB7DEB761
|
||||
:1011100027970FB6F894DEBF0FBECDBF0E94D8163A
|
||||
:101120000E9430138E010F5F1F4FC80166E671E009
|
||||
:101130000E94AB15C8010E94F807C8010E945E1604
|
||||
:1011400027960FB6F894DEBF0FBECDBFCF91DF91CB
|
||||
:101150001F910F910895FC01662349F4EE0FFF1FC4
|
||||
:10116000E65FFD4F808160E00E94FD130895EE0F61
|
||||
:10117000FF1FE65FFD4F808161E00E94FD1308952F
|
||||
:101180000F931F93DF93CF93CDB7DEB727970FB69B
|
||||
:10119000F894DEBF0FBECDBF8C01809112029091FA
|
||||
:1011A0001302009701F5043011051CF1109213028F
|
||||
:1011B000109212028E010F5F1F4FC80166E671E0A8
|
||||
:1011C0000E94AB15C8010E94F807C8010E945E1674
|
||||
:1011D00027960FB6F894DEBF0FBECDBFCF91DF913B
|
||||
:1011E0001F910F91089561E00E94AB080430110532
|
||||
:1011F000ECF6C80160E00E94AB0810931302009364
|
||||
:101200001202D8CF2F923F924F925F926F927F92AD
|
||||
:101210008F929F92AF92BF92CF92DF92EF92FF9206
|
||||
:101220000F931F93DF93CF93CDB7DEB72C970FB6F5
|
||||
:10123000F894DEBF0FBECDBF6B837C838D839E830E
|
||||
:101240002F83388749875A8785E192E0B801A70143
|
||||
:101250000E94500E8FE292E0B801A7010E94500E4A
|
||||
:1012600080911402882361F16091CD017091CE01CB
|
||||
:101270008091CF019091D0010E9404179B01AC0195
|
||||
:101280006B817C818D819E810E946B166B837C8338
|
||||
:101290008D839E836091D1017091D2018091D301A1
|
||||
:1012A0009091D4010E9404179B01AC016F81788555
|
||||
:1012B00089859A850E946B166F83788789879A87BC
|
||||
:1012C0006B817C818D819E8120E030E040EA51E499
|
||||
:1012D0000E94B61718160CF00CC180E090E0A0EA4E
|
||||
:1012E000B1E48B839C83AD83BE8398EEE92E93E0BB
|
||||
:1012F000F92E012D112D88EEC82E83E0D82E6F8196
|
||||
:10130000788589859A8520E030E048E452E40E949F
|
||||
:10131000BA170E94D3162091CD013091CE01409191
|
||||
:10132000CF015091D0012E153F054007510709F418
|
||||
:101330002EC15601A21AB30ACB01AA2797FDA09588
|
||||
:10134000BA2FE090D101F090D2010091D301109119
|
||||
:10135000D4018E159F05A007B10709F414C16B01D4
|
||||
:10136000CE18DF08CA01B9010E9404179B01AC0125
|
||||
:101370006B817C818D819E810E94B61718160CF4BA
|
||||
:10138000B3C0AFEFBFEFBA83A983C801B7010E9412
|
||||
:1013900004179B01AC016F81788589859A850E942D
|
||||
:1013A000B61718160CF49BC08FEF9FEF9C878B87A6
|
||||
:1013B000CA14DB040CF441C03601882477FC809405
|
||||
:1013C000982C611471048104910409F441C0150141
|
||||
:1013D000442437FC4094542CEE24FF248701AA2493
|
||||
:1013E000BB24650110C060E070E080E090E00E94E6
|
||||
:1013F00030130894A11CB11CC11CD11CA614B70445
|
||||
:10140000C804D90428F58FE292E06B857C850E94A0
|
||||
:10141000EE0EE20CF31C041D151DE614F70408057E
|
||||
:10142000190508F3E618F7080809190985E192E09B
|
||||
:1014300069817A810E94EE0ED6CF3501882477FC2F
|
||||
:101440008094982C611471048104910409F064C0A3
|
||||
:101450006B817C818D819E810E94D8167B018C01DD
|
||||
:101460006093CD017093CE018093CF019093D00112
|
||||
:101470006F81788589859A850E94D8166093D101FD
|
||||
:101480007093D2018093D3019093D401E092D5015F
|
||||
:10149000F092D6010093D7011093D8016093D9013F
|
||||
:1014A0007093DA018093DB019093DC012C960FB6E8
|
||||
:1014B000F894DEBF0FBECDBFCF91DF911F910F918A
|
||||
:1014C000FF90EF90DF90CF90BF90AF909F908F9064
|
||||
:1014D0007F906F905F904F903F902F900895A1E084
|
||||
:1014E000B0E0BC87AB8764CFE1E0F0E0FA83E9834A
|
||||
:1014F0004CCF6B817C818D819E8120E030E048E47F
|
||||
:1015000052E40E94BA170E94D3167B010027F7FC11
|
||||
:101510000095102F6B01F3CE1601442437FC409444
|
||||
:10152000542CEE24FF248701AA24BB24650111C09A
|
||||
:1015300060E070E080E090E00E9430130894A11C0D
|
||||
:10154000B11CC11CD11CA614B704C804D90408F0EE
|
||||
:101550007FCF85E192E069817A810E94EE0EE20CF4
|
||||
:10156000F31C041D151DE614F7040805190500F306
|
||||
:10157000E618F708080919098FE292E06B857C8567
|
||||
:101580000E94EE0ED5CF6701C61AD70AEBCE5701DF
|
||||
:10159000AC18BD08D1CEEF92FF920F931F93DF934B
|
||||
:1015A000CF93CDB7DEB727970FB6F894DEBF0FBE47
|
||||
:1015B000CDBFF6E9EF2EF12C012D112D0E9402096D
|
||||
:1015C0008E010F5F1F4FC80166E671E00E94AB15E8
|
||||
:1015D000C8010E94F807C8010E945E1627960FB640
|
||||
:1015E000F894DEBF0FBECDBFCF91DF911F910F9159
|
||||
:1015F000FF90EF900895CF92DF92EF92FF920F93BA
|
||||
:101600001F93DF93CF93CDB7DEB727970FB6F8942C
|
||||
:10161000DEBF0FBECDBFD82EC92E7B018E010F5F5E
|
||||
:101620001F4FC80169E671E00E94AB15C701B80100
|
||||
:101630000E9474149C018D2D9C2DB70140E050E058
|
||||
:101640000E94DE15C8010E945E168D2D9C2D2796E6
|
||||
:101650000FB6F894DEBF0FBECDBFCF91DF911F91C3
|
||||
:101660000F91FF90EF90DF90CF900895AF92BF92CF
|
||||
:10167000CF92DF92EF92FF920F931F93DF93CF935E
|
||||
:10168000CDB7DEB7C054D0400FB6F894DEBF0FBE62
|
||||
:10169000CDBF7C01162F0E9497146C015E01089447
|
||||
:1016A000A11CB11CC50169E671E00E94AB15C70120
|
||||
:1016B000612F0E949714AC01C701B5010E94561416
|
||||
:1016C0009C018E01085F1F4F0894C11CD11CC801EA
|
||||
:1016D000B701A6010E94DE15AFE0EA2EF12CEC0E58
|
||||
:1016E000FD1EC801B70142E350E020E030E00E9457
|
||||
:1016F0009C14C8010E945E16C5010E945E16C701B7
|
||||
:101700000E948302C05CDF4F0FB6F894DEBF0FBEAD
|
||||
:10171000CDBFCF91DF911F910F91FF90EF90DF90A0
|
||||
:10172000CF90BF90AF9008954F925F926F927F924B
|
||||
:101730008F929F92AF92BF92CF92DF92EF92FF92E1
|
||||
:101740000F931F93DF93CF93CDB7DEB7E8970FB614
|
||||
:10175000F894DEBF0FBECDBF582E492E3B018E013F
|
||||
:101760000F5F1F4FC8016BE671E00E94AB15C3010C
|
||||
:10177000B8010E9474147C01C8010E945E168FEFAC
|
||||
:10178000E8168FEFF80681F18E01085F1F4FC80140
|
||||
:101790006BE671E00E94AB15C301B8010E9474149E
|
||||
:1017A0009C01852D942DB30140E050E00E94DE1590
|
||||
:1017B000C8010E945E16852D942DE8960FB6F89408
|
||||
:1017C000DEBF0FBECDBFCF91DF911F910F91FF9074
|
||||
:1017D000EF90DF90CF90BF90AF909F908F907F90D1
|
||||
:1017E0006F905F904F9008958E01015F1F4FC80169
|
||||
:1017F0006DE671E00E94AB15C301B8010E9474143C
|
||||
:101800007C01C8010E945E168FEFE8168FEFF80684
|
||||
:1018100009F452C086E1882E912C8C0E9D1EC401C5
|
||||
:101820006DE671E00E94AB15C301B4010E9474140F
|
||||
:101830009C010DE1A02EB12CAC0EBD1EC501B30163
|
||||
:1018400040E050E00E94DE1512E3C12ED12CCC0EF8
|
||||
:10185000DD1EC601B5010E945316B4E2EB2EF12C39
|
||||
:10186000EC0EFD1EC7016FE671E00E94AB15C301CF
|
||||
:10187000B7010E947414AC018E01055D1F4FC801B1
|
||||
:10188000B3010E942516C601B8010E947415BC015F
|
||||
:10189000852D942D0E944816C8010E945E16C7012E
|
||||
:1018A0000E945E16C6010E946416C5010E945E1663
|
||||
:1018B000C4010E945E167FCF852D942DB3010E9436
|
||||
:1018C000481679CF6F927F928F929F92AF92BF927C
|
||||
:1018D000CF92DF92EF92FF920F931F93DF93CF93FC
|
||||
:1018E000CDB7DEB7CB55D0400FB6F894DEBF0FBEF4
|
||||
:1018F000CDBF4C017E010894E11CF11CC701B4016D
|
||||
:101900000E9448168E01085F1F4FC801B7010E9450
|
||||
:10191000940BC401B8010E943116C8010E945E16E2
|
||||
:10192000C7010E945E168E010A5E1F4FC801B401F6
|
||||
:101930000E9448165FE0652E712C6C0E7D1EC3015F
|
||||
:10194000B8010E94FB0AC8010E945E16C40160E053
|
||||
:1019500070E00E943014FC010081C30161E771E076
|
||||
:101960000E94C914882309F083C0C30164E771E0B1
|
||||
:101970000E94C9148823E9F5C30167E771E00E945A
|
||||
:10198000C914882309F087C0C3016AE771E00E9487
|
||||
:10199000C914882309F090C0C3016EE771E00E946A
|
||||
:1019A000C914882309F08BC0C30162E871E00E946A
|
||||
:1019B000C914882309F086C0C30166E871E00E945B
|
||||
:1019C000C914882309F481C08E01005C1F4FC8012F
|
||||
:1019D000B4010E944816C80164E50E94360B0E94BB
|
||||
:1019E000D316DC01CB010E94C008C8010E945E161C
|
||||
:1019F00026C03BE2A32EB12CAC0EBD1EC501B40126
|
||||
:101A00000E944816C50168E50E94360B6B017C01F7
|
||||
:101A10008E010E5C1F4FC801B4010E944816C80118
|
||||
:101A200069E50E94360B9B01AC01C701B6010E941B
|
||||
:101A3000CB0AC8010E945E16C5010E945E16C30152
|
||||
:101A40000E945E16C55ADF4F0FB6F894DEBF0FBE78
|
||||
:101A5000CDBFCF91DF911F910F91FF90EF90DF905D
|
||||
:101A6000CF90BF90AF909F908F907F906F90089590
|
||||
:101A70004DE1A42EB12CAC0EBD1EC501B4010E94D7
|
||||
:101A80004816C50168E50E94360B6B017C018E018A
|
||||
:101A90000C5D1F4FC0CF8E01075C1F4FC801B40102
|
||||
:101AA0000E944816C80160E50E94360B0E94820819
|
||||
:101AB000C8010E945E16C3CF0E944D08C0CF0E948D
|
||||
:101AC0002608BDCF0E94FE07BACF043509F47CCFAB
|
||||
:101AD000C30163EB71E00E94C914882359F5C30167
|
||||
:101AE00068E871E00E94C914882339F5C3016DE8E4
|
||||
:101AF00071E00E94C914882331F5C30162E971E0E5
|
||||
:101B00000E94C914882311F5C30167E971E00E949E
|
||||
:101B1000C9148823F1F48E010B5A1F4FC8016CE9D8
|
||||
:101B200071E00E94AB15C8010E94F807C8010E942D
|
||||
:101B30005E1685CF0E94F10782CFE0914902F091B5
|
||||
:101B40004A0209957CCF0E949B0779CF0E944B07E0
|
||||
:101B500076CF8E01095B1F4FC80167E971E00E94D3
|
||||
:101B6000AB15C401B8010E9474142EE4E22EF12CCE
|
||||
:101B7000EC0EFD1EAC014C5F5F4FC701B4010E942B
|
||||
:101B80002516C7010E94F807C7010E945E16C8010A
|
||||
:101B90000E945E1654CFEF92FF920F931F93DF9334
|
||||
:101BA000CF93CDB7DEB72E970FB6F894DEBF0FBE3A
|
||||
:101BB000CDBF83ED92E00E949C10892BC9F07E017D
|
||||
:101BC0000894E11CF11CC70163ED72E00E949712BA
|
||||
:101BD0008E01085F1F4FC801B7010E944816C80157
|
||||
:101BE0000E94620CC8010E945E16C7010E945E1628
|
||||
:101BF0002E960FB6F894DEBF0FBECDBFCF91DF910A
|
||||
:101C00001F910F91FF90EF900895CF93DF93CCE059
|
||||
:101C1000D2E0888161E00E949113888161E00E9496
|
||||
:101C2000FD13229682E0C231D80799F7DF91CF9158
|
||||
:101C300008950F931F9305EF11E0C80166EB71E063
|
||||
:101C40000E94C515C80107966BEB71E00E94C5158F
|
||||
:101C5000C8010E9660EC71E00E94C5151F910F91AE
|
||||
:101C6000089583ED92E040E855E260E070E00E9464
|
||||
:101C700015100E94050E0E94190E86E090E09093C8
|
||||
:101C80000D0280930C0287E090E090930F02809306
|
||||
:101C90000E028CE090E09093110280931002089560
|
||||
:101CA000CF92DF92EF92FF920F931F936C017A0114
|
||||
:101CB0008B01FC0120853185442737FD4095542F49
|
||||
:101CC00060E67AEE80E090E00E945218CA01B90105
|
||||
:101CD000A80197010E945218F60124833583468398
|
||||
:101CE00057831F910F91FF90EF90DF90CF90089551
|
||||
:101CF0000F931F93CF93DF93EC018B018A859B8514
|
||||
:101D0000029731F56130710589F06230710524F474
|
||||
:101D10006115710541F01CC06230710571F06330CE
|
||||
:101D20007105B1F40DC08E8560E002C08E8561E062
|
||||
:101D30000E94FD13888961E009C08E8561E002C0C0
|
||||
:101D40008E8560E00E94FD13888960E00E94FD138B
|
||||
:101D50008A859B850497E9F501301105A1F00230D1
|
||||
:101D600011051CF4012B41F034C002301105D1F0F3
|
||||
:101D70000330110571F51DC08E8561E00E94FD13D1
|
||||
:101D8000888960E006C08E8560E00E94FD13888926
|
||||
:101D900061E00E94FD138A8961E00E94FD138C8935
|
||||
:101DA00060E015C08E8560E00E94FD13888961E0C7
|
||||
:101DB00006C08E8561E00E94FD13888960E00E9464
|
||||
:101DC000FD138A8960E00E94FD138C8961E00E9406
|
||||
:101DD000FD13DF91CF911F910F9108950F931F93E2
|
||||
:101DE000CF93DF93EC011616170624F481E090E000
|
||||
:101DF0009983888377FF02C0198218828B0177FF4D
|
||||
:101E000046C0109501951F4F42C00E94FC122E89BA
|
||||
:101E10003F89488D598D621B730B840B950B2C8168
|
||||
:101E20003D814E815F81621773078407950768F3D0
|
||||
:101E30000E94FC126E8B7F8B888F998F888199818D
|
||||
:101E40002C853D85019761F42F5F3F4F3D872C879F
|
||||
:101E5000888599852817390771F41D861C860BC063
|
||||
:101E6000232B21F4888599859D878C878C859D857A
|
||||
:101E700001979D878C87015010408C859D8564E07B
|
||||
:101E800070E00E941D18BC01CE010E94780E011561
|
||||
:101E9000110509F0BACFDF91CF911F910F910895ED
|
||||
:101EA000CF92DF92EF92FF920F931F936C01842FDA
|
||||
:101EB000F601158614861382128211821082168A08
|
||||
:101EC000178A108E118E7187608746875787318BEE
|
||||
:101ED000208B138B028BF58AE48A61E00E949113B8
|
||||
:101EE000F601808961E00E949113F601828961E028
|
||||
:101EF0000E949113F601848961E00E94911384E0AD
|
||||
:101F000090E0F601938782871F910F91FF90EF90E9
|
||||
:101F1000DF90CF90089508951F920F920FB60F9201
|
||||
:101F200011242F933F934F938F939F93EF93FF939E
|
||||
:101F30008091C00082FD1DC04091C60020918B029F
|
||||
:101F400030918C022F5F3F4F2F73307080918D0244
|
||||
:101F500090918E022817390771F0E0918B02F09171
|
||||
:101F60008C02E55BFD4F408330938C0220938B0203
|
||||
:101F700002C08091C600FF91EF919F918F914F9188
|
||||
:101F80003F912F910F900FBE0F901F901895E091E9
|
||||
:101F9000DF02F091E002E05CFF4F8191919120819E
|
||||
:101FA0003181821B930B8F739070892B11F00E94EB
|
||||
:101FB0008B0F08951F920F920FB60F9211242F933B
|
||||
:101FC0003F938F939F93EF93FF932091CF02309194
|
||||
:101FD000D0028091D1029091D2022817390731F4B2
|
||||
:101FE0008091C1008F7D8093C10014C0E091D10227
|
||||
:101FF000F091D202E157FD4F20818091D102909162
|
||||
:10200000D20201968F7390709093D2028093D10286
|
||||
:102010002093C600FF91EF919F918F913F912F9157
|
||||
:102020000F900FBE0F901F901895AF92BF92DF9246
|
||||
:10203000EF92FF920F931F93CF93DF93EC017A01FE
|
||||
:102040008B01DD24403081EE580780E0680780E096
|
||||
:10205000780711F0DD24D39491E0A92EB12CEC89FE
|
||||
:10206000FD89DD2069F0C50108A002C0880F991F15
|
||||
:102070000A94E2F7808360E079E08DE390E005C0A8
|
||||
:10208000108260E874E88EE190E0A80197010E9458
|
||||
:102090003018215030404040504056954795379574
|
||||
:1020A000279580E12030380720F0DD2011F0DD2475
|
||||
:1020B000D6CFE889F9893083EA89FB89208319A280
|
||||
:1020C000EE89FF89408121E030E0C9010C8C02C01B
|
||||
:1020D000880F991F0A94E2F7482B4083EE89FF8905
|
||||
:1020E0004081C9010D8C02C0880F991F0A94E2F744
|
||||
:1020F000482B4083EE89FF894081C9010E8C02C0C4
|
||||
:10210000880F991F0A94E2F7482B4083EE89FF89D4
|
||||
:1021100080810F8C02C0220F331F0A94E2F72095B2
|
||||
:1021200028232083DF91CF911F910F91FF90EF9093
|
||||
:10213000DF90BF90AF900895DC011C96ED91FC916B
|
||||
:102140001D97E05CFF4F2191319180819181281B87
|
||||
:10215000390B2F733070C9010895DC011C96ED9185
|
||||
:10216000FC911D97E05CFF4F20813181E054F040ED
|
||||
:10217000DF01AE5BBF4F8D919C91119728173907F6
|
||||
:1021800019F42FEF3FEF07C08D919C91E80FF91FD5
|
||||
:102190008081282F30E0C9010895DC011C96ED9163
|
||||
:1021A000FC911D97E05CFF4F20813181E054F040AD
|
||||
:1021B000DF01AE5BBF4F8D919C91119728173907B6
|
||||
:1021C00019F42FEF3FEF10C08D919C911197E80FFC
|
||||
:1021D000F91F20818D919C91119701968F739070BA
|
||||
:1021E00011969C938E9330E0C9010895DC0191967D
|
||||
:1021F0008C919197882339F05496ED91FC915597E5
|
||||
:10220000808186FFF9CF91961C920895CF93DF933A
|
||||
:10221000EC01EE85FF85E05CFF4F20813181E054C9
|
||||
:10222000F0402F5F3F4F2F733070DF01AE5BBF4F29
|
||||
:102230008D919C91119728173907D1F3E05CFF4FDE
|
||||
:1022400080819181E054F040E80FF91F6083EE85B2
|
||||
:10225000FF85E05CFF4F31832083EE89FF89208179
|
||||
:1022600081E090E00F8C02C0880F991F0A94E2F77A
|
||||
:10227000282B208381E089A3EC89FD8980818064FB
|
||||
:10228000808381E090E0DF91CF9108951092D60293
|
||||
:102290001092D50288EE93E0A0E0B0E08093D702E0
|
||||
:1022A0009093D802A093D902B093DA0281EE91E024
|
||||
:1022B0009093D4028093D3028BE492E09093E00257
|
||||
:1022C0008093DF028FE892E09093E2028093E10234
|
||||
:1022D00085EC90E09093E4028093E30284EC90E03C
|
||||
:1022E0009093E6028093E50280EC90E09093E80200
|
||||
:1022F0008093E70281EC90E09093EA028093E902F8
|
||||
:1023000082EC90E09093EC028093EB0286EC90E0FC
|
||||
:102310009093EE028093ED0284E08093EF0283E0DD
|
||||
:102320008093F00287E08093F10285E08093F202CF
|
||||
:1023300081E08093F3020895CF93DF930E945613B8
|
||||
:102340000E94310EC7ECDFE00E94CB0D2097E1F335
|
||||
:102350000E94C70FF9CFCF92DF92EF92FF920F93B7
|
||||
:102360001F93CF93DF937C016B018A01C0E0D0E023
|
||||
:102370000FC0D6016D916D01D701ED91FC910190D7
|
||||
:10238000F081E02DC7010995C80FD91F01501040F9
|
||||
:102390000115110571F7CE01DF91CF911F910F91BA
|
||||
:1023A000FF90EF90DF90CF900895EF92FF920F9300
|
||||
:1023B0001F938C01DC01ED91FC910190F081E02DE7
|
||||
:1023C0006DE009957C01D801ED91FC910190F081BF
|
||||
:1023D000E02DC8016AE009959C012E0D3F1DC90141
|
||||
:1023E0001F910F91FF90EF900895CF93DF93EC0131
|
||||
:1023F0006115710519F420E030E00FC0DB010D908C
|
||||
:102400000020E9F71197A61BB70BE881F98102803C
|
||||
:10241000F381E02DAD0109959C01C901DF91CF91B8
|
||||
:102420000895EF92FF920F931F937C010E94F51184
|
||||
:102430008C01C7010E94D511080F191FC8011F91F7
|
||||
:102440000F91FF90EF900895AF92BF92CF92DF92DD
|
||||
:10245000EF92FF920F931F93CF93DF935C016B0179
|
||||
:10246000EE24FF24C0E0D0E010C0D501ED91FC9136
|
||||
:1024700000811181C601BE010E944514682FC5016B
|
||||
:10248000F8010995E80EF91E2196F60184819581DF
|
||||
:10249000C817D90750F3C701DF91CF911F910F9152
|
||||
:1024A000FF90EF90DF90CF90BF90AF900895EF92A4
|
||||
:1024B000FF920F931F937C010E9424128C01C7018D
|
||||
:1024C0000E94D5119C01200F311FC9011F910F914E
|
||||
:1024D000FF90EF900895CF93DF93EC010E94FC12E0
|
||||
:1024E000688779878A879B87E881F9810680F781E9
|
||||
:1024F000E02DCE0109959C0197FF15C00E94FC12AA
|
||||
:10250000288539854A855B85621B730B840B950B87
|
||||
:102510002C813D814E815F81621773078407950787
|
||||
:1025200018F32FEF3FEFC901DF91CF9108950F937B
|
||||
:102530001F93CF93DF93182F092FEB0165EC71E008
|
||||
:102540000E94AB1504C0812F902F0E944F15CE0121
|
||||
:102550000E946B12BC0197FFF6CF812F902FDF9165
|
||||
:10256000CF911F910F9108951F920F920FB60F9266
|
||||
:1025700011242F933F938F939F93AF93BF93809199
|
||||
:10258000F9029091FA02A091FB02B091FC02309105
|
||||
:10259000FD020196A11DB11D232F2D5F2D3720F0C7
|
||||
:1025A0002D570196A11DB11D2093FD028093F902C4
|
||||
:1025B0009093FA02A093FB02B093FC028091F50283
|
||||
:1025C0009091F602A091F702B091F8020196A11D38
|
||||
:1025D000B11D8093F5029093F602A093F702B09399
|
||||
:1025E000F802BF91AF919F918F913F912F910F90E2
|
||||
:1025F0000FBE0F901F9018958FB7F8942091F90295
|
||||
:102600003091FA024091FB025091FC028FBFB90158
|
||||
:10261000CA0108959FB7F8942091F5023091F6020F
|
||||
:102620004091F7025091F80286B5A89B06C08F3FF3
|
||||
:1026300021F02F5F3F4F4F4F5F4F9FBF542F432FCE
|
||||
:10264000322F2227280F311D411D511D82E0220FFC
|
||||
:10265000331F441F551F8A95D1F7B901CA01089548
|
||||
:10266000EF92FF920F931F93CF93DF937B018C0127
|
||||
:102670000E940A13EB010EC00E940A136C1B7D0B13
|
||||
:10268000685E7340C8F30894E108F1080109110974
|
||||
:10269000C851DC4FE114F1040105110569F7DF9120
|
||||
:1026A000CF911F910F91FF90EF900895789484B58A
|
||||
:1026B000826084BD84B5816084BD85B5826085BD3E
|
||||
:1026C00085B5816085BDEEE6F0E080818160808324
|
||||
:1026D000E1E8F0E010828081826080838081816007
|
||||
:1026E0008083E0E8F0E0808181608083E1EBF0E0CE
|
||||
:1026F000808184608083E0EBF0E080818160808372
|
||||
:10270000EAE7F0E08081846080838081826080835A
|
||||
:102710008081816080838081806880831092C10085
|
||||
:102720000895CF93DF93482F50E0CA0186569F4FFC
|
||||
:10273000FC0134914A575F4FFA018491882369F173
|
||||
:1027400090E0880F991FFC01E859FF4FA591B491C3
|
||||
:10275000FC01EE58FF4FC591D491662351F42FB779
|
||||
:10276000F8948C91932F909589238C938881892359
|
||||
:102770000BC0623061F42FB7F8948C91932F909531
|
||||
:1027800089238C938881832B88832FBF06C09FB7B2
|
||||
:10279000F8948C91832B8C939FBFDF91CF910895F8
|
||||
:1027A000833071F0843028F48130A1F0823021F53B
|
||||
:1027B00014C08630B1F08730D1F08430E9F404C021
|
||||
:1027C000809180008F7703C0809180008F7D8093FF
|
||||
:1027D0008000089584B58F7702C084B58F7D84BD55
|
||||
:1027E00008958091B0008F778093B0000895809114
|
||||
:1027F000B0008F7D8093B0000895FF920F931F93D8
|
||||
:10280000F62E482F50E0CA0182559F4FFC012491BB
|
||||
:10281000CA0186569F4FFC0114914A575F4FFA0137
|
||||
:1028200004910023C9F0222319F0822F0E94D013B3
|
||||
:10283000E02FF0E0EE0FFF1FEE58FF4FA591B4918F
|
||||
:102840009FB7F894FF2021F48C911095812302C04A
|
||||
:102850008C91812B8C939FBF1F910F91FF900895B6
|
||||
:10286000FC019B01848195816817790728F46081B8
|
||||
:1028700071816115710529F41092FE026EEF72E00C
|
||||
:1028800002C0620F731FCB010895FC018481958102
|
||||
:102890006817790748F40190F081E02D309721F016
|
||||
:1028A000E60FF71F8081089580E00895CF93DF93AE
|
||||
:1028B000FC01DB01848195814817590760F4C081D0
|
||||
:1028C000D1816D917C91CE01840F951F0E94BA0237
|
||||
:1028D0009C01009719F42FEF3FEF02C02C1B3D0B1A
|
||||
:1028E000C901DF91CF91089540E050E00E94561455
|
||||
:1028F0000895CF93DF93FC01848195814817590790
|
||||
:1029000068F4C081D181772767FD7095CE01840F6F
|
||||
:10291000951F0E9490029C01009719F42FEF3FEF42
|
||||
:1029200002C02C1B3D0BC901DF91CF91089540E0FF
|
||||
:1029300050E00E94791408950F931F93CF93DF9373
|
||||
:10294000FC018B0141155105F9F061157105E1F0AC
|
||||
:10295000848195812817390718F0FB01108214C073
|
||||
:1029600041505040EC01C21BD30B4C175D0708F4DB
|
||||
:10297000EA0160817181620F731FC801AE010E947C
|
||||
:10298000AB02C00FD11F1882DF91CF911F910F9121
|
||||
:102990000895DC01FB0114968D919C911597892B6C
|
||||
:1029A00031F461157105A9F090E0808108C00D90A7
|
||||
:1029B000BC91A02D6115710529F490E08C918823BC
|
||||
:1029C00049F407C0CD010E949B029C0190E0232B9B
|
||||
:1029D00009F491E0892F08950F931F93CF93DF930C
|
||||
:1029E000EC018B016F5F7F4F888199810E94AE015E
|
||||
:1029F000009711F480E005C0998388831B830A83C4
|
||||
:102A000081E0DF91CF911F910F910895CF93DF93D4
|
||||
:102A1000EC0188819981892B29F08A819B81861715
|
||||
:102A2000970760F4CE010E94EC14882341F08C815A
|
||||
:102A30009D81892B19F4E881F981108281E0DF9171
|
||||
:102A4000CF910895EF92FF920F931F93CF93DF934F
|
||||
:102A5000EC017B016C817D81E114F104C1F0411531
|
||||
:102A6000510599F08A01060F171FB8010E9406153B
|
||||
:102A7000882369F0888199812C813D81820F931F81
|
||||
:102A8000B7010E94A4021D830C8381E001C080E095
|
||||
:102A9000DF91CF911F910F91FF90EF900895DF93F9
|
||||
:102AA000CF9300D0CDB7DEB769831A82BE016F5FC6
|
||||
:102AB0007F4F41E050E00E9422150F900F90CF9180
|
||||
:102AC000DF910895CF93DF93EC018881998100977E
|
||||
:102AD00011F00E945601198218821D821C821B82ED
|
||||
:102AE0001A82DF91CF9108950F931F93182F092F0A
|
||||
:102AF000FB0160817181448155810E9422158823E8
|
||||
:102B000021F4812F902F0E946215812F902F1F9109
|
||||
:102B10000F910895EF92FF920F931F93CF93DF933E
|
||||
:102B2000EC017B018A01BA010E940615882321F479
|
||||
:102B3000CE010E94621507C01D830C838881998194
|
||||
:102B4000B7010E94A402CE01DF91CF911F910F9196
|
||||
:102B5000FF90EF900895CF93DF93EC0119821882D4
|
||||
:102B60001B821A821D821C821E826115710551F022
|
||||
:102B7000DB010D900020E9F71197A61BB70BAD0103
|
||||
:102B80000E948A15DF91CF9108950F931F93182FFC
|
||||
:102B9000092F6115710559F0DB010D900020E9F74F
|
||||
:102BA0001197A61BB70BAD010E948A1502C00E94A7
|
||||
:102BB0006215812F902F1F910F910895BF92CF9290
|
||||
:102BC000DF92EF92FF920F931F93CF93DF93082F23
|
||||
:102BD000B92E6B017A01E9012417350710F4EA01D7
|
||||
:102BE0007901802F9B2D66EC71E00E94AB15D60118
|
||||
:102BF00014968D919C9115978E159F05D0F08C178A
|
||||
:102C00009D0708F4EC01D601ED91FC911197EC0FB2
|
||||
:102C1000FD1F108110826D917C916E0D7F1D802FA4
|
||||
:102C20009B2D0E94C515D601ED91FC91EC0FFD1F67
|
||||
:102C30001083802F9B2DDF91CF911F910F91FF90DB
|
||||
:102C4000EF90DF90CF90BF9008950F931F938C016A
|
||||
:102C5000FB01248135810E94DE15C8011F910F916F
|
||||
:102C60000895CF93DF93EC01FB018617970761F07E
|
||||
:102C7000608171816115710529F0448155810E943F
|
||||
:102C80008A1502C00E946215CE01DF91CF9108958E
|
||||
:102C9000FC01118210821382128215821482168224
|
||||
:102CA0000E9431160895FC01118210821382128253
|
||||
:102CB0001582148216820E9431160895FC018081CB
|
||||
:102CC00091810E9456010895FC01808191810E94AA
|
||||
:102CD000560108955058BB27AA270ED00DC1FED02B
|
||||
:102CE00030F003D120F031F49F3F11F41EF4F3C013
|
||||
:102CF0000EF4E095E7FBE9C0E92F0FD180F3BA1796
|
||||
:102D0000620773078407950718F071F49EF527C1D1
|
||||
:102D10000EF4E0950B2EBA2FA02D0B01B9019001F6
|
||||
:102D20000C01CA01A0011124FF27591B99F0593F3A
|
||||
:102D300050F4503E68F11A16F040A22F232F342F82
|
||||
:102D40004427585FF3CF469537952795A795F040D0
|
||||
:102D50005395C9F77EF41F16BA0B620B730B840BE5
|
||||
:102D6000BAF09150A1F0FF0FBB1F661F771F881F9D
|
||||
:102D7000C2F70EC0BA0F621F731F841F48F48795F5
|
||||
:102D800077956795B795F7959E3F08F0B3CF9395E4
|
||||
:102D9000880F08F09927EE0F97958795089571D0C1
|
||||
:102DA00008F481E0089504D06894B111D9C0089561
|
||||
:102DB000BCD088F09F5790F0B92F9927B751A0F059
|
||||
:102DC000D1F0660F771F881F991F1AF0BA95C9F7BF
|
||||
:102DD00012C0B13081F0C3D0B1E00895C0C0672FF8
|
||||
:102DE000782F8827B85F39F0B93FCCF3869577956F
|
||||
:102DF0006795B395D9F73EF4909580957095619558
|
||||
:102E00007F4F8F4F9F4F0895E89409C097FB3EF482
|
||||
:102E100090958095709561957F4F8F4F9F4F992327
|
||||
:102E2000A9F0F92F96E9BB279395F69587957795A5
|
||||
:102E30006795B795F111F8CFFAF4BB0F11F460FF65
|
||||
:102E40001BC06F5F7F4F8F4F9F4F16C0882311F0BD
|
||||
:102E500096E911C0772321F09EE8872F762F05C0D1
|
||||
:102E6000662371F096E8862F70E060E02AF09A956C
|
||||
:102E7000660F771F881FDAF7880F9695879597F961
|
||||
:102E80000895990F0008550FAA0BE0E8FEEF1616FB
|
||||
:102E90001706E807F907C0F012161306E407F5074E
|
||||
:102EA00098F0621B730B840B950B39F40A2661F0C2
|
||||
:102EB000232B242B252B21F408950A2609F4A14065
|
||||
:102EC000A6958FEF811D811D089597F99F6780E872
|
||||
:102ED00070E060E008959FEF80EC089500240A946C
|
||||
:102EE0001616170618060906089500240A941216E5
|
||||
:102EF0001306140605060895092E0394000C11F418
|
||||
:102F0000882352F0BB0F40F4BF2B11F460FF04C0C4
|
||||
:102F10006F5F7F4F8F4F9F4F089557FD9058440F1D
|
||||
:102F2000551F59F05F3F71F04795880F97FB991F28
|
||||
:102F300061F09F3F79F087950895121613061406E5
|
||||
:102F4000551FF2CF4695F1DF08C016161706180672
|
||||
:102F5000991FF1CF86957105610508940895E8944D
|
||||
:102F6000BB2766277727CB0197F908958ADF08F4F6
|
||||
:102F70008FEF08950BD0C0CFB1DF28F0B6DF18F087
|
||||
:102F8000952309F0A2CFA7CF1124EACFC6DFA0F383
|
||||
:102F9000959FD1F3950F50E0551F629FF001729FEE
|
||||
:102FA000BB27F00DB11D639FAA27F00DB11DAA1F0D
|
||||
:102FB000649F6627B00DA11D661F829F2227B00D5A
|
||||
:102FC000A11D621F739FB00DA11D621F839FA00DE5
|
||||
:102FD000611D221F749F3327A00D611D231F849F35
|
||||
:102FE000600D211D822F762F6A2F11249F5750408C
|
||||
:102FF0008AF0E1F088234AF0EE0FFF1FBB1F661F27
|
||||
:10300000771F881F91505040A9F79E3F510570F0DF
|
||||
:103010005CCFA6CF5F3FECF3983EDCF386957795C7
|
||||
:103020006795B795F795E7959F5FC1F7FE2B880FDA
|
||||
:10303000911D9695879597F9089597FB092E072678
|
||||
:103040000AD077FD04D049D006D000201AF470953C
|
||||
:1030500061957F4F0895F6F7909581959F4F08955C
|
||||
:10306000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F8C
|
||||
:10307000EE1FFF1FA217B307E407F50720F0A21BFE
|
||||
:10308000B30BE40BF50B661F771F881F991F1A946B
|
||||
:1030900069F760957095809590959B01AC01BD0195
|
||||
:1030A000CF01089597FB092E05260ED057FD04D0B9
|
||||
:1030B000D7DF0AD0001C38F4509540953095219503
|
||||
:1030C0003F4F4F4F5F4F0895F6F79095809570955D
|
||||
:1030D00061957F4F8F4F9F4F0895AA1BBB1B51E1F6
|
||||
:1030E00007C0AA1FBB1FA617B70710F0A61BB70B78
|
||||
:1030F000881F991F5A95A9F780959095BC01CD011D
|
||||
:103100000895EE0FFF1F0590F491E02D09949111A1
|
||||
:1031100006C0803219F089508550D0F7089599275C
|
||||
:10312000882708952F923F924F925F926F927F92DD
|
||||
:103130008F929F92AF92BF92CF92DF92EF92FF92C7
|
||||
:103140000F931F93CF93DF93CDB7DEB7CA1BDB0B73
|
||||
:103150000FB6F894DEBF0FBECDBF09942A88398818
|
||||
:1031600048885F846E847D848C849B84AA84B9841F
|
||||
:10317000C884DF80EE80FD800C811B81AA81B9812B
|
||||
:10318000CE0FD11D0FB6F894DEBF0FBECDBFED013F
|
||||
:10319000089511E0C2E0D1E004C0FE010E9483184E
|
||||
:0C31A0002296C430D107C9F7F894FFCF85
|
||||
:1031AC00007B22736F667477617265223A222573F5
|
||||
:1031BC00222C2022706F776572223A25622C2022F5
|
||||
:1031CC006C656E677468223A25692C2022776964D5
|
||||
:1031DC007468223A256900506C6F7474576172657B
|
||||
:1031EC004669726D776172652076302E302E310013
|
||||
:1031FC00583A256620593A25660050524F4752419D
|
||||
:10320C004D20454E44004F4B0020003B0028002928
|
||||
:10321C000047300047310047340047323800473907
|
||||
:10322C0030004739310054004D313132004D3131CD
|
||||
:10323C0034004D313135004D31313800436F6D6DF7
|
||||
:10324C00616E64206E6F7420737570706F7274652C
|
||||
:10325C00642E004D320050656E310050656E3200A8
|
||||
:10326C0050656E33000000200005030000FFFFFFD7
|
||||
:10327C00FFFFFFFFFFFFFFFFFFFFFFFFFF0000004F
|
||||
:0E328C00000611AB119C10CD10AD10F6100015
|
||||
:00000001FF
|
811
PlottWareFirmware/build/PlottWareFirmware_uno.hex
Normal file
@ -0,0 +1,811 @@
|
||||
:100000000C9482000C94AA000C94AA000C94AA00F0
|
||||
:100010000C94AA000C94AA000C94AA000C94AA00B8
|
||||
:100020000C94AA000C94AA000C94AA000C94AA00A8
|
||||
:100030000C94AA000C94AA000C94AA000C94AA0098
|
||||
:100040000C94B4120C94AA000C948C0F0C94DA0F3C
|
||||
:100050000C94AA000C94AA000C94AA000C94AA0078
|
||||
:100060000C94AA000C94AA000000000024002700B1
|
||||
:100070002A0000000000250028002B0000000000DE
|
||||
:1000800023002600290004040404040404040202DA
|
||||
:100090000202020203030303030301020408102007
|
||||
:1000A0004080010204081020010204081020000012
|
||||
:1000B0000007000201000003040600000000000029
|
||||
:1000C0000000494E46494E4954594E414ECDCCCC84
|
||||
:1000D0003D0AD7233C17B7D13877CC2B329595E61C
|
||||
:1000E000241FB14F0A000020410000C84200401CFC
|
||||
:1000F0004620BCBE4CCA1B0E5AAEC59D74004407B8
|
||||
:1001000046113D0711241FBECFEFD8E0DEBFCDBFA3
|
||||
:1001100011E0A0E0B1E0ECEAF1E302C005900D923D
|
||||
:10012000AE3EB107D9F713E0AEEEB1E001C01D92CB
|
||||
:10013000A530B107E1F710E0C2E0D1E004C022979A
|
||||
:10014000FE010E948318CE3FD107C9F70E949C117F
|
||||
:100150000C94C9180C940000CF93DF93BC0182303B
|
||||
:10016000910510F462E070E0A0910103B0910203E8
|
||||
:10017000ED01E0E0F0E040E050E021C088819981AD
|
||||
:100180008617970769F48A819B81309719F09383CA
|
||||
:10019000828304C09093020380930103FE0134C064
|
||||
:1001A0006817790738F44115510519F08417950738
|
||||
:1001B00008F4AC01FE018A819B819C01E901209732
|
||||
:1001C000E9F641155105A9F1CA01861B970B049761
|
||||
:1001D00008F4BA01E0E0F0E02AC08D919C911197FB
|
||||
:1001E00084179507F9F46417750781F412968D91B9
|
||||
:1001F0009C911397309719F09383828304C0909356
|
||||
:10020000020380930103FD0132964CC0CA01861B94
|
||||
:10021000970BFD01E80FF91F6193719302978D937E
|
||||
:100220009C9340C0FD01828193819C01D90110976C
|
||||
:10023000A1F68091FF0290910003892B41F48091F7
|
||||
:10024000C9019091CA01909300038093FF024091ED
|
||||
:10025000CB015091CC014115510541F44DB75EB72A
|
||||
:100260008091C7019091C801481B590B2091FF0252
|
||||
:1002700030910003CA01821B930B8617970780F009
|
||||
:10028000AB014E5F5F4F8417950750F0420F531F2D
|
||||
:10029000509300034093FF02F9016193719302C0F0
|
||||
:1002A000E0E0F0E0CF01DF91CF910895CF93DF93AD
|
||||
:1002B000009709F450C0EC0122971B821A82A0918A
|
||||
:1002C0000103B0910203109709F140E050E0AC1730
|
||||
:1002D000BD0708F1BB83AA83FE0121913191E20F92
|
||||
:1002E000F31FAE17BF0779F48D919C911197280FDA
|
||||
:1002F000391F2E5F3F4F3983288312968D919C9131
|
||||
:1003000013979B838A834115510571F4D09302039F
|
||||
:10031000C093010320C012968D919C911397AD015B
|
||||
:10032000009711F0DC01D3CFFA01D383C28321916E
|
||||
:100330003191E20FF31FCE17DF0769F488819981AD
|
||||
:10034000280F391F2E5F3F4FFA01318320838A81A6
|
||||
:100350009B8193838283DF91CF910895A0E0B0E0E9
|
||||
:10036000E4EBF1E00C9494186C01009729F4CB01B4
|
||||
:100370000E94AC006C01C1C08EEF882E8FEF982ECA
|
||||
:100380008C0C9D1C8601060F171F0815190508F413
|
||||
:10039000B2C0F401A081B181A617B707B8F0A530AB
|
||||
:1003A000B10508F4AAC0CD0104978617970708F491
|
||||
:1003B000A4C01297A61BB70BF801A193B193D40167
|
||||
:1003C0006D937C93CF010E94560197C07B01EA1A7E
|
||||
:1003D000FB0AEEEFFFEFEE0EFF1E36016A0E7B1EEC
|
||||
:1003E000C0910103D091020344245524AA24BB24C4
|
||||
:1003F0004AC0C615D705E1F5488159814E155F05FC
|
||||
:10040000B8F1CA0104978E159F05B0F41296A40F97
|
||||
:10041000B51FF401B183A0832A813B8141145104AB
|
||||
:1004200031F0D20113963C932E93129766C030930D
|
||||
:1004300002032093010361C08A819B81F8019383A9
|
||||
:100440008283425050404E195F09518340834114CA
|
||||
:10045000510431F0D20113961C930E93129704C0ED
|
||||
:100460001093020300930103F4017183608345C07C
|
||||
:1004700088819981A816B90608F45C012E018A8149
|
||||
:100480009B819C01E901209709F0B3CF8091FF0285
|
||||
:100490009091000386159705E9F4A616B706D0F4E7
|
||||
:1004A0002091CB013091CC012115310541F42DB7BC
|
||||
:1004B0003EB78091C7019091C801281B390B0217E4
|
||||
:1004C0001307C8F4109300030093FF02D4016D9347
|
||||
:1004D0007C9313C0CB010E94AC00EC01009759F053
|
||||
:1004E000F40140815181B6010E948702C6010E9439
|
||||
:1004F00056016E0102C0CC24DD24C601CDB7DEB7A3
|
||||
:10050000E0E10C94B018662777270C94D504FB0122
|
||||
:10051000DC0102C001900D9241505040D8F708957F
|
||||
:10052000FC018191861721F08823D9F79927089536
|
||||
:100530003197CF010895FB01DC018D910190801965
|
||||
:100540000110D9F3990B0895FB01DC0101900D9284
|
||||
:100550000020E1F70895FB01DC014150504048F0D4
|
||||
:1005600001900D920020C9F701C01D9241505040EA
|
||||
:10057000E0F70895FB0151915523A9F0BF01DC017B
|
||||
:100580004D9145174111E1F759F4CD01019000203B
|
||||
:1005900049F04D9140154111C9F3FB014111EFCFD5
|
||||
:1005A00081E090E001970895AEE0B0E0EAEDF2E07E
|
||||
:1005B0000C94A0180D891E8986E08C831A83098308
|
||||
:1005C0008FEF9FE79E838D839E01275E3F4FCE0175
|
||||
:1005D00001966F89788DA9010E94F8022F813885D4
|
||||
:1005E000020F131FF80110822E96E4E00C94BC1841
|
||||
:1005F000ABE0B0E0EEEFF2E00C9492183C012B017E
|
||||
:100600005A01FC0117821682838181FD03C06FEFBE
|
||||
:100610007FEFC6C19AE0892E1E010894211C311C6F
|
||||
:10062000F3012381F20123FD859123FF81912F01A5
|
||||
:10063000882309F4B2C1853239F423FD859123FF63
|
||||
:1006400081912F01853229F490E0B3010E94630665
|
||||
:10065000E7CF982FFF24EE249924FFE1FF15D0F077
|
||||
:100660009B3269F09C3228F4903259F0933291F425
|
||||
:100670000EC09D3249F0903369F441E024C052E04D
|
||||
:10068000F52A84E0F82A28C098E0F92A25C0E0E19C
|
||||
:10069000FE2A22C0F7FC29C0892F80538A3070F4CB
|
||||
:1006A000F6FE05C0989C902C1124980E15C0E89C6D
|
||||
:1006B000E02C1124E80EF0E2FF2A0EC09E3229F44D
|
||||
:1006C000F6FC6BC140E4F42A07C09C3619F450E8EC
|
||||
:1006D000F52A02C0983649F4F20123FD959123FFD3
|
||||
:1006E00091912F01992309F0B8CF892F8554833038
|
||||
:1006F00018F08052833038F444E050E0A40EB51E68
|
||||
:100700005FE359830FC0933631F0933779F0933517
|
||||
:1007100009F056C020C0F5018081898342E050E095
|
||||
:10072000A40EB51E610101E010E012C0F501C08009
|
||||
:10073000D180F6FC03C06FEF7FEF02C0692D70E03F
|
||||
:1007400042E050E0A40EB51EC6010E9458068C017E
|
||||
:100750005FE7F52214C0F501C080D180F6FC03C02C
|
||||
:100760006FEF7FEF02C0692D70E042E050E0A40E11
|
||||
:10077000B51EC6010E944D068C0150E8F52AF3FE15
|
||||
:1007800007C01AC080E290E0B3010E946306EA94B9
|
||||
:100790008E2D90E008171907A8F30EC0F601F7FC9C
|
||||
:1007A0008591F7FE81916F0190E0B3010E9463068D
|
||||
:1007B000E110EA94015010400115110579F7EAC0E3
|
||||
:1007C000943611F0993669F5F7FE08C0F5012081DD
|
||||
:1007D00031814281538184E090E00AC0F50180813B
|
||||
:1007E00091819C01442737FD4095542F82E090E091
|
||||
:1007F000A80EB91E9FE6F92257FF09C050954095F3
|
||||
:10080000309521953F4F4F4F5F4FE0E8FE2ACA01D8
|
||||
:10081000B901A1012AE030E00E948F06D82ED2183B
|
||||
:1008200040C0953729F41F2D1F7E2AE030E01DC0FF
|
||||
:100830001F2D197F9F3661F0903720F4983509F00D
|
||||
:10084000ACC00FC0903739F0983709F0A6C004C08B
|
||||
:1008500028E030E00AC0106114FD146020E130E0AF
|
||||
:1008600004C014FD166020E132E017FF08C0F50156
|
||||
:10087000608171818281938144E050E008C0F5017C
|
||||
:1008800080819181BC0180E090E042E050E0A40EC4
|
||||
:10089000B51EA1010E948F06D82ED2188FE7F82E20
|
||||
:1008A000F122F6FE0BC05EEFF522D91438F4F4FE07
|
||||
:1008B00007C0F2FC05C08FEEF82202C01D2D01C05A
|
||||
:1008C000192DF4FE0DC0FE01ED0DF11D8081803368
|
||||
:1008D00019F499EEF92208C01F5FF2FE05C003C0AB
|
||||
:1008E0008F2D867809F01F5F0F2DF3FC14C0F0FEEA
|
||||
:1008F0000FC01E1510F09D2C0BC09D2C9E0C911A44
|
||||
:100900001E2D06C080E290E0B3010E9463061F5FC7
|
||||
:100910001E15C0F304C01E1510F4E11A01C0EE2428
|
||||
:1009200004FF0FC080E390E0B3010E94630602FF62
|
||||
:100930001DC001FD03C088E790E00EC088E590E08F
|
||||
:100940000BC0802F867891F001FF02C08BE201C0BE
|
||||
:1009500080E2F7FC8DE290E0B3010E94630606C0DE
|
||||
:1009600080E390E0B3010E9463069A94D914C0F327
|
||||
:10097000DA94F101ED0DF11D808190E0B3010E9448
|
||||
:100980006306DD20A9F706C080E290E0B3010E9473
|
||||
:100990006306EA94EE20C1F743CEF30166817781C6
|
||||
:1009A000CB012B96E2E10C94AE18A0E0B0E0EBEDA9
|
||||
:1009B000F4E00C949818EC015B016115710519F0D5
|
||||
:1009C000FB0191838083F9908F2D90E00E9487181E
|
||||
:1009D000892BC9F7FDE2FF1621F4F990EE24E39488
|
||||
:1009E00005C02BE2F21609F4F990EE248E010150B5
|
||||
:1009F0001040C80162EC70E043E050E00E94350610
|
||||
:100A0000892B01F58E010E5F1F4FC80165EC70E068
|
||||
:100A100045E050E00E943506892B19F48E01095FEC
|
||||
:100A20001F4FA114B10419F0F50111830083E0FCFC
|
||||
:100A300004C070E090E080E814C070E090E080E8CE
|
||||
:100A40006FEF08C1C8016AEC70E043E050E00E941B
|
||||
:100A50003506892B69F4A114B10429F470E090E003
|
||||
:100A600080EC6FE7F7C02296F501D183C083F6CF03
|
||||
:100A70008824992440E050E060E070E0EF2DE053DE
|
||||
:100A8000EA30A0F5F2E0EF2A8E2D90E09C0128706C
|
||||
:100A90003070E2FE06C0232B79F50894811C911C6E
|
||||
:100AA0002BC0232B19F0089481089108DB01CA019F
|
||||
:100AB00012E0880F991FAA1FBB1F1A95D1F7480F84
|
||||
:100AC000591F6A1F7B1F440F551F661F771F4E0F4C
|
||||
:100AD000511D611D711D483929E9520729E9620735
|
||||
:100AE00029E1720748F084E0E82A06C0EE3F31F4BD
|
||||
:100AF000E3FC39C098E0E92AF990C0CFE53311F062
|
||||
:100B0000E53189F529912D3219F4E0E1EE2A05C08D
|
||||
:100B10002B3219F081E090E003C0299182E090E04F
|
||||
:100B2000E22FE053EA3018F0C81BD90B1CC020E0BC
|
||||
:100B300030E0FCE020383F075CF4C901880F991FC2
|
||||
:100B4000880F991F280F391F220F331F2E0F311DB9
|
||||
:100B5000E991E053EA3068F3E4FE03C03095219553
|
||||
:100B60003F4F820E931ECE2CDD24E1FE07C0A11460
|
||||
:100B7000B10421F02197F501D183C083CB01BA01E3
|
||||
:100B80000E9404177B018C01F3E0CF22DD2423E0D7
|
||||
:100B9000C216D10421F417FB109517F910955701CF
|
||||
:100BA0006801C801B70120E030E040E050E00E9459
|
||||
:100BB000CF16882309F44AC097FE0DC021EEE22E1D
|
||||
:100BC00020E0F22E9094819491089394C0E2D0E0BA
|
||||
:100BD00000E010E012C099EFE92E90E0F92EF6CF78
|
||||
:100BE000F7012591359145915491C601B5010E94B7
|
||||
:100BF000BA175B016C018C1A9D0A8C169D0684F74E
|
||||
:100C0000D595C7950F5F1F4F0630110529F08CEF62
|
||||
:100C10009FEFE80EF91EF1CFC501D6017C018D01D1
|
||||
:100C20008C2D880F8D2D881F8F3F51F0C601B50187
|
||||
:100C300020E030E040E050E00E94CF16882331F4FD
|
||||
:100C400082E290E090930403809303037E2D9F2D16
|
||||
:100C5000802F612F272F392F482F562FB901CA0116
|
||||
:100C6000CDB7DEB7ECE00C94B418FB01DC014150C9
|
||||
:100C7000504088F08D9181341CF08B350CF4805EEF
|
||||
:100C8000659161341CF06B350CF4605E861B61115C
|
||||
:100C900071F3990B0895881BFCCFFC0105906150FE
|
||||
:100CA00070400110D8F7809590958E0F9F1F089582
|
||||
:100CB000FC016150704001900110D8F7809590952B
|
||||
:100CC0008E0F9F1F08950F931F93CF93DF938C0177
|
||||
:100CD000EB018B8181FF1BC082FF0DC02E813F8104
|
||||
:100CE0008C819D812817390764F4E881F98101938B
|
||||
:100CF000F983E88306C0E885F985802F0995892B5B
|
||||
:100D000031F48E819F8101969F838E8302C00FEF05
|
||||
:100D10001FEFC801DF91CF911F910F910895FA0144
|
||||
:100D2000AA27283051F1203181F1E8946F936E7F2A
|
||||
:100D30006E5F7F4F8F4F9F4FAF4FB1E03ED0B4E01B
|
||||
:100D40003CD0670F781F891F9A1FA11D680F791F5C
|
||||
:100D50008A1F911DA11D6A0F711D811D911DA11D6D
|
||||
:100D600020D009F468943F912AE0269F112430197D
|
||||
:100D7000305D3193DEF6CF010895462F4770405D18
|
||||
:100D80004193B3E00FD0C9F7F6CF462F4F70405DC7
|
||||
:100D90004A3318F0495D31FD4052419302D0A9F722
|
||||
:100DA000EACFB4E0A6959795879577956795BA951C
|
||||
:100DB000C9F700976105710508959B01AC010A2EE2
|
||||
:100DC00006945795479537952795BA95C9F7620FB9
|
||||
:100DD000731F841F951FA01D0895EF92FF920F931C
|
||||
:100DE0001F938130910551F0892B19F46F5F7F4F6C
|
||||
:100DF000A1F11F910F91FF90EF9008956F5F7F4FCA
|
||||
:100E0000C1F70EEE11E0C80160E071E00E94AB1581
|
||||
:100E1000095F1F4F82E00A301807A9F785E192E0C9
|
||||
:100E200068EC70E048E050E029E030E00AE010E0D3
|
||||
:100E3000FBE0EF2EF12C0E94500F8FE292E068EC65
|
||||
:100E400070E042E050E023E030E004E010E0E5E054
|
||||
:100E5000EE2EF12C0E94500FCCCF03E012E0C8011F
|
||||
:100E60000E945E160750104081E0073E1807B9F750
|
||||
:100E70001F910F91FF90EF90089580E090E06FEF49
|
||||
:100E80007FEF0E94ED06089581E090E06FEF7FEF25
|
||||
:100E90000E94ED0608950F931F93DF93CF93CDB774
|
||||
:100EA000DEB7C45FD1400FB6F894DEBF0FBECDBF32
|
||||
:100EB0008DB79EB70C970FB6F8949EBF0FBE8DBF2F
|
||||
:100EC000EDB7FEB731968E010F5F1F4FADB7BEB7BE
|
||||
:100ED00012961C930E93119781E091E09383828385
|
||||
:100EE00087E391E09583848381E090E09783868314
|
||||
:100EF0008FEF9FEF9187808784E190E093878287CF
|
||||
:100F00000E94D4028DB79EB70C960FB6F8949EBF80
|
||||
:100F10000FBE8DBF83ED92E0B8010E941112CC503C
|
||||
:100F2000DE4F0FB6F894DEBF0FBECDBFCF91DF917D
|
||||
:100F30001F910F9108950F931F93DF93CF93CDB718
|
||||
:100F4000DEB7E2970FB6F894DEBF0FBECDBF8DB708
|
||||
:100F50009EB70C970FB6F8949EBF0FBE8DBFEDB72E
|
||||
:100F6000FEB731968E010F5F1F4FADB7BEB7129619
|
||||
:100F70001C930E93119780E591E093838283809177
|
||||
:100F8000D5019091D601A091D701B091D801848369
|
||||
:100F90009583A683B7838091D9019091DA01A091BE
|
||||
:100FA000DB01B091DC0180879187A287B3870E9423
|
||||
:100FB000D4028DB79EB70C960FB6F8949EBF0FBEA5
|
||||
:100FC0008DBF83ED92E0B8010E941112E2960FB638
|
||||
:100FD000F894DEBF0FBECDBFCF91DF911F910F916F
|
||||
:100FE000089583ED92E06AE571E00E941112089580
|
||||
:100FF000BC0183ED92E00E94571208950F931F9356
|
||||
:10100000DF93CF93CDB7DEB727970FB6F894DEBF47
|
||||
:101010000FBECDBF81E0809314028E010F5F1F4F82
|
||||
:10102000C80166E671E00E94AB15C8010E94F8078E
|
||||
:10103000C8010E945E1627960FB6F894DEBF0FBE59
|
||||
:10104000CDBFCF91DF911F910F9108950F931F9303
|
||||
:10105000DF93CF93CDB7DEB727970FB6F894DEBFF7
|
||||
:101060000FBECDBF109214028E010F5F1F4FC8013B
|
||||
:1010700066E671E00E94AB15C8010E94F807C8013E
|
||||
:101080000E945E1627960FB6F894DEBF0FBECDBF46
|
||||
:10109000CF91DF911F910F9108950F931F93DF93CD
|
||||
:1010A000CF93CDB7DEB727970FB6F894DEBF0FBE4C
|
||||
:1010B000CDBF1092CD011092CE011092CF011092AF
|
||||
:1010C000D0011092D1011092D2011092D30110924E
|
||||
:1010D000D4018E010F5F1F4FC80166E671E00E94C8
|
||||
:1010E000AB15C8010E94F807C8010E945E1627963A
|
||||
:1010F0000FB6F894DEBF0FBECDBFCF91DF911F9129
|
||||
:101100000F9108950F931F93DF93CF93CDB7DEB761
|
||||
:1011100027970FB6F894DEBF0FBECDBF0E94D8163A
|
||||
:101120000E9430138E010F5F1F4FC80166E671E009
|
||||
:101130000E94AB15C8010E94F807C8010E945E1604
|
||||
:1011400027960FB6F894DEBF0FBECDBFCF91DF91CB
|
||||
:101150001F910F910895FC01662349F4EE0FFF1FC4
|
||||
:10116000E65FFD4F808160E00E94FD130895EE0F61
|
||||
:10117000FF1FE65FFD4F808161E00E94FD1308952F
|
||||
:101180000F931F93DF93CF93CDB7DEB727970FB69B
|
||||
:10119000F894DEBF0FBECDBF8C01809112029091FA
|
||||
:1011A0001302009701F5043011051CF1109213028F
|
||||
:1011B000109212028E010F5F1F4FC80166E671E0A8
|
||||
:1011C0000E94AB15C8010E94F807C8010E945E1674
|
||||
:1011D00027960FB6F894DEBF0FBECDBFCF91DF913B
|
||||
:1011E0001F910F91089561E00E94AB080430110532
|
||||
:1011F000ECF6C80160E00E94AB0810931302009364
|
||||
:101200001202D8CF2F923F924F925F926F927F92AD
|
||||
:101210008F929F92AF92BF92CF92DF92EF92FF9206
|
||||
:101220000F931F93DF93CF93CDB7DEB72C970FB6F5
|
||||
:10123000F894DEBF0FBECDBF6B837C838D839E830E
|
||||
:101240002F83388749875A8785E192E0B801A70143
|
||||
:101250000E94500E8FE292E0B801A7010E94500E4A
|
||||
:1012600080911402882361F16091CD017091CE01CB
|
||||
:101270008091CF019091D0010E9404179B01AC0195
|
||||
:101280006B817C818D819E810E946B166B837C8338
|
||||
:101290008D839E836091D1017091D2018091D301A1
|
||||
:1012A0009091D4010E9404179B01AC016F81788555
|
||||
:1012B00089859A850E946B166F83788789879A87BC
|
||||
:1012C0006B817C818D819E8120E030E040EA51E499
|
||||
:1012D0000E94B61718160CF00CC180E090E0A0EA4E
|
||||
:1012E000B1E48B839C83AD83BE8398EEE92E93E0BB
|
||||
:1012F000F92E012D112D88EEC82E83E0D82E6F8196
|
||||
:10130000788589859A8520E030E048E452E40E949F
|
||||
:10131000BA170E94D3162091CD013091CE01409191
|
||||
:10132000CF015091D0012E153F054007510709F418
|
||||
:101330002EC15601A21AB30ACB01AA2797FDA09588
|
||||
:10134000BA2FE090D101F090D2010091D301109119
|
||||
:10135000D4018E159F05A007B10709F414C16B01D4
|
||||
:10136000CE18DF08CA01B9010E9404179B01AC0125
|
||||
:101370006B817C818D819E810E94B61718160CF4BA
|
||||
:10138000B3C0AFEFBFEFBA83A983C801B7010E9412
|
||||
:1013900004179B01AC016F81788589859A850E942D
|
||||
:1013A000B61718160CF49BC08FEF9FEF9C878B87A6
|
||||
:1013B000CA14DB040CF441C03601882477FC809405
|
||||
:1013C000982C611471048104910409F441C0150141
|
||||
:1013D000442437FC4094542CEE24FF248701AA2493
|
||||
:1013E000BB24650110C060E070E080E090E00E94E6
|
||||
:1013F00030130894A11CB11CC11CD11CA614B70445
|
||||
:10140000C804D90428F58FE292E06B857C850E94A0
|
||||
:10141000EE0EE20CF31C041D151DE614F70408057E
|
||||
:10142000190508F3E618F7080809190985E192E09B
|
||||
:1014300069817A810E94EE0ED6CF3501882477FC2F
|
||||
:101440008094982C611471048104910409F064C0A3
|
||||
:101450006B817C818D819E810E94D8167B018C01DD
|
||||
:101460006093CD017093CE018093CF019093D00112
|
||||
:101470006F81788589859A850E94D8166093D101FD
|
||||
:101480007093D2018093D3019093D401E092D5015F
|
||||
:10149000F092D6010093D7011093D8016093D9013F
|
||||
:1014A0007093DA018093DB019093DC012C960FB6E8
|
||||
:1014B000F894DEBF0FBECDBFCF91DF911F910F918A
|
||||
:1014C000FF90EF90DF90CF90BF90AF909F908F9064
|
||||
:1014D0007F906F905F904F903F902F900895A1E084
|
||||
:1014E000B0E0BC87AB8764CFE1E0F0E0FA83E9834A
|
||||
:1014F0004CCF6B817C818D819E8120E030E048E47F
|
||||
:1015000052E40E94BA170E94D3167B010027F7FC11
|
||||
:101510000095102F6B01F3CE1601442437FC409444
|
||||
:10152000542CEE24FF248701AA24BB24650111C09A
|
||||
:1015300060E070E080E090E00E9430130894A11C0D
|
||||
:10154000B11CC11CD11CA614B704C804D90408F0EE
|
||||
:101550007FCF85E192E069817A810E94EE0EE20CF4
|
||||
:10156000F31C041D151DE614F7040805190500F306
|
||||
:10157000E618F708080919098FE292E06B857C8567
|
||||
:101580000E94EE0ED5CF6701C61AD70AEBCE5701DF
|
||||
:10159000AC18BD08D1CEEF92FF920F931F93DF934B
|
||||
:1015A000CF93CDB7DEB727970FB6F894DEBF0FBE47
|
||||
:1015B000CDBFF6E9EF2EF12C012D112D0E9402096D
|
||||
:1015C0008E010F5F1F4FC80166E671E00E94AB15E8
|
||||
:1015D000C8010E94F807C8010E945E1627960FB640
|
||||
:1015E000F894DEBF0FBECDBFCF91DF911F910F9159
|
||||
:1015F000FF90EF900895CF92DF92EF92FF920F93BA
|
||||
:101600001F93DF93CF93CDB7DEB727970FB6F8942C
|
||||
:10161000DEBF0FBECDBFD82EC92E7B018E010F5F5E
|
||||
:101620001F4FC80169E671E00E94AB15C701B80100
|
||||
:101630000E9474149C018D2D9C2DB70140E050E058
|
||||
:101640000E94DE15C8010E945E168D2D9C2D2796E6
|
||||
:101650000FB6F894DEBF0FBECDBFCF91DF911F91C3
|
||||
:101660000F91FF90EF90DF90CF900895AF92BF92CF
|
||||
:10167000CF92DF92EF92FF920F931F93DF93CF935E
|
||||
:10168000CDB7DEB7C054D0400FB6F894DEBF0FBE62
|
||||
:10169000CDBF7C01162F0E9497146C015E01089447
|
||||
:1016A000A11CB11CC50169E671E00E94AB15C70120
|
||||
:1016B000612F0E949714AC01C701B5010E94561416
|
||||
:1016C0009C018E01085F1F4F0894C11CD11CC801EA
|
||||
:1016D000B701A6010E94DE15AFE0EA2EF12CEC0E58
|
||||
:1016E000FD1EC801B70142E350E020E030E00E9457
|
||||
:1016F0009C14C8010E945E16C5010E945E16C701B7
|
||||
:101700000E948302C05CDF4F0FB6F894DEBF0FBEAD
|
||||
:10171000CDBFCF91DF911F910F91FF90EF90DF90A0
|
||||
:10172000CF90BF90AF9008954F925F926F927F924B
|
||||
:101730008F929F92AF92BF92CF92DF92EF92FF92E1
|
||||
:101740000F931F93DF93CF93CDB7DEB7E8970FB614
|
||||
:10175000F894DEBF0FBECDBF582E492E3B018E013F
|
||||
:101760000F5F1F4FC8016BE671E00E94AB15C3010C
|
||||
:10177000B8010E9474147C01C8010E945E168FEFAC
|
||||
:10178000E8168FEFF80681F18E01085F1F4FC80140
|
||||
:101790006BE671E00E94AB15C301B8010E9474149E
|
||||
:1017A0009C01852D942DB30140E050E00E94DE1590
|
||||
:1017B000C8010E945E16852D942DE8960FB6F89408
|
||||
:1017C000DEBF0FBECDBFCF91DF911F910F91FF9074
|
||||
:1017D000EF90DF90CF90BF90AF909F908F907F90D1
|
||||
:1017E0006F905F904F9008958E01015F1F4FC80169
|
||||
:1017F0006DE671E00E94AB15C301B8010E9474143C
|
||||
:101800007C01C8010E945E168FEFE8168FEFF80684
|
||||
:1018100009F452C086E1882E912C8C0E9D1EC401C5
|
||||
:101820006DE671E00E94AB15C301B4010E9474140F
|
||||
:101830009C010DE1A02EB12CAC0EBD1EC501B30163
|
||||
:1018400040E050E00E94DE1512E3C12ED12CCC0EF8
|
||||
:10185000DD1EC601B5010E945316B4E2EB2EF12C39
|
||||
:10186000EC0EFD1EC7016FE671E00E94AB15C301CF
|
||||
:10187000B7010E947414AC018E01055D1F4FC801B1
|
||||
:10188000B3010E942516C601B8010E947415BC015F
|
||||
:10189000852D942D0E944816C8010E945E16C7012E
|
||||
:1018A0000E945E16C6010E946416C5010E945E1663
|
||||
:1018B000C4010E945E167FCF852D942DB3010E9436
|
||||
:1018C000481679CF6F927F928F929F92AF92BF927C
|
||||
:1018D000CF92DF92EF92FF920F931F93DF93CF93FC
|
||||
:1018E000CDB7DEB7CB55D0400FB6F894DEBF0FBEF4
|
||||
:1018F000CDBF4C017E010894E11CF11CC701B4016D
|
||||
:101900000E9448168E01085F1F4FC801B7010E9450
|
||||
:10191000940BC401B8010E943116C8010E945E16E2
|
||||
:10192000C7010E945E168E010A5E1F4FC801B401F6
|
||||
:101930000E9448165FE0652E712C6C0E7D1EC3015F
|
||||
:10194000B8010E94FB0AC8010E945E16C40160E053
|
||||
:1019500070E00E943014FC010081C30161E771E076
|
||||
:101960000E94C914882309F083C0C30164E771E0B1
|
||||
:101970000E94C9148823E9F5C30167E771E00E945A
|
||||
:10198000C914882309F087C0C3016AE771E00E9487
|
||||
:10199000C914882309F090C0C3016EE771E00E946A
|
||||
:1019A000C914882309F08BC0C30162E871E00E946A
|
||||
:1019B000C914882309F086C0C30166E871E00E945B
|
||||
:1019C000C914882309F481C08E01005C1F4FC8012F
|
||||
:1019D000B4010E944816C80164E50E94360B0E94BB
|
||||
:1019E000D316DC01CB010E94C008C8010E945E161C
|
||||
:1019F00026C03BE2A32EB12CAC0EBD1EC501B40126
|
||||
:101A00000E944816C50168E50E94360B6B017C01F7
|
||||
:101A10008E010E5C1F4FC801B4010E944816C80118
|
||||
:101A200069E50E94360B9B01AC01C701B6010E941B
|
||||
:101A3000CB0AC8010E945E16C5010E945E16C30152
|
||||
:101A40000E945E16C55ADF4F0FB6F894DEBF0FBE78
|
||||
:101A5000CDBFCF91DF911F910F91FF90EF90DF905D
|
||||
:101A6000CF90BF90AF909F908F907F906F90089590
|
||||
:101A70004DE1A42EB12CAC0EBD1EC501B4010E94D7
|
||||
:101A80004816C50168E50E94360B6B017C018E018A
|
||||
:101A90000C5D1F4FC0CF8E01075C1F4FC801B40102
|
||||
:101AA0000E944816C80160E50E94360B0E94820819
|
||||
:101AB000C8010E945E16C3CF0E944D08C0CF0E948D
|
||||
:101AC0002608BDCF0E94FE07BACF043509F47CCFAB
|
||||
:101AD000C30163EB71E00E94C914882359F5C30167
|
||||
:101AE00068E871E00E94C914882339F5C3016DE8E4
|
||||
:101AF00071E00E94C914882331F5C30162E971E0E5
|
||||
:101B00000E94C914882311F5C30167E971E00E949E
|
||||
:101B1000C9148823F1F48E010B5A1F4FC8016CE9D8
|
||||
:101B200071E00E94AB15C8010E94F807C8010E942D
|
||||
:101B30005E1685CF0E94F10782CFE0914902F091B5
|
||||
:101B40004A0209957CCF0E949B0779CF0E944B07E0
|
||||
:101B500076CF8E01095B1F4FC80167E971E00E94D3
|
||||
:101B6000AB15C401B8010E9474142EE4E22EF12CCE
|
||||
:101B7000EC0EFD1EAC014C5F5F4FC701B4010E942B
|
||||
:101B80002516C7010E94F807C7010E945E16C8010A
|
||||
:101B90000E945E1654CFEF92FF920F931F93DF9334
|
||||
:101BA000CF93CDB7DEB72E970FB6F894DEBF0FBE3A
|
||||
:101BB000CDBF83ED92E00E949C10892BC9F07E017D
|
||||
:101BC0000894E11CF11CC70163ED72E00E949712BA
|
||||
:101BD0008E01085F1F4FC801B7010E944816C80157
|
||||
:101BE0000E94620CC8010E945E16C7010E945E1628
|
||||
:101BF0002E960FB6F894DEBF0FBECDBFCF91DF910A
|
||||
:101C00001F910F91FF90EF900895CF93DF93CCE059
|
||||
:101C1000D2E0888161E00E949113888161E00E9496
|
||||
:101C2000FD13229682E0C231D80799F7DF91CF9158
|
||||
:101C300008950F931F9305EF11E0C80166EB71E063
|
||||
:101C40000E94C515C80107966BEB71E00E94C5158F
|
||||
:101C5000C8010E9660EC71E00E94C5151F910F91AE
|
||||
:101C6000089583ED92E040E855E260E070E00E9464
|
||||
:101C700015100E94050E0E94190E86E090E09093C8
|
||||
:101C80000D0280930C0287E090E090930F02809306
|
||||
:101C90000E028CE090E09093110280931002089560
|
||||
:101CA000CF92DF92EF92FF920F931F936C017A0114
|
||||
:101CB0008B01FC0120853185442737FD4095542F49
|
||||
:101CC00060E67AEE80E090E00E945218CA01B90105
|
||||
:101CD000A80197010E945218F60124833583468398
|
||||
:101CE00057831F910F91FF90EF90DF90CF90089551
|
||||
:101CF0000F931F93CF93DF93EC018B018A859B8514
|
||||
:101D0000029731F56130710589F06230710524F474
|
||||
:101D10006115710541F01CC06230710571F06330CE
|
||||
:101D20007105B1F40DC08E8560E002C08E8561E062
|
||||
:101D30000E94FD13888961E009C08E8561E002C0C0
|
||||
:101D40008E8560E00E94FD13888960E00E94FD138B
|
||||
:101D50008A859B850497E9F501301105A1F00230D1
|
||||
:101D600011051CF4012B41F034C002301105D1F0F3
|
||||
:101D70000330110571F51DC08E8561E00E94FD13D1
|
||||
:101D8000888960E006C08E8560E00E94FD13888926
|
||||
:101D900061E00E94FD138A8961E00E94FD138C8935
|
||||
:101DA00060E015C08E8560E00E94FD13888961E0C7
|
||||
:101DB00006C08E8561E00E94FD13888960E00E9464
|
||||
:101DC000FD138A8960E00E94FD138C8961E00E9406
|
||||
:101DD000FD13DF91CF911F910F9108950F931F93E2
|
||||
:101DE000CF93DF93EC011616170624F481E090E000
|
||||
:101DF0009983888377FF02C0198218828B0177FF4D
|
||||
:101E000046C0109501951F4F42C00E94FC122E89BA
|
||||
:101E10003F89488D598D621B730B840B950B2C8168
|
||||
:101E20003D814E815F81621773078407950768F3D0
|
||||
:101E30000E94FC126E8B7F8B888F998F888199818D
|
||||
:101E40002C853D85019761F42F5F3F4F3D872C879F
|
||||
:101E5000888599852817390771F41D861C860BC063
|
||||
:101E6000232B21F4888599859D878C878C859D857A
|
||||
:101E700001979D878C87015010408C859D8564E07B
|
||||
:101E800070E00E941D18BC01CE010E94780E011561
|
||||
:101E9000110509F0BACFDF91CF911F910F910895ED
|
||||
:101EA000CF92DF92EF92FF920F931F936C01842FDA
|
||||
:101EB000F601158614861382128211821082168A08
|
||||
:101EC000178A108E118E7187608746875787318BEE
|
||||
:101ED000208B138B028BF58AE48A61E00E949113B8
|
||||
:101EE000F601808961E00E949113F601828961E028
|
||||
:101EF0000E949113F601848961E00E94911384E0AD
|
||||
:101F000090E0F601938782871F910F91FF90EF90E9
|
||||
:101F1000DF90CF90089508951F920F920FB60F9201
|
||||
:101F200011242F933F934F938F939F93EF93FF939E
|
||||
:101F30008091C00082FD1DC04091C60020918B029F
|
||||
:101F400030918C022F5F3F4F2F73307080918D0244
|
||||
:101F500090918E022817390771F0E0918B02F09171
|
||||
:101F60008C02E55BFD4F408330938C0220938B0203
|
||||
:101F700002C08091C600FF91EF919F918F914F9188
|
||||
:101F80003F912F910F900FBE0F901F901895E091E9
|
||||
:101F9000DF02F091E002E05CFF4F8191919120819E
|
||||
:101FA0003181821B930B8F739070892B11F00E94EB
|
||||
:101FB0008B0F08951F920F920FB60F9211242F933B
|
||||
:101FC0003F938F939F93EF93FF932091CF02309194
|
||||
:101FD000D0028091D1029091D2022817390731F4B2
|
||||
:101FE0008091C1008F7D8093C10014C0E091D10227
|
||||
:101FF000F091D202E157FD4F20818091D102909162
|
||||
:10200000D20201968F7390709093D2028093D10286
|
||||
:102010002093C600FF91EF919F918F913F912F9157
|
||||
:102020000F900FBE0F901F901895AF92BF92DF9246
|
||||
:10203000EF92FF920F931F93CF93DF93EC017A01FE
|
||||
:102040008B01DD24403081EE580780E0680780E096
|
||||
:10205000780711F0DD24D39491E0A92EB12CEC89FE
|
||||
:10206000FD89DD2069F0C50108A002C0880F991F15
|
||||
:102070000A94E2F7808360E079E08DE390E005C0A8
|
||||
:10208000108260E874E88EE190E0A80197010E9458
|
||||
:102090003018215030404040504056954795379574
|
||||
:1020A000279580E12030380720F0DD2011F0DD2475
|
||||
:1020B000D6CFE889F9893083EA89FB89208319A280
|
||||
:1020C000EE89FF89408121E030E0C9010C8C02C01B
|
||||
:1020D000880F991F0A94E2F7482B4083EE89FF8905
|
||||
:1020E0004081C9010D8C02C0880F991F0A94E2F744
|
||||
:1020F000482B4083EE89FF894081C9010E8C02C0C4
|
||||
:10210000880F991F0A94E2F7482B4083EE89FF89D4
|
||||
:1021100080810F8C02C0220F331F0A94E2F72095B2
|
||||
:1021200028232083DF91CF911F910F91FF90EF9093
|
||||
:10213000DF90BF90AF900895DC011C96ED91FC916B
|
||||
:102140001D97E05CFF4F2191319180819181281B87
|
||||
:10215000390B2F733070C9010895DC011C96ED9185
|
||||
:10216000FC911D97E05CFF4F20813181E054F040ED
|
||||
:10217000DF01AE5BBF4F8D919C91119728173907F6
|
||||
:1021800019F42FEF3FEF07C08D919C91E80FF91FD5
|
||||
:102190008081282F30E0C9010895DC011C96ED9163
|
||||
:1021A000FC911D97E05CFF4F20813181E054F040AD
|
||||
:1021B000DF01AE5BBF4F8D919C91119728173907B6
|
||||
:1021C00019F42FEF3FEF10C08D919C911197E80FFC
|
||||
:1021D000F91F20818D919C91119701968F739070BA
|
||||
:1021E00011969C938E9330E0C9010895DC0191967D
|
||||
:1021F0008C919197882339F05496ED91FC915597E5
|
||||
:10220000808186FFF9CF91961C920895CF93DF933A
|
||||
:10221000EC01EE85FF85E05CFF4F20813181E054C9
|
||||
:10222000F0402F5F3F4F2F733070DF01AE5BBF4F29
|
||||
:102230008D919C91119728173907D1F3E05CFF4FDE
|
||||
:1022400080819181E054F040E80FF91F6083EE85B2
|
||||
:10225000FF85E05CFF4F31832083EE89FF89208179
|
||||
:1022600081E090E00F8C02C0880F991F0A94E2F77A
|
||||
:10227000282B208381E089A3EC89FD8980818064FB
|
||||
:10228000808381E090E0DF91CF9108951092D60293
|
||||
:102290001092D50288EE93E0A0E0B0E08093D702E0
|
||||
:1022A0009093D802A093D902B093DA0281EE91E024
|
||||
:1022B0009093D4028093D3028BE492E09093E00257
|
||||
:1022C0008093DF028FE892E09093E2028093E10234
|
||||
:1022D00085EC90E09093E4028093E30284EC90E03C
|
||||
:1022E0009093E6028093E50280EC90E09093E80200
|
||||
:1022F0008093E70281EC90E09093EA028093E902F8
|
||||
:1023000082EC90E09093EC028093EB0286EC90E0FC
|
||||
:102310009093EE028093ED0284E08093EF0283E0DD
|
||||
:102320008093F00287E08093F10285E08093F202CF
|
||||
:1023300081E08093F3020895CF93DF930E945613B8
|
||||
:102340000E94310EC7ECDFE00E94CB0D2097E1F335
|
||||
:102350000E94C70FF9CFCF92DF92EF92FF920F93B7
|
||||
:102360001F93CF93DF937C016B018A01C0E0D0E023
|
||||
:102370000FC0D6016D916D01D701ED91FC910190D7
|
||||
:10238000F081E02DC7010995C80FD91F01501040F9
|
||||
:102390000115110571F7CE01DF91CF911F910F91BA
|
||||
:1023A000FF90EF90DF90CF900895EF92FF920F9300
|
||||
:1023B0001F938C01DC01ED91FC910190F081E02DE7
|
||||
:1023C0006DE009957C01D801ED91FC910190F081BF
|
||||
:1023D000E02DC8016AE009959C012E0D3F1DC90141
|
||||
:1023E0001F910F91FF90EF900895CF93DF93EC0131
|
||||
:1023F0006115710519F420E030E00FC0DB010D908C
|
||||
:102400000020E9F71197A61BB70BE881F98102803C
|
||||
:10241000F381E02DAD0109959C01C901DF91CF91B8
|
||||
:102420000895EF92FF920F931F937C010E94F51184
|
||||
:102430008C01C7010E94D511080F191FC8011F91F7
|
||||
:102440000F91FF90EF900895AF92BF92CF92DF92DD
|
||||
:10245000EF92FF920F931F93CF93DF935C016B0179
|
||||
:10246000EE24FF24C0E0D0E010C0D501ED91FC9136
|
||||
:1024700000811181C601BE010E944514682FC5016B
|
||||
:10248000F8010995E80EF91E2196F60184819581DF
|
||||
:10249000C817D90750F3C701DF91CF911F910F9152
|
||||
:1024A000FF90EF90DF90CF90BF90AF900895EF92A4
|
||||
:1024B000FF920F931F937C010E9424128C01C7018D
|
||||
:1024C0000E94D5119C01200F311FC9011F910F914E
|
||||
:1024D000FF90EF900895CF93DF93EC010E94FC12E0
|
||||
:1024E000688779878A879B87E881F9810680F781E9
|
||||
:1024F000E02DCE0109959C0197FF15C00E94FC12AA
|
||||
:10250000288539854A855B85621B730B840B950B87
|
||||
:102510002C813D814E815F81621773078407950787
|
||||
:1025200018F32FEF3FEFC901DF91CF9108950F937B
|
||||
:102530001F93CF93DF93182F092FEB0165EC71E008
|
||||
:102540000E94AB1504C0812F902F0E944F15CE0121
|
||||
:102550000E946B12BC0197FFF6CF812F902FDF9165
|
||||
:10256000CF911F910F9108951F920F920FB60F9266
|
||||
:1025700011242F933F938F939F93AF93BF93809199
|
||||
:10258000F9029091FA02A091FB02B091FC02309105
|
||||
:10259000FD020196A11DB11D232F2D5F2D3720F0C7
|
||||
:1025A0002D570196A11DB11D2093FD028093F902C4
|
||||
:1025B0009093FA02A093FB02B093FC028091F50283
|
||||
:1025C0009091F602A091F702B091F8020196A11D38
|
||||
:1025D000B11D8093F5029093F602A093F702B09399
|
||||
:1025E000F802BF91AF919F918F913F912F910F90E2
|
||||
:1025F0000FBE0F901F9018958FB7F8942091F90295
|
||||
:102600003091FA024091FB025091FC028FBFB90158
|
||||
:10261000CA0108959FB7F8942091F5023091F6020F
|
||||
:102620004091F7025091F80286B5A89B06C08F3FF3
|
||||
:1026300021F02F5F3F4F4F4F5F4F9FBF542F432FCE
|
||||
:10264000322F2227280F311D411D511D82E0220FFC
|
||||
:10265000331F441F551F8A95D1F7B901CA01089548
|
||||
:10266000EF92FF920F931F93CF93DF937B018C0127
|
||||
:102670000E940A13EB010EC00E940A136C1B7D0B13
|
||||
:10268000685E7340C8F30894E108F1080109110974
|
||||
:10269000C851DC4FE114F1040105110569F7DF9120
|
||||
:1026A000CF911F910F91FF90EF900895789484B58A
|
||||
:1026B000826084BD84B5816084BD85B5826085BD3E
|
||||
:1026C00085B5816085BDEEE6F0E080818160808324
|
||||
:1026D000E1E8F0E010828081826080838081816007
|
||||
:1026E0008083E0E8F0E0808181608083E1EBF0E0CE
|
||||
:1026F000808184608083E0EBF0E080818160808372
|
||||
:10270000EAE7F0E08081846080838081826080835A
|
||||
:102710008081816080838081806880831092C10085
|
||||
:102720000895CF93DF93482F50E0CA0186569F4FFC
|
||||
:10273000FC0134914A575F4FFA018491882369F173
|
||||
:1027400090E0880F991FFC01E859FF4FA591B491C3
|
||||
:10275000FC01EE58FF4FC591D491662351F42FB779
|
||||
:10276000F8948C91932F909589238C938881892359
|
||||
:102770000BC0623061F42FB7F8948C91932F909531
|
||||
:1027800089238C938881832B88832FBF06C09FB7B2
|
||||
:10279000F8948C91832B8C939FBFDF91CF910895F8
|
||||
:1027A000833071F0843028F48130A1F0823021F53B
|
||||
:1027B00014C08630B1F08730D1F08430E9F404C021
|
||||
:1027C000809180008F7703C0809180008F7D8093FF
|
||||
:1027D0008000089584B58F7702C084B58F7D84BD55
|
||||
:1027E00008958091B0008F778093B0000895809114
|
||||
:1027F000B0008F7D8093B0000895FF920F931F93D8
|
||||
:10280000F62E482F50E0CA0182559F4FFC012491BB
|
||||
:10281000CA0186569F4FFC0114914A575F4FFA0137
|
||||
:1028200004910023C9F0222319F0822F0E94D013B3
|
||||
:10283000E02FF0E0EE0FFF1FEE58FF4FA591B4918F
|
||||
:102840009FB7F894FF2021F48C911095812302C04A
|
||||
:102850008C91812B8C939FBF1F910F91FF900895B6
|
||||
:10286000FC019B01848195816817790728F46081B8
|
||||
:1028700071816115710529F41092FE026EEF72E00C
|
||||
:1028800002C0620F731FCB010895FC018481958102
|
||||
:102890006817790748F40190F081E02D309721F016
|
||||
:1028A000E60FF71F8081089580E00895CF93DF93AE
|
||||
:1028B000FC01DB01848195814817590760F4C081D0
|
||||
:1028C000D1816D917C91CE01840F951F0E94BA0237
|
||||
:1028D0009C01009719F42FEF3FEF02C02C1B3D0B1A
|
||||
:1028E000C901DF91CF91089540E050E00E94561455
|
||||
:1028F0000895CF93DF93FC01848195814817590790
|
||||
:1029000068F4C081D181772767FD7095CE01840F6F
|
||||
:10291000951F0E9490029C01009719F42FEF3FEF42
|
||||
:1029200002C02C1B3D0BC901DF91CF91089540E0FF
|
||||
:1029300050E00E94791408950F931F93CF93DF9373
|
||||
:10294000FC018B0141155105F9F061157105E1F0AC
|
||||
:10295000848195812817390718F0FB01108214C073
|
||||
:1029600041505040EC01C21BD30B4C175D0708F4DB
|
||||
:10297000EA0160817181620F731FC801AE010E947C
|
||||
:10298000AB02C00FD11F1882DF91CF911F910F9121
|
||||
:102990000895DC01FB0114968D919C911597892B6C
|
||||
:1029A00031F461157105A9F090E0808108C00D90A7
|
||||
:1029B000BC91A02D6115710529F490E08C918823BC
|
||||
:1029C00049F407C0CD010E949B029C0190E0232B9B
|
||||
:1029D00009F491E0892F08950F931F93CF93DF930C
|
||||
:1029E000EC018B016F5F7F4F888199810E94AE015E
|
||||
:1029F000009711F480E005C0998388831B830A83C4
|
||||
:102A000081E0DF91CF911F910F910895CF93DF93D4
|
||||
:102A1000EC0188819981892B29F08A819B81861715
|
||||
:102A2000970760F4CE010E94EC14882341F08C815A
|
||||
:102A30009D81892B19F4E881F981108281E0DF9171
|
||||
:102A4000CF910895EF92FF920F931F93CF93DF934F
|
||||
:102A5000EC017B016C817D81E114F104C1F0411531
|
||||
:102A6000510599F08A01060F171FB8010E9406153B
|
||||
:102A7000882369F0888199812C813D81820F931F81
|
||||
:102A8000B7010E94A4021D830C8381E001C080E095
|
||||
:102A9000DF91CF911F910F91FF90EF900895DF93F9
|
||||
:102AA000CF9300D0CDB7DEB769831A82BE016F5FC6
|
||||
:102AB0007F4F41E050E00E9422150F900F90CF9180
|
||||
:102AC000DF910895CF93DF93EC018881998100977E
|
||||
:102AD00011F00E945601198218821D821C821B82ED
|
||||
:102AE0001A82DF91CF9108950F931F93182F092F0A
|
||||
:102AF000FB0160817181448155810E9422158823E8
|
||||
:102B000021F4812F902F0E946215812F902F1F9109
|
||||
:102B10000F910895EF92FF920F931F93CF93DF933E
|
||||
:102B2000EC017B018A01BA010E940615882321F479
|
||||
:102B3000CE010E94621507C01D830C838881998194
|
||||
:102B4000B7010E94A402CE01DF91CF911F910F9196
|
||||
:102B5000FF90EF900895CF93DF93EC0119821882D4
|
||||
:102B60001B821A821D821C821E826115710551F022
|
||||
:102B7000DB010D900020E9F71197A61BB70BAD0103
|
||||
:102B80000E948A15DF91CF9108950F931F93182FFC
|
||||
:102B9000092F6115710559F0DB010D900020E9F74F
|
||||
:102BA0001197A61BB70BAD010E948A1502C00E94A7
|
||||
:102BB0006215812F902F1F910F910895BF92CF9290
|
||||
:102BC000DF92EF92FF920F931F93CF93DF93082F23
|
||||
:102BD000B92E6B017A01E9012417350710F4EA01D7
|
||||
:102BE0007901802F9B2D66EC71E00E94AB15D60118
|
||||
:102BF00014968D919C9115978E159F05D0F08C178A
|
||||
:102C00009D0708F4EC01D601ED91FC911197EC0FB2
|
||||
:102C1000FD1F108110826D917C916E0D7F1D802FA4
|
||||
:102C20009B2D0E94C515D601ED91FC91EC0FFD1F67
|
||||
:102C30001083802F9B2DDF91CF911F910F91FF90DB
|
||||
:102C4000EF90DF90CF90BF9008950F931F938C016A
|
||||
:102C5000FB01248135810E94DE15C8011F910F916F
|
||||
:102C60000895CF93DF93EC01FB018617970761F07E
|
||||
:102C7000608171816115710529F0448155810E943F
|
||||
:102C80008A1502C00E946215CE01DF91CF9108958E
|
||||
:102C9000FC01118210821382128215821482168224
|
||||
:102CA0000E9431160895FC01118210821382128253
|
||||
:102CB0001582148216820E9431160895FC018081CB
|
||||
:102CC00091810E9456010895FC01808191810E94AA
|
||||
:102CD000560108955058BB27AA270ED00DC1FED02B
|
||||
:102CE00030F003D120F031F49F3F11F41EF4F3C013
|
||||
:102CF0000EF4E095E7FBE9C0E92F0FD180F3BA1796
|
||||
:102D0000620773078407950718F071F49EF527C1D1
|
||||
:102D10000EF4E0950B2EBA2FA02D0B01B9019001F6
|
||||
:102D20000C01CA01A0011124FF27591B99F0593F3A
|
||||
:102D300050F4503E68F11A16F040A22F232F342F82
|
||||
:102D40004427585FF3CF469537952795A795F040D0
|
||||
:102D50005395C9F77EF41F16BA0B620B730B840BE5
|
||||
:102D6000BAF09150A1F0FF0FBB1F661F771F881F9D
|
||||
:102D7000C2F70EC0BA0F621F731F841F48F48795F5
|
||||
:102D800077956795B795F7959E3F08F0B3CF9395E4
|
||||
:102D9000880F08F09927EE0F97958795089571D0C1
|
||||
:102DA00008F481E0089504D06894B111D9C0089561
|
||||
:102DB000BCD088F09F5790F0B92F9927B751A0F059
|
||||
:102DC000D1F0660F771F881F991F1AF0BA95C9F7BF
|
||||
:102DD00012C0B13081F0C3D0B1E00895C0C0672FF8
|
||||
:102DE000782F8827B85F39F0B93FCCF3869577956F
|
||||
:102DF0006795B395D9F73EF4909580957095619558
|
||||
:102E00007F4F8F4F9F4F0895E89409C097FB3EF482
|
||||
:102E100090958095709561957F4F8F4F9F4F992327
|
||||
:102E2000A9F0F92F96E9BB279395F69587957795A5
|
||||
:102E30006795B795F111F8CFFAF4BB0F11F460FF65
|
||||
:102E40001BC06F5F7F4F8F4F9F4F16C0882311F0BD
|
||||
:102E500096E911C0772321F09EE8872F762F05C0D1
|
||||
:102E6000662371F096E8862F70E060E02AF09A956C
|
||||
:102E7000660F771F881FDAF7880F9695879597F961
|
||||
:102E80000895990F0008550FAA0BE0E8FEEF1616FB
|
||||
:102E90001706E807F907C0F012161306E407F5074E
|
||||
:102EA00098F0621B730B840B950B39F40A2661F0C2
|
||||
:102EB000232B242B252B21F408950A2609F4A14065
|
||||
:102EC000A6958FEF811D811D089597F99F6780E872
|
||||
:102ED00070E060E008959FEF80EC089500240A946C
|
||||
:102EE0001616170618060906089500240A941216E5
|
||||
:102EF0001306140605060895092E0394000C11F418
|
||||
:102F0000882352F0BB0F40F4BF2B11F460FF04C0C4
|
||||
:102F10006F5F7F4F8F4F9F4F089557FD9058440F1D
|
||||
:102F2000551F59F05F3F71F04795880F97FB991F28
|
||||
:102F300061F09F3F79F087950895121613061406E5
|
||||
:102F4000551FF2CF4695F1DF08C016161706180672
|
||||
:102F5000991FF1CF86957105610508940895E8944D
|
||||
:102F6000BB2766277727CB0197F908958ADF08F4F6
|
||||
:102F70008FEF08950BD0C0CFB1DF28F0B6DF18F087
|
||||
:102F8000952309F0A2CFA7CF1124EACFC6DFA0F383
|
||||
:102F9000959FD1F3950F50E0551F629FF001729FEE
|
||||
:102FA000BB27F00DB11D639FAA27F00DB11DAA1F0D
|
||||
:102FB000649F6627B00DA11D661F829F2227B00D5A
|
||||
:102FC000A11D621F739FB00DA11D621F839FA00DE5
|
||||
:102FD000611D221F749F3327A00D611D231F849F35
|
||||
:102FE000600D211D822F762F6A2F11249F5750408C
|
||||
:102FF0008AF0E1F088234AF0EE0FFF1FBB1F661F27
|
||||
:10300000771F881F91505040A9F79E3F510570F0DF
|
||||
:103010005CCFA6CF5F3FECF3983EDCF386957795C7
|
||||
:103020006795B795F795E7959F5FC1F7FE2B880FDA
|
||||
:10303000911D9695879597F9089597FB092E072678
|
||||
:103040000AD077FD04D049D006D000201AF470953C
|
||||
:1030500061957F4F0895F6F7909581959F4F08955C
|
||||
:10306000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F8C
|
||||
:10307000EE1FFF1FA217B307E407F50720F0A21BFE
|
||||
:10308000B30BE40BF50B661F771F881F991F1A946B
|
||||
:1030900069F760957095809590959B01AC01BD0195
|
||||
:1030A000CF01089597FB092E05260ED057FD04D0B9
|
||||
:1030B000D7DF0AD0001C38F4509540953095219503
|
||||
:1030C0003F4F4F4F5F4F0895F6F79095809570955D
|
||||
:1030D00061957F4F8F4F9F4F0895AA1BBB1B51E1F6
|
||||
:1030E00007C0AA1FBB1FA617B70710F0A61BB70B78
|
||||
:1030F000881F991F5A95A9F780959095BC01CD011D
|
||||
:103100000895EE0FFF1F0590F491E02D09949111A1
|
||||
:1031100006C0803219F089508550D0F7089599275C
|
||||
:10312000882708952F923F924F925F926F927F92DD
|
||||
:103130008F929F92AF92BF92CF92DF92EF92FF92C7
|
||||
:103140000F931F93CF93DF93CDB7DEB7CA1BDB0B73
|
||||
:103150000FB6F894DEBF0FBECDBF09942A88398818
|
||||
:1031600048885F846E847D848C849B84AA84B9841F
|
||||
:10317000C884DF80EE80FD800C811B81AA81B9812B
|
||||
:10318000CE0FD11D0FB6F894DEBF0FBECDBFED013F
|
||||
:10319000089511E0C2E0D1E004C0FE010E9483184E
|
||||
:0C31A0002296C430D107C9F7F894FFCF85
|
||||
:1031AC00007B22736F667477617265223A222573F5
|
||||
:1031BC00222C2022706F776572223A25622C2022F5
|
||||
:1031CC006C656E677468223A25692C2022776964D5
|
||||
:1031DC007468223A256900506C6F7474576172657B
|
||||
:1031EC004669726D776172652076302E302E310013
|
||||
:1031FC00583A256620593A25660050524F4752419D
|
||||
:10320C004D20454E44004F4B0020003B0028002928
|
||||
:10321C000047300047310047340047323800473907
|
||||
:10322C0030004739310054004D313132004D3131CD
|
||||
:10323C0034004D313135004D31313800436F6D6DF7
|
||||
:10324C00616E64206E6F7420737570706F7274652C
|
||||
:10325C00642E004D320050656E310050656E3200A8
|
||||
:10326C0050656E33000000200005030000FFFFFFD7
|
||||
:10327C00FFFFFFFFFFFFFFFFFFFFFFFFFF0000004F
|
||||
:0E328C00000611AB119C10CD10AD10F6100015
|
||||
:00000001FF
|
86
PlottWareFirmware/commandParsers.h
Normal file
@ -0,0 +1,86 @@
|
||||
#ifndef COMMANDPARSERS_H_INCLUDED
|
||||
#define COMMANDPARSERS_H_INCLUDED
|
||||
|
||||
#include <stdio.h>
|
||||
#include "selfreset.h"
|
||||
|
||||
void cmdM118(String s){
|
||||
Serial.println(s);
|
||||
}
|
||||
|
||||
void cmdG0(double x, double y){
|
||||
goTo(x, y, SPEED_FAST);
|
||||
cmdM118(String("OK"));
|
||||
}
|
||||
|
||||
void cmdG1(double x, double y){
|
||||
goTo(x, y, SPEED_NORMAL);
|
||||
cmdM118("OK");
|
||||
}
|
||||
|
||||
void cmdG4(double p){
|
||||
delay(p);
|
||||
cmdM118("OK");
|
||||
}
|
||||
|
||||
void cmdG28(){
|
||||
if(XHOME){
|
||||
while(digitalRead(XHOME)!=true){
|
||||
stepperX.step(-STEP_INCREMENT);
|
||||
}
|
||||
}
|
||||
if(YHOME){
|
||||
while(digitalRead(YHOME)!=true){
|
||||
stepperY.step(-STEP_INCREMENT);
|
||||
}
|
||||
}
|
||||
posX=0;
|
||||
posY=0;
|
||||
cmdM118("OK");
|
||||
}
|
||||
|
||||
void cmdG90(){
|
||||
relative=false;
|
||||
cmdM118("OK");
|
||||
}
|
||||
|
||||
void cmdG91(){
|
||||
relative=true;
|
||||
cmdM118("OK");
|
||||
}
|
||||
|
||||
void cmdT(int t){
|
||||
if(tool){
|
||||
penUp(tool, true);
|
||||
}
|
||||
if(t<=PENCOUNT){
|
||||
penUp(t, false);
|
||||
tool=t;
|
||||
}
|
||||
else{
|
||||
tool=0;
|
||||
}
|
||||
cmdM118("OK");
|
||||
}
|
||||
|
||||
void cmdM2(){
|
||||
Serial.println("PROGRAM END");
|
||||
}
|
||||
|
||||
void cmdM112(){
|
||||
selfReset();
|
||||
}
|
||||
|
||||
void cmdM114(){
|
||||
char s[50];
|
||||
sprintf(s, "X:%f Y:%f", posXmm, posYmm);
|
||||
Serial.println(s);
|
||||
}
|
||||
|
||||
void cmdM115(){
|
||||
char s[500];
|
||||
sprintf(s, "{\"software\":\"%s\", \"power\":%b, \"length\":%i, \"width\":%i", FIRMWARE, true, MAX_Y, MAX_X);
|
||||
Serial.println(s);
|
||||
}
|
||||
|
||||
#endif // COMMANDPARSERS_H_INCLUDED
|
77
PlottWareFirmware/config.h
Normal file
@ -0,0 +1,77 @@
|
||||
#ifndef CONFIG_H_INCLUDED
|
||||
#define CONFIG_H_INCLUDED
|
||||
|
||||
#include <String.h>
|
||||
|
||||
//firmware
|
||||
#define FIRMWARE "PlottWareFirmware v0.0.1"
|
||||
|
||||
//name of printer
|
||||
#define NAME "PlottWare Alpha Prototype"
|
||||
|
||||
//size of input buffer
|
||||
#define MAX_MESSAGE_SIZE 1024
|
||||
|
||||
//step per mm
|
||||
#define STEPX 50
|
||||
#define STEPY 50
|
||||
|
||||
//steps per revolution
|
||||
#define STEPX_REVOLUTION 200
|
||||
#define STEPY_REVOLUTION 200
|
||||
|
||||
#define STEPPERX_PIN1 8
|
||||
#define STEPPERX_PIN2 9
|
||||
#define STEPPERX_PIN3 10
|
||||
#define STEPPERX_PIN4 11
|
||||
|
||||
#define STEPPERY_PIN1 2
|
||||
#define STEPPERY_PIN2 3
|
||||
#define STEPPERY_PIN3 4
|
||||
#define STEPPERY_PIN4 5
|
||||
|
||||
#define STEPPERX_REVERSE false
|
||||
#define STEPPERY_REVERSE false
|
||||
|
||||
//steps to increment once
|
||||
#define STEP_INCREMENT 1
|
||||
|
||||
//delay in ms to wait for stepping
|
||||
#define STEP_DELAY 0
|
||||
|
||||
//cruise speeds
|
||||
#define SPEED_NORMAL 50
|
||||
#define SPEED_FAST 150
|
||||
|
||||
//in mm, if no limit, -1
|
||||
#define MAX_X 20
|
||||
#define MAX_Y -1
|
||||
|
||||
//pencount
|
||||
#define PENCOUNT 3
|
||||
|
||||
//pens
|
||||
String pens[PENCOUNT+1];
|
||||
void penSetup(){
|
||||
//pens[1]="Yellow";
|
||||
pens[1]="Pen1";
|
||||
pens[2]="Pen2";
|
||||
pens[3]="Pen3";
|
||||
}
|
||||
|
||||
//pin of pens
|
||||
int pen_pins[PENCOUNT+1];
|
||||
void penPinsSetup(){
|
||||
//pen_pins[1]=10;
|
||||
pen_pins[1]=6;
|
||||
pen_pins[2]=7;
|
||||
pen_pins[3]=12;
|
||||
}
|
||||
|
||||
//homing
|
||||
#define XHOME false
|
||||
#define XHOME_PIN 10
|
||||
#define YHOME false
|
||||
#define YHOME_PIN 0
|
||||
|
||||
#endif // CONFIG_H_INCLUDED
|
53
PlottWareFirmware/gcodeutils.h
Normal file
@ -0,0 +1,53 @@
|
||||
#ifndef GCODEUTILS_H_INCLUDED
|
||||
#define GCODEUTILS_H_INCLUDED
|
||||
|
||||
#include "Utils.h"
|
||||
#include "commandParsers.h"
|
||||
|
||||
void parseGcode(String code){
|
||||
code=removeComments(code);
|
||||
String cmd=getCommand(code);
|
||||
char scmd=code[0];
|
||||
|
||||
if(cmd=="G0"){
|
||||
cmdG0(getParameter(code, 'X'), getParameter(code, 'Y'));
|
||||
}
|
||||
else if(cmd=="G1"){
|
||||
cmdG0(getParameter(code, 'X'), getParameter(code, 'Y'));
|
||||
}
|
||||
else if(cmd=="G4"){
|
||||
cmdG4(getParameter(code, 'P'));
|
||||
}
|
||||
else if(cmd=="G28"){
|
||||
cmdG28();
|
||||
}
|
||||
else if(cmd=="G90"){
|
||||
cmdG90();
|
||||
}
|
||||
else if(cmd=="G91"){
|
||||
cmdG91();
|
||||
}
|
||||
else if(cmd=="T" || scmd=='T'){
|
||||
cmdT(getParameter(code, 'T'));
|
||||
}
|
||||
else if(cmd=="M2"){
|
||||
cmdM2();
|
||||
}
|
||||
else if(cmd=="M112"){
|
||||
cmdM112();
|
||||
}
|
||||
else if(cmd=="M114"){
|
||||
cmdM114();
|
||||
}
|
||||
else if(cmd=="M115"){
|
||||
cmdM115();
|
||||
}
|
||||
else if(cmd=="M118"){
|
||||
cmdM118(code.substring(code.indexOf("M118")+4));
|
||||
}
|
||||
else{
|
||||
cmdM118("Command not supported.");
|
||||
}
|
||||
}
|
||||
|
||||
#endif // GCODEUTILS_H_INCLUDED
|
16
PlottWareFirmware/globals.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef GLOBALS_H_INCLUDED
|
||||
#define GLOBALS_H_INCLUDED
|
||||
|
||||
//in steps
|
||||
unsigned long int posX=-1;
|
||||
unsigned long int posY=-1;
|
||||
unsigned long int posXmm=-1;
|
||||
unsigned long int posYmm=-1;
|
||||
|
||||
//currently selected tool
|
||||
int tool=0;
|
||||
|
||||
//positioning system
|
||||
bool relative=false;
|
||||
|
||||
#endif // GLOBALS_H_INCLUDED
|
17
PlottWareFirmware/motors.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef MOTORS_H_INCLUDED
|
||||
#define MOTORS_H_INCLUDED
|
||||
|
||||
#include <Stepper.h>
|
||||
|
||||
Stepper stepperX(STEPX_REVOLUTION, STEPPERX_PIN1, STEPPERX_PIN2, STEPPERX_PIN3, STEPPERX_PIN4);
|
||||
Stepper stepperY(STEPY_REVOLUTION, STEPPERY_PIN1, STEPPERY_PIN2, STEPPERY_PIN3, STEPPERY_PIN4);
|
||||
|
||||
//pen motors
|
||||
void motorSetup(){
|
||||
for(int i=1; i<=PENCOUNT; i++){
|
||||
pinMode(pen_pins[i], OUTPUT);
|
||||
digitalWrite(pen_pins[i], HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // MOTORS_H_INCLUDED
|
7
PlottWareFirmware/selfreset.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef SELFRESET_H_INCLUDED
|
||||
#define SELFRESET_H_INCLUDED
|
||||
|
||||
//self reset
|
||||
void(* selfReset) (void) = 0;
|
||||
|
||||
#endif // SELFRESET_H_INCLUDED
|
BIN
Presentation/IMG_0553.JPG
Normal file
After Width: | Height: | Size: 5.3 MiB |
BIN
Presentation/IMG_0554.JPG
Normal file
After Width: | Height: | Size: 4.5 MiB |
BIN
Presentation/IMG_0555.JPG
Normal file
After Width: | Height: | Size: 4.1 MiB |
BIN
Presentation/IMG_0556.JPG
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
Presentation/IMG_0557.JPG
Normal file
After Width: | Height: | Size: 2.6 MiB |
BIN
Presentation/IMG_0558.JPG
Normal file
After Width: | Height: | Size: 4.0 MiB |
BIN
Presentation/IMG_0559.JPG
Normal file
After Width: | Height: | Size: 4.9 MiB |
BIN
Presentation/IMG_0560.JPG
Normal file
After Width: | Height: | Size: 4.5 MiB |
BIN
Presentation/IMG_0561.JPG
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
Presentation/Presentation_hun.pptx
Normal file
BIN
Presentation/Presentation_hun_script.docx
Normal file
BIN
Presentation/forms.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
762
Presentation/test.gcode
Normal file
@ -0,0 +1,762 @@
|
||||
;Generated by: PlottWareControl
|
||||
;Project: C:\Users\setup\Documents\test.pwc
|
||||
;Program created by: Fandly Gergo (fandlygergo@gmail.hu, systemtest.tk)
|
||||
|
||||
|
||||
|
||||
G90 ;absolute positioning
|
||||
M17 ;enable steppers
|
||||
T1000 ;deselect all tools
|
||||
G28 ;home axises
|
||||
;printing contour #0
|
||||
T1
|
||||
G0 X49.100000 Y27.100000
|
||||
M300 S10
|
||||
G1 X49.000000 Y27.200000
|
||||
G1 X48.500000 Y27.200000
|
||||
G1 X48.400000 Y27.300000
|
||||
G1 X48.100000 Y27.300000
|
||||
G1 X48.000000 Y27.400000
|
||||
G1 X47.700000 Y27.400000
|
||||
G1 X47.600000 Y27.500000
|
||||
G1 X47.400000 Y27.500000
|
||||
G1 X47.300000 Y27.600000
|
||||
G1 X47.100000 Y27.600000
|
||||
G1 X47.000000 Y27.700000
|
||||
G1 X46.900000 Y27.700000
|
||||
G1 X46.800000 Y27.800000
|
||||
G1 X46.700000 Y27.800000
|
||||
G1 X46.600000 Y27.900000
|
||||
G1 X46.400000 Y27.900000
|
||||
G1 X46.300000 Y28.000000
|
||||
G1 X46.200000 Y28.000000
|
||||
G1 X46.000000 Y28.200000
|
||||
G1 X45.900000 Y28.200000
|
||||
G1 X45.700000 Y28.400000
|
||||
G1 X45.600000 Y28.400000
|
||||
G1 X45.300000 Y28.700000
|
||||
G1 X45.200000 Y28.700000
|
||||
G1 X44.200000 Y29.700000
|
||||
G1 X44.200000 Y29.800000
|
||||
G1 X43.900000 Y30.100000
|
||||
G1 X43.900000 Y30.200000
|
||||
G1 X43.700000 Y30.400000
|
||||
G1 X43.700000 Y30.500000
|
||||
G1 X43.600000 Y30.600000
|
||||
G1 X43.600000 Y30.700000
|
||||
G1 X43.500000 Y30.800000
|
||||
G1 X43.500000 Y30.900000
|
||||
G1 X43.400000 Y31.000000
|
||||
G1 X43.400000 Y31.100000
|
||||
G1 X43.300000 Y31.200000
|
||||
G1 X43.300000 Y31.300000
|
||||
G1 X43.200000 Y31.400000
|
||||
G1 X43.200000 Y31.500000
|
||||
G1 X43.100000 Y31.600000
|
||||
G1 X43.100000 Y31.800000
|
||||
G1 X43.000000 Y31.900000
|
||||
G1 X43.000000 Y32.100000
|
||||
G1 X42.900000 Y32.200000
|
||||
G1 X42.900000 Y32.500000
|
||||
G1 X42.800000 Y32.600000
|
||||
G1 X42.800000 Y32.900000
|
||||
G1 X42.700000 Y33.000000
|
||||
G1 X42.700000 Y33.600000
|
||||
G1 X42.600000 Y33.700000
|
||||
G1 X42.600000 Y34.700000
|
||||
G1 X42.700000 Y34.800000
|
||||
G1 X42.700000 Y35.300000
|
||||
G1 X42.800000 Y35.400000
|
||||
G1 X42.800000 Y35.700000
|
||||
G1 X42.900000 Y35.800000
|
||||
G1 X42.900000 Y36.100000
|
||||
G1 X43.000000 Y36.200000
|
||||
G1 X43.000000 Y36.400000
|
||||
G1 X43.100000 Y36.500000
|
||||
G1 X43.100000 Y36.700000
|
||||
G1 X43.200000 Y36.800000
|
||||
G1 X43.200000 Y36.900000
|
||||
G1 X43.300000 Y37.000000
|
||||
G1 X43.300000 Y37.100000
|
||||
G1 X43.400000 Y37.200000
|
||||
G1 X43.400000 Y37.400000
|
||||
G1 X43.500000 Y37.500000
|
||||
G1 X43.500000 Y37.600000
|
||||
G1 X43.700000 Y37.800000
|
||||
G1 X43.700000 Y37.900000
|
||||
G1 X43.700000 Y37.700000
|
||||
G1 X43.400000 Y37.400000
|
||||
G1 X43.400000 Y37.200000
|
||||
G1 X43.300000 Y37.100000
|
||||
G1 X43.300000 Y37.000000
|
||||
G1 X43.200000 Y36.900000
|
||||
G1 X43.200000 Y36.800000
|
||||
G1 X43.100000 Y36.700000
|
||||
G1 X43.100000 Y36.500000
|
||||
G1 X43.000000 Y36.400000
|
||||
G1 X43.000000 Y36.200000
|
||||
G1 X42.900000 Y36.100000
|
||||
G1 X42.900000 Y35.800000
|
||||
G1 X42.800000 Y35.700000
|
||||
G1 X42.800000 Y35.400000
|
||||
G1 X42.700000 Y35.300000
|
||||
G1 X42.700000 Y34.800000
|
||||
G1 X42.600000 Y34.700000
|
||||
G1 X42.600000 Y33.700000
|
||||
G1 X42.700000 Y33.600000
|
||||
G1 X42.700000 Y33.000000
|
||||
G1 X42.800000 Y32.900000
|
||||
G1 X42.800000 Y32.600000
|
||||
G1 X42.900000 Y32.500000
|
||||
G1 X42.900000 Y32.200000
|
||||
G1 X43.000000 Y32.100000
|
||||
G1 X43.000000 Y31.900000
|
||||
G1 X43.100000 Y31.800000
|
||||
G1 X43.100000 Y31.600000
|
||||
G1 X43.200000 Y31.500000
|
||||
G1 X43.200000 Y31.400000
|
||||
G1 X43.300000 Y31.300000
|
||||
G1 X43.300000 Y31.200000
|
||||
G1 X43.400000 Y31.100000
|
||||
G1 X43.400000 Y31.000000
|
||||
G1 X43.500000 Y30.900000
|
||||
G1 X43.500000 Y30.800000
|
||||
G1 X43.600000 Y30.700000
|
||||
G1 X43.600000 Y30.600000
|
||||
G1 X43.800000 Y30.400000
|
||||
G1 X43.800000 Y30.300000
|
||||
G1 X44.100000 Y30.000000
|
||||
G1 X44.100000 Y29.900000
|
||||
G1 X45.400000 Y28.600000
|
||||
G1 X45.500000 Y28.600000
|
||||
G1 X45.800000 Y28.300000
|
||||
G1 X45.900000 Y28.300000
|
||||
G1 X46.100000 Y28.100000
|
||||
G1 X46.200000 Y28.100000
|
||||
G1 X46.400000 Y27.900000
|
||||
G1 X46.600000 Y27.900000
|
||||
G1 X46.700000 Y27.800000
|
||||
G1 X46.800000 Y27.800000
|
||||
G1 X46.900000 Y27.700000
|
||||
G1 X47.000000 Y27.700000
|
||||
G1 X47.100000 Y27.600000
|
||||
G1 X47.300000 Y27.600000
|
||||
G1 X47.400000 Y27.500000
|
||||
G1 X47.600000 Y27.500000
|
||||
G1 X47.700000 Y27.400000
|
||||
G1 X48.000000 Y27.400000
|
||||
G1 X48.100000 Y27.300000
|
||||
G1 X48.400000 Y27.300000
|
||||
G1 X48.500000 Y27.200000
|
||||
G1 X49.000000 Y27.200000
|
||||
G1 X49.100000 Y27.100000
|
||||
G1 X50.200000 Y27.100000
|
||||
G1 X50.300000 Y27.200000
|
||||
G1 X50.800000 Y27.200000
|
||||
G1 X50.900000 Y27.300000
|
||||
G1 X51.200000 Y27.300000
|
||||
G1 X51.300000 Y27.400000
|
||||
G1 X51.600000 Y27.400000
|
||||
G1 X51.700000 Y27.500000
|
||||
G1 X51.900000 Y27.500000
|
||||
G1 X52.000000 Y27.600000
|
||||
G1 X52.200000 Y27.600000
|
||||
G1 X52.300000 Y27.700000
|
||||
G1 X52.400000 Y27.700000
|
||||
G1 X52.500000 Y27.800000
|
||||
G1 X52.600000 Y27.800000
|
||||
G1 X52.700000 Y27.900000
|
||||
G1 X52.900000 Y27.900000
|
||||
G1 X53.100000 Y28.100000
|
||||
G1 X53.200000 Y28.100000
|
||||
G1 X53.400000 Y28.300000
|
||||
G1 X53.500000 Y28.300000
|
||||
G1 X53.700000 Y28.500000
|
||||
G1 X53.800000 Y28.500000
|
||||
G1 X55.300000 Y30.000000
|
||||
G1 X55.300000 Y30.100000
|
||||
G1 X55.500000 Y30.300000
|
||||
G1 X55.500000 Y30.400000
|
||||
G1 X55.700000 Y30.600000
|
||||
G1 X55.700000 Y30.700000
|
||||
G1 X55.800000 Y30.800000
|
||||
G1 X55.800000 Y30.900000
|
||||
G1 X55.900000 Y31.000000
|
||||
G1 X55.900000 Y31.100000
|
||||
G1 X56.000000 Y31.200000
|
||||
G1 X56.000000 Y31.300000
|
||||
G1 X56.100000 Y31.400000
|
||||
G1 X56.100000 Y31.500000
|
||||
G1 X56.200000 Y31.600000
|
||||
G1 X56.200000 Y31.800000
|
||||
G1 X56.300000 Y31.900000
|
||||
G1 X56.300000 Y32.100000
|
||||
G1 X56.400000 Y32.200000
|
||||
G1 X56.400000 Y32.500000
|
||||
G1 X56.500000 Y32.600000
|
||||
G1 X56.500000 Y33.100000
|
||||
G1 X56.600000 Y33.200000
|
||||
G1 X56.600000 Y35.100000
|
||||
G1 X56.500000 Y35.200000
|
||||
G1 X56.500000 Y35.700000
|
||||
G1 X56.400000 Y35.800000
|
||||
G1 X56.400000 Y36.100000
|
||||
G1 X56.300000 Y36.200000
|
||||
G1 X56.300000 Y36.400000
|
||||
G1 X56.200000 Y36.500000
|
||||
G1 X56.200000 Y36.700000
|
||||
G1 X56.100000 Y36.800000
|
||||
G1 X56.100000 Y36.900000
|
||||
G1 X56.000000 Y37.000000
|
||||
G1 X56.000000 Y37.100000
|
||||
G1 X55.900000 Y37.200000
|
||||
G1 X55.900000 Y37.400000
|
||||
G1 X55.600000 Y37.700000
|
||||
G1 X55.600000 Y37.900000
|
||||
G1 X55.600000 Y37.800000
|
||||
G1 X55.800000 Y37.600000
|
||||
G1 X55.800000 Y37.500000
|
||||
G1 X55.900000 Y37.400000
|
||||
G1 X55.900000 Y37.200000
|
||||
G1 X56.000000 Y37.100000
|
||||
G1 X56.000000 Y37.000000
|
||||
G1 X56.100000 Y36.900000
|
||||
G1 X56.100000 Y36.800000
|
||||
G1 X56.200000 Y36.700000
|
||||
G1 X56.200000 Y36.500000
|
||||
G1 X56.300000 Y36.400000
|
||||
G1 X56.300000 Y36.200000
|
||||
G1 X56.400000 Y36.100000
|
||||
G1 X56.400000 Y35.800000
|
||||
G1 X56.500000 Y35.700000
|
||||
G1 X56.500000 Y35.200000
|
||||
G1 X56.600000 Y35.100000
|
||||
G1 X56.600000 Y33.200000
|
||||
G1 X56.500000 Y33.100000
|
||||
G1 X56.500000 Y32.600000
|
||||
G1 X56.400000 Y32.500000
|
||||
G1 X56.400000 Y32.200000
|
||||
G1 X56.300000 Y32.100000
|
||||
G1 X56.300000 Y31.900000
|
||||
G1 X56.200000 Y31.800000
|
||||
G1 X56.200000 Y31.600000
|
||||
G1 X56.100000 Y31.500000
|
||||
G1 X56.100000 Y31.400000
|
||||
G1 X56.000000 Y31.300000
|
||||
G1 X56.000000 Y31.200000
|
||||
G1 X55.900000 Y31.100000
|
||||
G1 X55.900000 Y31.000000
|
||||
G1 X55.800000 Y30.900000
|
||||
G1 X55.800000 Y30.700000
|
||||
G1 X55.600000 Y30.500000
|
||||
G1 X55.600000 Y30.400000
|
||||
G1 X55.400000 Y30.200000
|
||||
G1 X55.400000 Y30.100000
|
||||
G1 X55.200000 Y29.900000
|
||||
G1 X55.200000 Y29.800000
|
||||
G1 X54.000000 Y28.600000
|
||||
G1 X53.900000 Y28.600000
|
||||
G1 X53.700000 Y28.400000
|
||||
G1 X53.600000 Y28.400000
|
||||
G1 X53.400000 Y28.200000
|
||||
G1 X53.300000 Y28.200000
|
||||
G1 X53.100000 Y28.000000
|
||||
G1 X53.000000 Y28.000000
|
||||
G1 X52.900000 Y27.900000
|
||||
G1 X52.700000 Y27.900000
|
||||
G1 X52.600000 Y27.800000
|
||||
G1 X52.500000 Y27.800000
|
||||
G1 X52.400000 Y27.700000
|
||||
G1 X52.300000 Y27.700000
|
||||
G1 X52.200000 Y27.600000
|
||||
G1 X52.000000 Y27.600000
|
||||
G1 X51.900000 Y27.500000
|
||||
G1 X51.700000 Y27.500000
|
||||
G1 X51.600000 Y27.400000
|
||||
G1 X51.300000 Y27.400000
|
||||
G1 X51.200000 Y27.300000
|
||||
G1 X50.900000 Y27.300000
|
||||
G1 X50.800000 Y27.200000
|
||||
G1 X50.300000 Y27.200000
|
||||
G1 X50.200000 Y27.100000
|
||||
M300 S50
|
||||
;printing contour #1
|
||||
T1
|
||||
G0 X3.600000 Y9.400000
|
||||
M300 S10
|
||||
G1 X22.400000 Y9.400000
|
||||
G1 X22.600000 Y9.600000
|
||||
G1 X22.600000 Y30.100000
|
||||
G1 X22.500000 Y30.200000
|
||||
G1 X3.500000 Y30.200000
|
||||
G1 X3.300000 Y30.000000
|
||||
G1 X3.300000 Y9.700000
|
||||
M300 S50
|
||||
;printing contour #2
|
||||
T1
|
||||
G0 X3.600000 Y9.400000
|
||||
M300 S10
|
||||
G1 X3.500000 Y9.500000
|
||||
G1 X3.400000 Y9.500000
|
||||
G1 X3.400000 Y9.600000
|
||||
G1 X3.300000 Y9.700000
|
||||
G1 X3.300000 Y30.000000
|
||||
G1 X3.400000 Y30.100000
|
||||
G1 X3.400000 Y30.200000
|
||||
G1 X22.600000 Y30.200000
|
||||
G1 X22.600000 Y9.500000
|
||||
G1 X22.500000 Y9.500000
|
||||
G1 X22.400000 Y9.400000
|
||||
M300 S50
|
||||
;printing contour #3
|
||||
T1
|
||||
G0 X49.100000 Y2.400000
|
||||
M300 S10
|
||||
G1 X49.300000 Y2.400000
|
||||
G1 X49.600000 Y2.700000
|
||||
G1 X49.600000 Y2.800000
|
||||
G1 X49.800000 Y3.000000
|
||||
G1 X49.800000 Y3.100000
|
||||
G1 X50.100000 Y3.400000
|
||||
G1 X50.100000 Y3.500000
|
||||
G1 X50.300000 Y3.700000
|
||||
G1 X50.300000 Y3.800000
|
||||
G1 X50.500000 Y4.000000
|
||||
G1 X50.500000 Y4.100000
|
||||
G1 X50.800000 Y4.400000
|
||||
G1 X50.800000 Y4.500000
|
||||
G1 X51.000000 Y4.700000
|
||||
G1 X51.000000 Y4.800000
|
||||
G1 X51.200000 Y5.000000
|
||||
G1 X51.200000 Y5.100000
|
||||
G1 X51.500000 Y5.400000
|
||||
G1 X51.500000 Y5.500000
|
||||
G1 X51.700000 Y5.700000
|
||||
G1 X51.700000 Y5.800000
|
||||
G1 X52.000000 Y6.100000
|
||||
G1 X52.000000 Y6.200000
|
||||
G1 X52.200000 Y6.400000
|
||||
G1 X52.200000 Y6.500000
|
||||
G1 X52.400000 Y6.700000
|
||||
G1 X52.400000 Y6.800000
|
||||
G1 X52.700000 Y7.100000
|
||||
G1 X52.700000 Y7.200000
|
||||
G1 X52.900000 Y7.400000
|
||||
G1 X52.900000 Y7.500000
|
||||
G1 X53.100000 Y7.700000
|
||||
G1 X53.100000 Y7.800000
|
||||
G1 X53.400000 Y8.100000
|
||||
G1 X53.400000 Y8.200000
|
||||
G1 X53.600000 Y8.400000
|
||||
G1 X53.600000 Y8.500000
|
||||
G1 X53.900000 Y8.800000
|
||||
G1 X53.900000 Y8.900000
|
||||
G1 X54.100000 Y9.100000
|
||||
G1 X54.100000 Y9.200000
|
||||
G1 X54.300000 Y9.400000
|
||||
G1 X54.300000 Y9.500000
|
||||
G1 X54.600000 Y9.800000
|
||||
G1 X54.600000 Y9.900000
|
||||
G1 X54.800000 Y10.100000
|
||||
G1 X54.800000 Y10.200000
|
||||
G1 X55.000000 Y10.400000
|
||||
G1 X55.000000 Y10.500000
|
||||
G1 X55.300000 Y10.800000
|
||||
G1 X55.300000 Y10.900000
|
||||
G1 X55.500000 Y11.100000
|
||||
G1 X55.500000 Y11.200000
|
||||
G1 X55.800000 Y11.500000
|
||||
G1 X55.800000 Y11.600000
|
||||
G1 X56.000000 Y11.800000
|
||||
G1 X56.000000 Y11.900000
|
||||
G1 X56.200000 Y12.100000
|
||||
G1 X56.200000 Y12.200000
|
||||
G1 X56.500000 Y12.500000
|
||||
G1 X56.500000 Y12.600000
|
||||
G1 X56.700000 Y12.800000
|
||||
G1 X56.700000 Y12.900000
|
||||
G1 X56.900000 Y13.100000
|
||||
G1 X56.900000 Y13.200000
|
||||
G1 X57.200000 Y13.500000
|
||||
G1 X57.200000 Y13.600000
|
||||
G1 X57.400000 Y13.800000
|
||||
G1 X57.400000 Y13.900000
|
||||
G1 X57.700000 Y14.200000
|
||||
G1 X57.700000 Y14.300000
|
||||
G1 X57.900000 Y14.500000
|
||||
G1 X57.900000 Y14.600000
|
||||
G1 X58.100000 Y14.800000
|
||||
G1 X58.100000 Y14.900000
|
||||
G1 X58.400000 Y15.200000
|
||||
G1 X58.400000 Y15.300000
|
||||
G1 X58.600000 Y15.500000
|
||||
G1 X58.600000 Y15.600000
|
||||
G1 X58.800000 Y15.800000
|
||||
G1 X58.800000 Y15.900000
|
||||
G1 X59.100000 Y16.200000
|
||||
G1 X59.100000 Y16.300000
|
||||
G1 X59.300000 Y16.500000
|
||||
G1 X59.300000 Y16.600000
|
||||
G1 X59.600000 Y16.900000
|
||||
G1 X59.600000 Y17.000000
|
||||
G1 X59.800000 Y17.200000
|
||||
G1 X59.800000 Y17.300000
|
||||
G1 X60.000000 Y17.500000
|
||||
G1 X60.000000 Y17.600000
|
||||
G1 X60.300000 Y17.900000
|
||||
G1 X60.300000 Y18.000000
|
||||
G1 X60.500000 Y18.200000
|
||||
G1 X60.500000 Y18.300000
|
||||
G1 X60.700000 Y18.500000
|
||||
G1 X60.700000 Y18.600000
|
||||
G1 X61.000000 Y18.900000
|
||||
G1 X61.000000 Y19.000000
|
||||
G1 X61.200000 Y19.200000
|
||||
G1 X61.200000 Y19.300000
|
||||
G1 X61.500000 Y19.600000
|
||||
G1 X61.500000 Y19.700000
|
||||
G1 X61.700000 Y19.900000
|
||||
G1 X61.700000 Y20.000000
|
||||
G1 X61.900000 Y20.200000
|
||||
G1 X61.900000 Y20.300000
|
||||
G1 X62.000000 Y20.400000
|
||||
G1 X62.000000 Y20.600000
|
||||
G1 X61.900000 Y20.700000
|
||||
G1 X36.400000 Y20.700000
|
||||
G1 X36.300000 Y20.600000
|
||||
G1 X36.300000 Y20.400000
|
||||
G1 X36.400000 Y20.300000
|
||||
G1 X36.400000 Y20.200000
|
||||
G1 X36.600000 Y20.000000
|
||||
G1 X36.600000 Y19.900000
|
||||
G1 X36.900000 Y19.600000
|
||||
G1 X36.900000 Y19.500000
|
||||
G1 X37.100000 Y19.300000
|
||||
G1 X37.100000 Y19.200000
|
||||
G1 X37.400000 Y18.900000
|
||||
G1 X37.400000 Y18.800000
|
||||
G1 X37.600000 Y18.600000
|
||||
G1 X37.600000 Y18.500000
|
||||
G1 X37.900000 Y18.200000
|
||||
G1 X37.900000 Y18.100000
|
||||
G1 X38.100000 Y17.900000
|
||||
G1 X38.100000 Y17.800000
|
||||
G1 X38.300000 Y17.600000
|
||||
G1 X38.300000 Y17.500000
|
||||
G1 X38.600000 Y17.200000
|
||||
G1 X38.600000 Y17.100000
|
||||
G1 X38.800000 Y16.900000
|
||||
G1 X38.800000 Y16.800000
|
||||
G1 X39.100000 Y16.500000
|
||||
G1 X39.100000 Y16.400000
|
||||
G1 X39.300000 Y16.200000
|
||||
G1 X39.300000 Y16.100000
|
||||
G1 X39.600000 Y15.800000
|
||||
G1 X39.600000 Y15.700000
|
||||
G1 X39.800000 Y15.500000
|
||||
G1 X39.800000 Y15.400000
|
||||
G1 X40.100000 Y15.100000
|
||||
G1 X40.100000 Y15.000000
|
||||
G1 X40.300000 Y14.800000
|
||||
G1 X40.300000 Y14.700000
|
||||
G1 X40.500000 Y14.500000
|
||||
G1 X40.500000 Y14.400000
|
||||
G1 X40.800000 Y14.100000
|
||||
G1 X40.800000 Y14.000000
|
||||
G1 X41.000000 Y13.800000
|
||||
G1 X41.000000 Y13.700000
|
||||
G1 X41.300000 Y13.400000
|
||||
G1 X41.300000 Y13.300000
|
||||
G1 X41.500000 Y13.100000
|
||||
G1 X41.500000 Y13.000000
|
||||
G1 X41.800000 Y12.700000
|
||||
G1 X41.800000 Y12.600000
|
||||
G1 X42.000000 Y12.400000
|
||||
G1 X42.000000 Y12.300000
|
||||
G1 X42.200000 Y12.100000
|
||||
G1 X42.200000 Y12.000000
|
||||
G1 X42.500000 Y11.700000
|
||||
G1 X42.500000 Y11.600000
|
||||
G1 X42.700000 Y11.400000
|
||||
G1 X42.700000 Y11.300000
|
||||
G1 X43.000000 Y11.000000
|
||||
G1 X43.000000 Y10.900000
|
||||
G1 X43.200000 Y10.700000
|
||||
G1 X43.200000 Y10.600000
|
||||
G1 X43.500000 Y10.300000
|
||||
G1 X43.500000 Y10.200000
|
||||
G1 X43.700000 Y10.000000
|
||||
G1 X43.700000 Y9.900000
|
||||
G1 X44.000000 Y9.600000
|
||||
G1 X44.000000 Y9.500000
|
||||
G1 X44.200000 Y9.300000
|
||||
G1 X44.200000 Y9.200000
|
||||
G1 X44.400000 Y9.000000
|
||||
G1 X44.400000 Y8.900000
|
||||
G1 X44.700000 Y8.600000
|
||||
G1 X44.700000 Y8.500000
|
||||
G1 X44.900000 Y8.300000
|
||||
G1 X44.900000 Y8.200000
|
||||
G1 X45.200000 Y7.900000
|
||||
G1 X45.200000 Y7.800000
|
||||
G1 X45.400000 Y7.600000
|
||||
G1 X45.400000 Y7.500000
|
||||
G1 X45.700000 Y7.200000
|
||||
G1 X45.700000 Y7.100000
|
||||
G1 X45.900000 Y6.900000
|
||||
G1 X45.900000 Y6.800000
|
||||
G1 X46.200000 Y6.500000
|
||||
G1 X46.200000 Y6.400000
|
||||
G1 X46.400000 Y6.200000
|
||||
G1 X46.400000 Y6.100000
|
||||
G1 X46.600000 Y5.900000
|
||||
G1 X46.600000 Y5.800000
|
||||
G1 X46.900000 Y5.500000
|
||||
G1 X46.900000 Y5.400000
|
||||
G1 X47.100000 Y5.200000
|
||||
G1 X47.100000 Y5.100000
|
||||
G1 X47.400000 Y4.800000
|
||||
G1 X47.400000 Y4.700000
|
||||
G1 X47.600000 Y4.500000
|
||||
G1 X47.600000 Y4.400000
|
||||
G1 X47.900000 Y4.100000
|
||||
G1 X47.900000 Y4.000000
|
||||
G1 X48.100000 Y3.800000
|
||||
G1 X48.100000 Y3.700000
|
||||
G1 X48.400000 Y3.400000
|
||||
G1 X48.400000 Y3.300000
|
||||
G1 X48.600000 Y3.100000
|
||||
G1 X48.600000 Y3.000000
|
||||
G1 X48.800000 Y2.800000
|
||||
G1 X48.800000 Y2.700000
|
||||
M300 S50
|
||||
;printing contour #4
|
||||
T1
|
||||
G0 X49.000000 Y2.400000
|
||||
M300 S10
|
||||
G1 X48.900000 Y2.500000
|
||||
G1 X48.900000 Y2.600000
|
||||
G1 X48.700000 Y2.800000
|
||||
G1 X48.700000 Y2.900000
|
||||
G1 X48.500000 Y3.100000
|
||||
G1 X48.500000 Y3.200000
|
||||
G1 X48.200000 Y3.500000
|
||||
G1 X48.200000 Y3.600000
|
||||
G1 X48.000000 Y3.800000
|
||||
G1 X48.000000 Y3.900000
|
||||
G1 X47.700000 Y4.200000
|
||||
G1 X47.700000 Y4.300000
|
||||
G1 X47.500000 Y4.500000
|
||||
G1 X47.500000 Y4.600000
|
||||
G1 X47.200000 Y4.900000
|
||||
G1 X47.200000 Y5.000000
|
||||
G1 X47.000000 Y5.200000
|
||||
G1 X47.000000 Y5.300000
|
||||
G1 X46.700000 Y5.600000
|
||||
G1 X46.700000 Y5.700000
|
||||
G1 X46.500000 Y5.900000
|
||||
G1 X46.500000 Y6.000000
|
||||
G1 X46.300000 Y6.200000
|
||||
G1 X46.300000 Y6.300000
|
||||
G1 X46.000000 Y6.600000
|
||||
G1 X46.000000 Y6.700000
|
||||
G1 X45.800000 Y6.900000
|
||||
G1 X45.800000 Y7.000000
|
||||
G1 X45.500000 Y7.300000
|
||||
G1 X45.500000 Y7.400000
|
||||
G1 X45.300000 Y7.600000
|
||||
G1 X45.300000 Y7.700000
|
||||
G1 X45.000000 Y8.000000
|
||||
G1 X45.000000 Y8.100000
|
||||
G1 X44.800000 Y8.300000
|
||||
G1 X44.800000 Y8.400000
|
||||
G1 X44.500000 Y8.700000
|
||||
G1 X44.500000 Y8.800000
|
||||
G1 X44.300000 Y9.000000
|
||||
G1 X44.300000 Y9.100000
|
||||
G1 X44.100000 Y9.300000
|
||||
G1 X44.100000 Y9.400000
|
||||
G1 X43.800000 Y9.700000
|
||||
G1 X43.800000 Y9.800000
|
||||
G1 X43.600000 Y10.000000
|
||||
G1 X43.600000 Y10.100000
|
||||
G1 X43.300000 Y10.400000
|
||||
G1 X43.300000 Y10.500000
|
||||
G1 X43.100000 Y10.700000
|
||||
G1 X43.100000 Y10.800000
|
||||
G1 X42.800000 Y11.100000
|
||||
G1 X42.800000 Y11.200000
|
||||
G1 X42.600000 Y11.400000
|
||||
G1 X42.600000 Y11.500000
|
||||
G1 X42.300000 Y11.800000
|
||||
G1 X42.300000 Y11.900000
|
||||
G1 X42.100000 Y12.100000
|
||||
G1 X42.100000 Y12.200000
|
||||
G1 X41.900000 Y12.400000
|
||||
G1 X41.900000 Y12.500000
|
||||
G1 X41.600000 Y12.800000
|
||||
G1 X41.600000 Y12.900000
|
||||
G1 X41.400000 Y13.100000
|
||||
G1 X41.400000 Y13.200000
|
||||
G1 X41.100000 Y13.500000
|
||||
G1 X41.100000 Y13.600000
|
||||
G1 X40.900000 Y13.800000
|
||||
G1 X40.900000 Y13.900000
|
||||
G1 X40.600000 Y14.200000
|
||||
G1 X40.600000 Y14.300000
|
||||
G1 X40.400000 Y14.500000
|
||||
G1 X40.400000 Y14.600000
|
||||
G1 X40.200000 Y14.800000
|
||||
G1 X40.200000 Y14.900000
|
||||
G1 X39.900000 Y15.200000
|
||||
G1 X39.900000 Y15.300000
|
||||
G1 X39.700000 Y15.500000
|
||||
G1 X39.700000 Y15.600000
|
||||
G1 X39.400000 Y15.900000
|
||||
G1 X39.400000 Y16.000000
|
||||
G1 X39.200000 Y16.200000
|
||||
G1 X39.200000 Y16.300000
|
||||
G1 X38.900000 Y16.600000
|
||||
G1 X38.900000 Y16.700000
|
||||
G1 X38.700000 Y16.900000
|
||||
G1 X38.700000 Y17.000000
|
||||
G1 X38.400000 Y17.300000
|
||||
G1 X38.400000 Y17.400000
|
||||
G1 X38.200000 Y17.600000
|
||||
G1 X38.200000 Y17.700000
|
||||
G1 X38.000000 Y17.900000
|
||||
G1 X38.000000 Y18.000000
|
||||
G1 X37.700000 Y18.300000
|
||||
G1 X37.700000 Y18.400000
|
||||
G1 X37.500000 Y18.600000
|
||||
G1 X37.500000 Y18.700000
|
||||
G1 X37.200000 Y19.000000
|
||||
G1 X37.200000 Y19.100000
|
||||
G1 X37.000000 Y19.300000
|
||||
G1 X37.000000 Y19.400000
|
||||
G1 X36.700000 Y19.700000
|
||||
G1 X36.700000 Y19.800000
|
||||
G1 X36.500000 Y20.000000
|
||||
G1 X36.500000 Y20.100000
|
||||
G1 X36.300000 Y20.300000
|
||||
G1 X36.300000 Y20.700000
|
||||
G1 X62.000000 Y20.700000
|
||||
G1 X62.000000 Y20.300000
|
||||
G1 X61.800000 Y20.100000
|
||||
G1 X61.800000 Y20.000000
|
||||
G1 X61.600000 Y19.800000
|
||||
G1 X61.600000 Y19.700000
|
||||
G1 X61.400000 Y19.500000
|
||||
G1 X61.400000 Y19.400000
|
||||
G1 X61.100000 Y19.100000
|
||||
G1 X61.100000 Y19.000000
|
||||
G1 X60.900000 Y18.800000
|
||||
G1 X60.900000 Y18.700000
|
||||
G1 X60.600000 Y18.400000
|
||||
G1 X60.600000 Y18.300000
|
||||
G1 X60.400000 Y18.100000
|
||||
G1 X60.400000 Y18.000000
|
||||
G1 X60.200000 Y17.800000
|
||||
G1 X60.200000 Y17.700000
|
||||
G1 X59.900000 Y17.400000
|
||||
G1 X59.900000 Y17.300000
|
||||
G1 X59.700000 Y17.100000
|
||||
G1 X59.700000 Y17.000000
|
||||
G1 X59.500000 Y16.800000
|
||||
G1 X59.500000 Y16.700000
|
||||
G1 X59.200000 Y16.400000
|
||||
G1 X59.200000 Y16.300000
|
||||
G1 X59.000000 Y16.100000
|
||||
G1 X59.000000 Y16.000000
|
||||
G1 X58.700000 Y15.700000
|
||||
G1 X58.700000 Y15.600000
|
||||
G1 X58.500000 Y15.400000
|
||||
G1 X58.500000 Y15.300000
|
||||
G1 X58.300000 Y15.100000
|
||||
G1 X58.300000 Y15.000000
|
||||
G1 X58.000000 Y14.700000
|
||||
G1 X58.000000 Y14.600000
|
||||
G1 X57.800000 Y14.400000
|
||||
G1 X57.800000 Y14.300000
|
||||
G1 X57.600000 Y14.100000
|
||||
G1 X57.600000 Y14.000000
|
||||
G1 X57.300000 Y13.700000
|
||||
G1 X57.300000 Y13.600000
|
||||
G1 X57.100000 Y13.400000
|
||||
G1 X57.100000 Y13.300000
|
||||
G1 X56.800000 Y13.000000
|
||||
G1 X56.800000 Y12.900000
|
||||
G1 X56.600000 Y12.700000
|
||||
G1 X56.600000 Y12.600000
|
||||
G1 X56.400000 Y12.400000
|
||||
G1 X56.400000 Y12.300000
|
||||
G1 X56.100000 Y12.000000
|
||||
G1 X56.100000 Y11.900000
|
||||
G1 X55.900000 Y11.700000
|
||||
G1 X55.900000 Y11.600000
|
||||
G1 X55.700000 Y11.400000
|
||||
G1 X55.700000 Y11.300000
|
||||
G1 X55.400000 Y11.000000
|
||||
G1 X55.400000 Y10.900000
|
||||
G1 X55.200000 Y10.700000
|
||||
G1 X55.200000 Y10.600000
|
||||
G1 X54.900000 Y10.300000
|
||||
G1 X54.900000 Y10.200000
|
||||
G1 X54.700000 Y10.000000
|
||||
G1 X54.700000 Y9.900000
|
||||
G1 X54.500000 Y9.700000
|
||||
G1 X54.500000 Y9.600000
|
||||
G1 X54.200000 Y9.300000
|
||||
G1 X54.200000 Y9.200000
|
||||
G1 X54.000000 Y9.000000
|
||||
G1 X54.000000 Y8.900000
|
||||
G1 X53.800000 Y8.700000
|
||||
G1 X53.800000 Y8.600000
|
||||
G1 X53.500000 Y8.300000
|
||||
G1 X53.500000 Y8.200000
|
||||
G1 X53.300000 Y8.000000
|
||||
G1 X53.300000 Y7.900000
|
||||
G1 X53.000000 Y7.600000
|
||||
G1 X53.000000 Y7.500000
|
||||
G1 X52.800000 Y7.300000
|
||||
G1 X52.800000 Y7.200000
|
||||
G1 X52.600000 Y7.000000
|
||||
G1 X52.600000 Y6.900000
|
||||
G1 X52.300000 Y6.600000
|
||||
G1 X52.300000 Y6.500000
|
||||
G1 X52.100000 Y6.300000
|
||||
G1 X52.100000 Y6.200000
|
||||
G1 X51.900000 Y6.000000
|
||||
G1 X51.900000 Y5.900000
|
||||
G1 X51.600000 Y5.600000
|
||||
G1 X51.600000 Y5.500000
|
||||
G1 X51.400000 Y5.300000
|
||||
G1 X51.400000 Y5.200000
|
||||
G1 X51.100000 Y4.900000
|
||||
G1 X51.100000 Y4.800000
|
||||
G1 X50.900000 Y4.600000
|
||||
G1 X50.900000 Y4.500000
|
||||
G1 X50.700000 Y4.300000
|
||||
G1 X50.700000 Y4.200000
|
||||
G1 X50.400000 Y3.900000
|
||||
G1 X50.400000 Y3.800000
|
||||
G1 X50.200000 Y3.600000
|
||||
G1 X50.200000 Y3.500000
|
||||
G1 X50.000000 Y3.300000
|
||||
G1 X50.000000 Y3.200000
|
||||
G1 X49.700000 Y2.900000
|
||||
G1 X49.700000 Y2.800000
|
||||
G1 X49.500000 Y2.600000
|
||||
G1 X49.500000 Y2.500000
|
||||
G1 X49.400000 Y2.400000
|
||||
M300 S50
|
||||
T1000 ;deselect tool
|
||||
M18 ;disable steppers
|
||||
M2 ;program end
|
||||
|
||||
|
||||
|
||||
;Line count: 762
|
||||
;Max X: 62.000000
|
||||
;Max Y: 37.900000
|
||||
;ENJOY!
|