class Appl: numArg function added; ebusd_send: get, set, cyc commands implemented.
This commit is contained in:
+14
-5
@@ -26,7 +26,12 @@ Appl& A = Appl::Instance();
|
|||||||
|
|
||||||
void define_args()
|
void define_args()
|
||||||
{
|
{
|
||||||
A.addArgs("type value", 2);
|
A.addArgs("Arg1 Arg2 Arg3 (Arg4)\n\n"
|
||||||
|
"Arg1-4:\n"
|
||||||
|
" get class cmd (sub)\n"
|
||||||
|
" set class cmd value\n"
|
||||||
|
" cyc class cmd (sub)\n"
|
||||||
|
" hex type value (value: ZZ PB SB NN Dx)", 3);
|
||||||
|
|
||||||
A.addItem("p_server", Appl::Param("localhost"), "s", "server",
|
A.addItem("p_server", Appl::Param("localhost"), "s", "server",
|
||||||
"name or ip (localhost)",
|
"name or ip (localhost)",
|
||||||
@@ -58,14 +63,18 @@ int main(int argc, char* argv[])
|
|||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// build message
|
||||||
|
std::string message(A.getArg(0));
|
||||||
|
for (size_t i = 1; i < A.numArg(); i++) {
|
||||||
|
message += " ";
|
||||||
|
message += A.getArg(i);
|
||||||
|
}
|
||||||
|
|
||||||
TCPClient* client = new TCPClient();
|
TCPClient* client = new TCPClient();
|
||||||
TCPSocket* socket = client->connect(A.getParam<const char*>("p_server"), A.getParam<int>("p_port"));
|
TCPSocket* socket = client->connect(A.getParam<const char*>("p_server"), A.getParam<int>("p_port"));
|
||||||
|
|
||||||
if (socket != NULL) {
|
if (socket != NULL) {
|
||||||
std::string message("hex ");
|
|
||||||
message += A.getArg(1);
|
|
||||||
message += " ";
|
|
||||||
message += A.getArg(2);
|
|
||||||
|
|
||||||
socket->send(message.c_str(), message.size());
|
socket->send(message.c_str(), message.size());
|
||||||
|
|
||||||
|
|||||||
+9
-2
@@ -121,9 +121,16 @@ bool Appl::parseArgs(int argc, char* argv[])
|
|||||||
|
|
||||||
// check args
|
// check args
|
||||||
if (m_argNum > 0) {
|
if (m_argNum > 0) {
|
||||||
for (int i = 0; i <= m_argNum; i++)
|
if (m_argc < (m_argNum + 1))
|
||||||
if (m_argv[m_argc - 1 - i].rfind("-", 0) != std::string::npos)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
for (int i = 1; i < m_argc; i++) {
|
||||||
|
if (m_argv[i].rfind("-", 0) != std::string::npos) {
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
m_argValues.push_back(m_argv[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
+7
-4
@@ -62,7 +62,8 @@ public:
|
|||||||
~Appl();
|
~Appl();
|
||||||
|
|
||||||
void addArgs(const std::string argTxt, const int argNum);
|
void addArgs(const std::string argTxt, const int argNum);
|
||||||
std::string getArg(const int argNum) const { return m_argv[m_argc - 1 - m_argNum + argNum]; }
|
size_t numArg() const { return m_argValues.size(); }
|
||||||
|
std::string getArg(const int argNum) const { return m_argValues[argNum]; }
|
||||||
|
|
||||||
void addItem(const char* name, Param param, const char* shortname,
|
void addItem(const char* name, Param param, const char* shortname,
|
||||||
const char* longname, const char* description,
|
const char* longname, const char* description,
|
||||||
@@ -87,9 +88,6 @@ private:
|
|||||||
Optiontype optiontype;
|
Optiontype optiontype;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string m_argTxt;
|
|
||||||
int m_argNum;
|
|
||||||
|
|
||||||
int m_argc;
|
int m_argc;
|
||||||
std::vector<std::string> m_argv;
|
std::vector<std::string> m_argv;
|
||||||
|
|
||||||
@@ -99,6 +97,11 @@ private:
|
|||||||
std::map<const char*, Param> m_params;
|
std::map<const char*, Param> m_params;
|
||||||
std::map<const char*, Param>::iterator p_it;
|
std::map<const char*, Param>::iterator p_it;
|
||||||
|
|
||||||
|
std::string m_argTxt;
|
||||||
|
int m_argNum;
|
||||||
|
|
||||||
|
std::vector<std::string> m_argValues;
|
||||||
|
|
||||||
bool checkArg(const std::string& name, const std::string& arg);
|
bool checkArg(const std::string& name, const std::string& arg);
|
||||||
|
|
||||||
void addParam(const char* name, Param param) { m_params[name] = param; }
|
void addParam(const char* name, Param param) { m_params[name] = param; }
|
||||||
|
|||||||
Reference in New Issue
Block a user