3.10.2013 - PIPeer release, PIConsole now can work as server and remote client. Remote console test program in directory "remote_console"

This commit is contained in:
peri4
2013-10-03 16:04:02 +04:00
parent 9111640ca8
commit 4b90f2818e
56 changed files with 6422 additions and 673 deletions

119
main.cpp
View File

@@ -202,95 +202,68 @@ struct msg2105base {
float tangaj_CP;
};
struct InpuData {
InpuData() {header.msg_id = 2113;}
msgHeader header;
uint first_number;
struct {
uchar packet_number: 7;
uchar packet_last : 1;
};
struct {
uchar antenna_number : 3;
uchar frequency_number: 3;
uchar data_type : 2;
};
uchar data[122];
};
#pragma pack(pop)
class RC: public PIObject {
PIOBJECT(RC)
public:
EVENT_HANDLER2(void, peer, const PIString & , from, const PIByteArray &, data) {piCout << "received from" << from << "\"" << PIString(data) << "\"";}
EVENT_HANDLER2(void, slot, void * , data, int, size) {piCout << "read" << PIString((char*)data, size);}
EVENT_HANDLER2(void, re, ullong, id, int, size) {piCout << "written id =" << id << "size =" << size;}
};
int main (int argc, char * argv[]) {
//PIKbdListener kbd;
//kbd.enableExitCapture();
/*PIEthernet::InterfaceList il = PIEthernet::interfaces();
//const PIEthernet::Interface & i(*(il.getByName("lo")));
piForeachC (PIEthernet::Interface & i, il)
piCout << NewLine << i.name << NewLine
<< "index" << i.index << NewLine
<< "address" << i.address << NewLine
<< "netmask" << i.netmask << NewLine
<< "mac" << i.mac << NewLine
<< "broadcast" << i.broadcast << NewLine
<< "isActive" << i.isActive() << NewLine
<< "isRunning" << i.isRunning() << NewLine
<< "isBroadcast" << i.isBroadcast() << NewLine
<< "isMulticast" << i.isMulticast() << NewLine
<< "isLoopback" << i.isLoopback() << NewLine
<< "isPTP" << i.isPTP();*/
//return 0;
int main(int argc, char ** argv) {
InpuData data;
PIEthernet eth(PIEthernet::UDP);
data.antenna_number = data.frequency_number = data.data_type = 0;
float t = 0.f;
int pc = 20, cnt = 0;
for (int p = 0; p < pc; ++p) {
data.packet_number = p;
data.packet_last = (p == pc - 1 ? 1 : 0);
data.first_number = p * 97;
PIBitArray ba_;
int ci = 0;
for (int i = 0; i < 97; ++i) {
t += M_PI/4;
ci = sin(t) * 511 + 511;
if (cnt % 500 > 80) ci = 512;
cnt++;
for (int b = 0; b < 10; ++b)
ba_.push_back(((ci >> b) & 1) == 1);
}
//cout << ba_.byteSize() << ", " << ba_.bitSize() << endl;
memcpy(data.data, ba_.data(), 122);
eth.send("127.0.0.1:5000", &data, sizeof(data));
}
/*cout << ba_ << endl;
for (int i = 0; i < 122; ++i)
cout << int(data.data[i]) << ", ";
cout << endl;*/
/*RC rc__;
PIPeer peer(argv[1]);
CONNECT2(void, const PIString & , const PIByteArray &, &peer, dataReceivedEvent, &rc__, peer);
msleep(1000);
peer.send("a", ("hello a from '" + PIString(argv[1]) + "'!").data());
peer.send("b", ("hello b from '" + PIString(argv[1]) + "'!").data());
peer.send("c", ("hello c from '" + PIString(argv[1]) + "'!").data());*/
int a__, b__;
PIConsole console(false);
console.enableExitCapture();
PIProtocol p("/home/peri4/work/ISPUM/nosit_VM6/protocols.conf", "gas", 0, 0, &a__, 4, &b__, 4);
p.start();
console.addVariable("service", &p);
console.start();
console.startServer("cons");
console.waitForFinish();
return 0;
/*PIKbdListener kbd;
kbd.enableExitCapture();
PIEthernet * _eth;
PIByteArray ba_(16);
if (PIString(argv[argc - 1]) == "s") {
_eth = new PIEthernet(PIEthernet::TCP_Server);
piCout << "listen" << _eth->listen("127.0.0.1:1111");
int cc = 0;
while (!PIKbdListener::exiting) {
if (cc != _eth->clientsCount()) {
piCout << "new client";
_eth->clients().back()->startThreadedRead();
cc++;
}
msleep(1);
}
} else {
_eth = new PIEthernet(PIEthernet::TCP_Client);
piCout << "connection" << _eth->connect("127.0.0.1:1111");
_eth->send(PIString("0123456789101112").data(), 16);
while (!PIKbdListener::exiting) {
msleep(1);
}
PIFile f("picontainers.h");
PIString all = f.readAll();
while (!all.isEmpty()) {
PIString line = all.takeLine();
if (line.takeWord() == "class")
piCout << "class" << line.trim();
}
delete _eth;
return 0;
msg2105base msg;
msg.header.size = sizeof(msg);
msg.header.msg_id = 2105;
msg.msgTime = 1;
//PIKbdListener kbd;
//kbd.enableExitCapture();
RC rc_;
PIEthernet eth;
CONNECT2(void, ullong, int, &eth, threadedWriteEvent, &rc_, re);
@@ -313,7 +286,7 @@ int main(int argc, char ** argv) {
piMSleep(50);
if (PIKbdListener::exiting) break;
}
return 0;*/
return 0;
PISignals::setSlot(signalFunc);
//PISignals::grabSignals(PISignals::Interrupt);