本文整理汇总了C++中yarp::os::ConnectionReader类的典型用法代码示例。如果您正苦于以下问题:C++ ConnectionReader类的具体用法?C++ ConnectionReader怎么用?C++ ConnectionReader使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ConnectionReader类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: read
bool Matrix::read(yarp::os::ConnectionReader& connection) {
// auto-convert text mode interaction
connection.convertTextMode();
MatrixPortContentHeader header;
bool ok = connection.expectBlock((char*)&header, sizeof(header));
if (!ok) return false;
int r=rows();
int c=cols();
if (header.listLen > 0)
{
if ( r != (int)(header.rows) || c!=(int)(header.cols))
{
resize(header.rows, header.cols);
}
int l=0;
double *tmp=data();
for(l=0;l<header.listLen;l++)
tmp[l]=connection.expectDouble();
}
else
return false;
return true;
}
开发者ID:AbuMussabRaja,项目名称:yarp,代码行数:25,代码来源:Matrix.cpp
示例2: read
bool C_sendingBuffer::read(yarp::os::ConnectionReader& connection)
{
connection.convertTextMode(); // if connection is text-mode, convert!
int tag = connection.expectInt();
if (tag!=BOTTLE_TAG_LIST+BOTTLE_TAG_BLOB+BOTTLE_TAG_INT)
return false;
int ct = connection.expectInt();
if (ct!=2)
return false;
size_of_the_packet = connection.expectInt();
connection.expectBlock(packet, SIZE_OF_DATA);
return true;
}
开发者ID:fhaust,项目名称:event-driven,代码行数:13,代码来源:sending_buffer.cpp
示例3: skipIncomingData
bool PortCoreInputUnit::skipIncomingData(yarp::os::ConnectionReader& reader) {
size_t pending = reader.getSize();
if (pending>0) {
while (pending>0) {
char buf[10000];
size_t next = (pending<sizeof(buf))?pending:sizeof(buf);
reader.expectBlock(&buf[0],next);
pending -= next;
}
return true;
}
return false;
}
开发者ID:JoErNanO,项目名称:yarp,代码行数:13,代码来源:PortCoreInputUnit.cpp
示例4: read
bool eventBuffer::read(yarp::os::ConnectionReader& connection)
{
connection.convertTextMode(); // if connection is text-mode, convert!
int tag = connection.expectInt();
if (tag != BOTTLE_TAG_LIST+BOTTLE_TAG_BLOB+BOTTLE_TAG_INT)
return false;
int ct = connection.expectInt();
if (ct!=2)
return false;
size_of_the_packet = connection.expectInt();
int ceilSizeOfPacket = (size_of_the_packet+7)/8*8; // the nearest multiple of 8 greater or equal to size_of_the_packet
memset(packet, 0, SIZE_OF_DATA);
connection.expectBlock(packet, ceilSizeOfPacket);
return true;
}
开发者ID:fhaust,项目名称:event-driven,代码行数:15,代码来源:eventBuffer.cpp
示例5: read
bool AnalogServerHandler::read(yarp::os::ConnectionReader& connection)
{
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ok=in.read(connection);
if (!ok) return false;
// parse in, prepare out
int code = in.get(0).asVocab();
bool ret=false;
if (code==VOCAB_IANALOG)
{
ret=_handleIAnalog(in, out);
}
if (!ret)
{
out.clear();
out.addVocab(VOCAB_FAILED);
}
yarp::os::ConnectionWriter *returnToSender = connection.getWriter();
if (returnToSender!=NULL) {
out.write(*returnToSender);
}
return true;
}
开发者ID:apaikan,项目名称:icub-main,代码行数:27,代码来源:analogServer.cpp
示例6: read
bool eventBottle::read(yarp::os::ConnectionReader& connection) {
connection.convertTextMode(); // if connection is text-mode, convert!
int tag = connection.expectInt();
if (tag != BOTTLE_TAG_LIST + BOTTLE_TAG_BLOB + BOTTLE_TAG_INT) {
return false;
}
int ct = connection.expectInt();
if (ct!=2) {
return false;
}
bytes_of_the_packet = connection.expectInt();
size_of_the_packet = bytes_of_the_packet / wordDimension; // number of 32 bit word times 4bytes
connection.expectBlock(packetPointer,bytes_of_the_packet);
//printf(" eventBottle::read:size_of_the_packet %d bytes_of_the_packet %d \n", size_of_the_packet, bytes_of_the_packet);
// ---------------------------------------------------------------------------------------------------------
// ------------------------ deserialisation of the bottle -------------------------------------
//printf("bytes of the packet %d \n",bytes_of_the_packet );
int word;
char* i_data = packetPointer;
packet->clear(); // clear the bottle before any other adding
unsigned char tmpChar;
for(int i = 0 ; i < bytes_of_the_packet;) {
word = 0;
for (int j = 0 ; j < 4 ; j++){
tmpChar = (unsigned char) *i_data;
//printf("%02x ", *i_data );
int value = tmpChar << (8 * j);
word = word | value;
i_data++;
i++;
}
packet->addInt(word);
//printf("= %08x \n", word);
}
//----------------------------------------------------------------------------------------------------------
//packet->fromBinary(packetPointer,bytes_of_the_packet);
size_of_the_bottle = packet->size();
return true;
}
开发者ID:himstien,项目名称:iCubFiles,代码行数:46,代码来源:eventBottle.cpp
示例7: read
bool Vector::read(yarp::os::ConnectionReader& connection) {
// auto-convert text mode interaction
connection.convertTextMode();
VectorPortContentHeader header;
bool ok = connection.expectBlock((char*)&header, sizeof(header));
if (!ok) return false;
if (header.listLen > 0 &&
header.listTag == BOTTLE_TAG_LIST + BOTTLE_TAG_DOUBLE) {
if (size() != (size_t)(header.listLen))
resize(header.listLen);
int k=0;
for (k=0;k<header.listLen;k++)
(*this)[k]=connection.expectDouble();
} else {
return false;
}
return !connection.isError();
}
开发者ID:Karma-Revolutions,项目名称:yarp,代码行数:20,代码来源:Vector.cpp
示例8: read
bool Quaternion::read(yarp::os::ConnectionReader& connection)
{
// auto-convert text mode interaction
connection.convertTextMode();
QuaternionPortContentHeader header;
bool ok = connection.expectBlock((char*)&header, sizeof(header));
if (!ok) return false;
if (header.listLen == 4 && header.listTag == (BOTTLE_TAG_LIST | BOTTLE_TAG_DOUBLE))
{
this->internal_data[0] = connection.expectDouble();
this->internal_data[1] = connection.expectDouble();
this->internal_data[2] = connection.expectDouble();
this->internal_data[3] = connection.expectDouble();
}
else
{
return false;
}
return !connection.isError();
}
开发者ID:jgvictores,项目名称:yarp,代码行数:22,代码来源:Quaternion.cpp
示例9: read
bool BatteryWrapper::read(yarp::os::ConnectionReader& connection)
{
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ok = in.read(connection);
if (!ok) return false;
// parse in, prepare out
int code = in.get(0).asVocab();
bool ret = false;
if (code == VOCAB_IBATTERY)
{
int cmd = in.get(1).asVocab();
if (cmd == VOCAB_BATTERY_INFO)
{
if (battery_p)
{
yarp::os::ConstString info;
battery_p->getBatteryInfo(info);
out.addVocab(VOCAB_IS);
out.addVocab(cmd);
out.addString(info);
ret = true;
}
}
else
{
yError("Invalid vocab received in BatteryWrapper");
}
}
else
{
yError("Invalid vocab received in BatteryWrapper");
}
if (!ret)
{
out.clear();
out.addVocab(VOCAB_FAILED);
}
yarp::os::ConnectionWriter *returnToSender = connection.getWriter();
if (returnToSender != NULL) {
out.write(*returnToSender);
}
return true;
}
开发者ID:AbuMussabRaja,项目名称:yarp,代码行数:47,代码来源:BatteryWrapper.cpp
示例10:
bool TaskYarpInterface::RpcMessageCallback::read(yarp::os::ConnectionReader& connection)
{
yarp::os::Bottle input;
yarp::os::Bottle reply;
if (!input.read(connection)){
return false;
}
else{
tmBase.parseIncomingMessage(input, reply);
yarp::os::ConnectionWriter* returnToSender = connection.getWriter();
if (returnToSender!=NULL) {
if (!reply.write(*returnToSender)) {
OCRA_ERROR("Reply was not successfully written");
return false;
}
}
return true;
}
}
开发者ID:ocra-recipes,项目名称:ocra-recipes,代码行数:20,代码来源:TaskYarpInterface.cpp
示例11: read
bool RGBDSensorWrapper::read(yarp::os::ConnectionReader& connection)
{
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ok = in.read(connection);
if (!ok) return false;
// parse in, prepare out
// int action = in.get(0).asVocab();
// int inter = in.get(1).asVocab();
bool ret = false;
if (!ret)
{
out.clear();
out.addVocab(VOCAB_FAILED);
}
yarp::os::ConnectionWriter *returnToSender = connection.getWriter();
if (returnToSender != NULL) {
out.write(*returnToSender);
}
return true;
}
开发者ID:AbuMussabRaja,项目名称:yarp,代码行数:24,代码来源:RGBDSensorWrapper.cpp
示例12: read
bool TeoXRpcResponder::read(yarp::os::ConnectionReader& connection) {
yarp::os::Bottle in, out;
in.read(connection);
printf("[xRpcResponder] Got %s\n", in.toString().c_str());
out.clear();
yarp::os::ConnectionWriter *returnToSender = connection.getWriter();
if (returnToSender==NULL) return false;
if ((in.get(0).asString() == "help")||(in.get(0).asVocab() == VOCAB_HELP)) // help //
{
out.addString("Available commands: [help] [load] [stat]");
return out.write(*returnToSender);
}
else if ((in.get(0).asString() == "load")||(in.get(0).asVocab() == VOCAB_LOAD)) // load //
{
if ( in.size() != 2 )
{
CD_ERROR("in.size() != 2\n");
out.addVocab(VOCAB_FAILED);
return out.write(*returnToSender);
}
if( ! cartesianRateThread->load( in.get(1).asString() ) )
{
CD_ERROR("cartesianRateThread->load failed\n");
out.addVocab(VOCAB_FAILED);
return out.write(*returnToSender);
}
out.addVocab(VOCAB_OK);
return out.write(*returnToSender);
}
else if ((in.get(0).asString() == "stat")||(in.get(0).asVocab() == VOCAB_STAT)) // stat //
{
std::vector<double> stat;
if( ! cartesianRateThread->stat(stat) )
out.addVocab(VOCAB_FAILED);
else
for(int i=0;i<stat.size();i++)
out.addDouble(stat[i]);
return out.write(*returnToSender);
}
else if ((in.get(0).asString() == "inv")||(in.get(0).asVocab() == VOCAB_INV)) // inv //
{
std::vector<double> xd, q;
for(int i=1;i<in.size();i++)
xd.push_back(in.get(i).asDouble());
if( ! cartesianRateThread->inv(xd,q) )
out.addVocab(VOCAB_FAILED);
else
for(int i=0;i<q.size();i++)
out.addDouble(q[i]);
return out.write(*returnToSender);
}
else if ((in.get(0).asString() == "movj")||(in.get(0).asVocab() == VOCAB_MOVJ)) // movj //
{
std::vector<double> xd, q;
for(int i=1;i<in.size();i++)
xd.push_back(in.get(i).asDouble());
if( ! cartesianRateThread->movj(xd) )
out.addVocab(VOCAB_FAILED);
else
{
if(in.check("wait"))
{
CD_SUCCESS("Waiting\n");
bool done = false;
while(!done) {
cartesianRateThread->checkMotionDone(&done);
printf(".");
fflush(stdout);
yarp::os::Time::delay(0.5);
}
printf("\n");
}
out.addVocab(VOCAB_OK);
}
return out.write(*returnToSender);
}
else
{
fprintf(stderr,"[xRpcResponder] fail: Unknown command (use 'help' if needed).\n");
out.addVocab(VOCAB_FAILED);
return out.write(*returnToSender);
}
}
开发者ID:roboticslab-uc3m,项目名称:manip-waiter,代码行数:83,代码来源:TeoXRpcResponder.cpp
示例13: read
bool Image::read(yarp::os::ConnectionReader& connection) {
// auto-convert text mode interaction
connection.convertTextMode();
ImageNetworkHeader header;
bool ok = connection.expectBlock((char*)&header,sizeof(header));
if (!ok) return false;
imgPixelCode = header.id;
int q = getQuantum();
if (q==0) {
//q = YARP_IMAGE_ALIGN;
setQuantum(header.quantum);
q = getQuantum();
}
if (q!=header.quantum) {
if ((header.depth*header.width)%header.quantum==0 &&
(header.depth*header.width)%q==0) {
header.quantum = q;
}
}
if (getPixelCode()!=header.id||q!=header.quantum) {
// we're trying to read an incompatible image type
// rather than just fail, we'll read it (inefficiently)
FlexImage flex;
flex.setPixelCode(header.id);
flex.setQuantum(header.quantum);
flex.resize(header.width,header.height);
if (header.width!=0&&header.height!=0) {
unsigned char *mem = flex.getRawImage();
yAssert(mem!=NULL);
if (flex.getRawImageSize()!=header.imgSize) {
printf("There is a problem reading an image\n");
printf("incoming: width %d, height %d, code %d, quantum %d, size %d\n",
(int)header.width, (int)header.height,
(int)header.id,
(int)header.quantum, (int)header.imgSize);
printf("my space: width %d, height %d, code %d, quantum %d, size %d\n",
flex.width(), flex.height(), flex.getPixelCode(),
flex.getQuantum(),
flex.getRawImageSize());
}
yAssert(flex.getRawImageSize()==header.imgSize);
ok = connection.expectBlock((char *)flex.getRawImage(),
flex.getRawImageSize());
if (!ok) return false;
}
copy(flex);
} else {
yAssert(getPixelCode()==header.id);
resize(header.width,header.height);
unsigned char *mem = getRawImage();
if (header.width!=0&&header.height!=0) {
yAssert(mem!=NULL);
if (getRawImageSize()!=header.imgSize) {
printf("There is a problem reading an image\n");
printf("incoming: width %d, height %d, code %d, quantum %d, size %d\n",
(int)header.width, (int)header.height,
(int)header.id,
(int)header.quantum, (int)header.imgSize);
printf("my space: width %d, height %d, code %d, quantum %d, size %d\n",
width(), height(), getPixelCode(), getQuantum(), getRawImageSize());
}
yAssert(getRawImageSize()==header.imgSize);
ok = connection.expectBlock((char *)getRawImage(),
getRawImageSize());
if (!ok) return false;
}
}
return !connection.isError();
}
开发者ID:Karma-Revolution,项目名称:yarp,代码行数:76,代码来源:Image.cpp
示例14: memset
bool MapGrid2D::read(yarp::os::ConnectionReader& connection)
{
// auto-convert text mode interaction
connection.convertTextMode();
connection.expectInt();
connection.expectInt();
connection.expectInt();
m_width = connection.expectInt();
connection.expectInt();
m_height = connection.expectInt();
connection.expectInt();
m_origin.x = connection.expectDouble();
connection.expectInt();
m_origin.y = connection.expectDouble();
connection.expectInt();
m_origin.theta = connection.expectDouble();
connection.expectInt();
m_resolution = connection.expectDouble();
connection.expectInt();
int siz = connection.expectInt();
char buff[255]; memset(buff, 0, 255);
connection.expectBlock((char*)buff, siz);
m_map_name = buff;
m_map_occupancy.resize(m_width, m_height);
m_map_flags.resize(m_width, m_height);
bool ok = true;
unsigned char *mem = nullptr;
int memsize = 0;
connection.expectInt();
memsize = connection.expectInt();
if (memsize != m_map_occupancy.getRawImageSize()) { return false; }
mem = m_map_occupancy.getRawImage();
ok &= connection.expectBlock((char*)mem, memsize);
connection.expectInt();
memsize = connection.expectInt();
if (memsize != m_map_flags.getRawImageSize()) { return false; }
mem = m_map_flags.getRawImage();
ok &= connection.expectBlock((char*)mem, memsize);
if (!ok) return false;
return !connection.isError();
return true;
}
开发者ID:jgvictores,项目名称:yarp,代码行数:45,代码来源:MapGrid2D.cpp
示例15: if
bool Rangefinder2DWrapper::read(yarp::os::ConnectionReader& connection)
{
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ok = in.read(connection);
if (!ok) return false;
// parse in, prepare out
int action = in.get(0).asVocab();
int inter = in.get(1).asVocab();
bool ret = false;
if (inter == VOCAB_ILASER2D)
{
if (action == VOCAB_GET)
{
int cmd = in.get(2).asVocab();
if (cmd == VOCAB_DEVICE_INFO)
{
if (sens_p)
{
yarp::os::ConstString info;
if (sens_p->getDeviceInfo(info))
{
out.addVocab(VOCAB_IS);
out.addVocab(cmd);
out.addString(info);
ret = true;
}
else
{
ret = false;
}
}
}
else if (cmd == VOCAB_LASER_DISTANCE_RANGE)
{
if (sens_p)
{
double max = 0;
double min = 0;
if (sens_p->getDistanceRange(min, max))
{
out.addVocab(VOCAB_IS);
out.addVocab(cmd);
out.addDouble(min);
out.addDouble(max);
ret = true;
}
else
{
ret = false;
}
}
}
else if (cmd == VOCAB_LASER_ANGULAR_RANGE)
{
if (sens_p)
{
double max = 0;
double min = 0;
if (sens_p->getScanLimits(min, max))
{
out.addVocab(VOCAB_IS);
out.addVocab(cmd);
out.addDouble(min);
out.addDouble(max);
ret = true;
}
else
{
ret = false;
}
}
}
else if (cmd == VOCAB_LASER_ANGULAR_STEP)
{
if (sens_p)
{
double step = 0;
if (sens_p->getHorizontalResolution(step))
{
out.addVocab(VOCAB_IS);
out.addVocab(cmd);
out.addDouble(step);
ret = true;
}
else
{
ret = false;
}
}
}
else if (cmd == VOCAB_LASER_SCAN_RATE)
{
if (sens_p)
{
double rate = 0;
if (sens_p->getScanRate(rate))
{
//.........这里部分代码省略.........
开发者ID:plinioMoreno,项目名称:yarp,代码行数:101,代码来源:Rangefinder2DWrapper.cpp
示例16: if
bool yarp::dev::LocationsServer::read(yarp::os::ConnectionReader& connection)
{
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ret;
int code;
bool ok = in.read(connection);
if (!ok) return false;
// parse in, prepare out
if(in.get(0).isString())
{
if (in.get(0).asString() == "save" && in.get(1).isString())
{
if(save_locations(in.get(1).asString()))
{
out.addString(in.get(1).asString() + " successfully saved");
}
}
else if (in.get(0).asString() == "load" && in.get(1).isString())
{
if(load_locations(in.get(1).asString()))
{
out.addString(in.get(1).asString() + " successfully loaded");
}
}
else if(in.get(0).asString() == "list")
{
std::map<std::string, Map2DLocation>::iterator it;
for (it = m_locations.begin(); it != m_locations.end(); it++)
{
out.addString(it->first);
}
}
else if(in.get(0).asString() == "help")
{
out.addString("'save <full path filename>' to save locations on a file");
out.addString("'load <full path filename>' to load locations from a file");
out.addString("'list' to view locations stored");
}
else
{
out.addString("request not undestood, call 'help' to see a list of avaiable commands");
}
yarp::os::ConnectionWriter *returnToSender = connection.getWriter();
if (returnToSender != NULL)
{
out.write(*returnToSender);
}
updateVizMarkers();
return true;
}
code = in.get(0).asVocab();
ret = false;
if (code == VOCAB_INAVIGATION)
{
int cmd = in.get(1).asVocab();
if (cmd == VOCAB_NAV_GET_LOCATION_LIST)
{
yarp::os::ConstString info;
out.addVocab(VOCAB_OK);
Bottle& l = out.addList();
std::map<std::string, Map2DLocation>::iterator it;
for (it = m_locations.begin(); it != m_locations.end(); it++)
{
l.addString(it->first);
}
ret = true;
}
else if (cmd == VOCAB_NAV_CLEAR)
{
m_locations.clear();
out.addVocab(VOCAB_OK);
ret = true;
}
else if (cmd == VOCAB_NAV_DELETE)
{
std::string name = in.get(2).asString();
std::map<std::string, Map2DLocation>::iterator it;
it = m_locations.find(name);
if (it != m_locations.end())
{
m_locations.erase(it);
out.addVocab(VOCAB_OK);
}
else
{
yError("User requested an invalid location name");
out.addVocab(VOCAB_ERR);
}
//.........这里部分代码省略.........
开发者ID:apaikan,项目名称:yarp,代码行数:101,代码来源:LocationsServer.cpp
示例17: read
bool FrameTransformServer::read(yarp::os::ConnectionReader& connection)
{
LockGuard lock(m_mutex);
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ok = in.read(connection);
if (!ok) return false;
string request = in.get(0).asString();
// parse in, prepare out
int code = in.get(0).asVocab();
bool ret = false;
if (code == VOCAB_ITRANSFORM)
{
int cmd = in.get(1).asVocab();
if (cmd == VOCAB_TRANSFORM_SET)
{
if (in.size() != 12)
{
yError() << "FrameTransformServer::read() protocol error";
out.clear();
out.addVocab(VOCAB_FAILED);
}
else
{
FrameTransform t;
t.src_frame_id = in.get(2).asString();
t.dst_frame_id = in.get(3).asString();
double duration = in.get(4).asDouble();
t.translation.tX = in.get(5).asDouble();
t.translation.tY = in.get(6).asDouble();
t.translation.tZ = in.get(7).asDouble();
t.rotation.w() = in.get(8).asDouble();
t.rotation.x() = in.get(9).asDouble();
t.rotation.y() = in.get(10).asDouble();
t.rotation.z() = in.get(11).asDouble();
t.timestamp = yarp::os::Time::now();
bool static_transform;
if (duration > 0)
{
static_transform = false;
}
else
{
static_transform = true;
}
if (static_transform)
{
ret = m_yarp_static_transform_storage->set_transform(t);
}
else
{
ret = m_yarp_timed_transform_storage->set_transform(t);
}
if (ret == true)
{
out.clear();
out.addVocab(VOCAB_OK);
}
else
{
out.clear();
out.addVocab(VOCAB_FAILED);
yError() << "FrameTransformServer::read() something strange happened";
}
}
}
else if (cmd == VOCAB_TRANSFORM_DELETE_ALL)
{
m_yarp_timed_transform_storage->clear();
m_yarp_static_transform_storage->clear();
m_ros_timed_transform_storage->clear();
m_ros_static_transform_storage->clear();
out.clear();
out.addVocab(VOCAB_OK);
}
else if (cmd == VOCAB_TRANSFORM_DELETE)
{
string frame1 = in.get(2).asString();
string frame2 = in.get(3).asString();
bool ret1 = m_yarp_timed_transform_storage->delete_transform(frame1, frame2);
if (ret1 == true)
{
out.clear();
out.addVocab(VOCAB_OK);
}
else
{
bool ret2 = m_yarp_static_transform_storage->delete_transform(frame1, frame2);
if (ret2 == true)
{
out.clear();
out.addVocab(VOCAB_OK);
}
}
}
else
//.........这里部分代码省略.........
开发者ID:giuliavezzani,项目名称:yarp,代码行数:101,代码来源:FrameTransformServer.cpp
示例18: read
bool Image::read(yarp::os::ConnectionReader& connection) {
// auto-convert text mode interaction
connection.convertTextMode();
ImageNetworkHeader header;
bool ok = connection.expectBlock((char*)&header,sizeof(header));
if (!ok) return false;
//first check that the received image size is reasonable
if (header.width == 0 || header.height == 0)
{
// I maintain the prevous logic, although we should probably return false
return !connection.isError();
}
imgPixelCode = header.id;
int q = getQuantum();
if (q==0) {
//q = YARP_IMAGE_ALIGN;
setQuantum(header.quantum);
q = getQuantum();
}
if (q!=header.quantum) {
if ((header.depth*header.width)%header.quantum==0 &&
(header.depth*header.width)%q==0) {
header.quantum = q;
}
}
// handle easy case, received and current image are compatible, no conversion needed
if (getPixelCode() == header.id && q == header.quantum)
{
return readFromConnection(*this, header, connection);
}
// image is bayer 8 bits, current image is MONO, copy as is (keep raw format)
if (getPixelCode() == VOCAB_PIXEL_MONO && isBayer8(header.id))
{
return readFromConnection(*this, header, connection);
}
// image is bayer 16 bits, current image is MONO16, copy as is (keep raw format)
if (getPixelCode() == VOCAB_PIXEL_MONO16 && isBayer16(header.id))
{
return readFromConnection(*this, header, connection);
}
////////////////////
// Received and current images are binary incompatible do our best to convert
//
// handle here all bayer encoding 8 bits
if (isBayer8(header.id))
{
FlexImage flex;
flex.setPixelCode(VOCAB_PIXEL_MONO);
flex.setQuantum(header.quantum);
bool ok = readFromConnection(flex, header, connection);
if (!ok)
return false;
if (getPixelCode() == VOCAB_PIXEL_BGR && header.id==VOCAB_PIXEL_ENCODING_BAYER_GRBG8)
return deBayer_GRBG8_TO_BGR(flex, *this, 3);
else if (getPixelCode() == VOCAB_PIXEL_BGRA && header.id == VOCAB_PIXEL_ENCODING_BAYER_GRBG8)
return deBayer_GRBG8_TO_BGR(flex, *this, 4);
if (getPixelCode() == VOCAB_PIXEL_RGB && header.id==VOCAB_PIXEL_ENCODING_BAYER_GRBG8)
return deBayer_GRBG8_TO_RGB(flex, *this, 3);
if (getPixelCode() == VOCAB_PIXEL_RGBA && header.id == VOCAB_PIXEL_ENCODING_BAYER_GRBG8)
return deBayer_GRBG8_TO_RGB(flex, *this, 4);
else
{
YARP_FIXME_NOTIMPLEMENTED("Conversion from bayer encoding not yet implemented\n");
return false;
}
}
// handle here all bayer encodings 16 bits
if (isBayer16(header.id))
{
// as bayer16 seems unlikely we defer implementation for later
YARP_FIXME_NOTIMPLEMENTED("Conversion from bayer encoding 16 bits not yet implemented\n");
return false;
}
// Received image has valid YARP pixels and can be converted using Image primitives
// prepare a FlexImage, set it to be compatible with the received image
// read new image into FlexImage then copy from it.
FlexImage flex;
flex.setPixelCode(header.id);
flex.setQuantum(header.quantum);
ok = readFromConnection(flex, header, connection);
if (ok)
copy(flex);
return ok;
}
开发者ID:giuliavezzani,项目名称:yarp,代码行数:99,代码来源:Image.cpp
示例19: read
bool SystemInfoSerializer::read(yarp::os::ConnectionReader& connection)
{
// reading memory
memory.totalSpace = connection.expectInt();
memory.freeSpace = connection.expectInt();
// reading storage
storage.totalSpace = connection.expectInt();
storage.freeSpace = connection.expectInt();
// reading network
//network.mac = connection.expectText();
//network.ip4 = connection.expectText();
//network.ip6 = connection.expectText();
// reading processor
processor.architecture = connection.expectText();
processor.model = connection.expectText();
processor.vendor = connection.expectText();
processor.family = connection.expectInt();
processor.modelNumber = connection.expectInt();
processor.cores = connection.expectInt();
processor.siblings = connection.expectInt();
processor.frequency = connection.expectDouble();
// reading load
load.cpuLoad1 = connection.expectDouble();
load.cpuLoad5 = connection.expectDouble();
load.cpuLoad15 = connection.expectDouble();
load.cpuLoadInstant = connection.expectInt();
// reading platform
platform.name = connection.expectText();
platform.distribution = connection.expectText();
platform.release = connection.expectText();
platform.codename = connection.expectText();
platform.kernel = connection.expectText();
platform.environmentVars.fromString(connection.expectText());
// reading user
user.userName = connection.expectText();
user.realName = connection.expectText();
user.homeDir = connection.expectText();
user.userID = connection.expectInt();
return true;
}
开发者ID:AbuMussabRaja,项目名称:yarp,代码行数:46,代码来源:SystemInfoSerializer.cpp
示例20: lock
//------------------------------------------------------------------------------------------------------------------------------
bool yarp::dev::FrameTransformClient::read(yarp::os::ConnectionReader& connection)
{
LockGuard lock (m_rpc_mutex);
yarp::os::Bottle in;
yarp::os::Bottle out;
bool ok = in.read(connection);
if (!ok) return false;
std::string request = in.get(0).asString();
if (request == "help")
{
out.addVocab(Vocab::encode("many"));
out.addString("'get_transform <src> <dst>: print the transform from <src> to <dst>");
out.addString("'list_frames: print all the available refence frames");
out.addString("'list_ports: print all the opened ports for tranform broadcasting");
out.addString("'publish_transform <src> <dst> <portname> <format>: opens a port to publish transform from src to dst");
out.addString("'unpublish_transform <portname>: closes a previously opened port to publish a transform");
out.addString("'unpublish_all <portname>: closes a all previously opened ports to publish a transform");
}
else if (request == "list_frames")
{
std::vector<std::string> v;
this->getAllFrameIds(v);
out.addVocab(Vocab::encode("many"));
out.addString("List of available reference frames:");
int count = 0;
for (auto vec = v.begin(); vec != v.end(); vec++)
{
count++;
std::string str = std::to_string(count) + "- " + *vec;
out.addString(str.c_str());
}
}
else if (request == "get_transform")
{
std::string src = in.get(1).asString();
std::string dst = in.get(2).asString();
out.addVocab(Vocab::encode("many"));
yarp::sig::Matrix m;
this->getTransform(src, dst, m);
out.addString("Tranform from " + src + " to " + dst + " is: ");
out.addString(m.toString());
}
else if (request == "list_ports")
{
out.addVocab(Vocab::encode("many"));
if (m_array_of_ports.size()==0)
{
out.addString("No ports are currently active");
}
for (auto it = m_array_of_ports.begin(); it != m_array_of_ports.end(); it++)
{
if (*it)
{
std::string s = (*it)->port.getName() + " "+ (*it)->transform_src + " -> " + (*it)->transform_dst;
out.addString(s);
}
}
}
else if (request == "publish_transform")
{
out.addVocab(Vocab::encode("many"));
std::string src = in.get(1).asString();
std::string dst = in.get(2).asString();
std::string port_name = in.get(3).asString();
std::string format = "matrix";
if (in.size() > 4)
{format= in.get(4).asString();}
if (port_name[0]=='/') port_name.erase(port_name.begin());
std::string full_port_name = m_local_name + "/" + port_name;
bool ret = true;
for (auto it = m_array_of_ports.begin(); it != m_array_of_ports.end(); it++)
{
if ((*it) && (*it)->port.getName() == full_port_name)
{
ret = false;
break;
}
}
if (this->frameExists(src)==false)
{
out.addString("Requested src frame " + src + " does not exists.");
yWarning("Requested src frame %s does not exists.", src.c_str());
}
if (this->frameExists(dst)==false)
{
out.addString("Requested dst frame " + dst + " does not exists.");
yWarning("Requested fst frame %s does not exists.", dst.c_str());
}
if (ret == true)
{
broadcast_port_t* b = new broadcast_port_t;
b->transform_src = src;
b->transform_dst = dst;
b->format = format;
bool pret = b->port.open(full_port_name);
if (pret)
{
out.addString("Operation complete. Port " + full_port_name + " opened.");
//.........这里部分代码省略.........
开发者ID:jgvictores,项目名称:yarp,代码行数:101,代码来源:FrameTransformClient.cpp
注:本文中的yarp::os::ConnectionReader类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论