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:
119
main.cpp
119
main.cpp
@@ -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, ð, 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);
|
||||
|
||||
Reference in New Issue
Block a user