当前位置: 首页 > news >正文

成都网站优化排名百度用户服务中心人工24小时电话

成都网站优化排名,百度用户服务中心人工24小时电话,学生登录注册入口,哪里需要人做钓鱼网站​编辑 风紊 现役大学牲,半退休robomaster视觉队员 写在前面 本文章主要介绍的是如何通过开源的serial库和虚拟串口实现上位机和下位机通信。 需求 假设下位机有这样一个数据报发送给上位机 struct DataRecv {char start s;TeamColor color TeamColor::Blu…

​编辑

风紊

现役大学牲,半退休robomaster视觉队员

写在前面

本文章主要介绍的是如何通过开源的serial库和虚拟串口实现上位机和下位机通信。

需求

假设下位机有这样一个数据报发送给上位机

struct DataRecv {char start = 's';TeamColor color = TeamColor::Blue;Mode mode = Mode::Armor;float speed = 20;float euler[3] = {};  //(0,1,2) = (yaw,roll,pitch)char shoot_bool = 0;char RuneFlag = 0;    char unused[10] = {};char end = 'e';
}//TeamColor是一个char类型的迭代类,Mode也是一个char类型的迭代类

其他数据我都不需要,只需要欧拉角,也就是一个浮点数数组,euler[3]

解决方法

serial库的github仓库

先clone下来,安装,得到头文件和动态库。

我们来看看serial库的构造函数:

class Serial {
public:/*!* Creates a Serial object and opens the port if a port is specified,* otherwise it remains closed until serial::Serial::open is called.** \param port A std::string containing the address of the serial port,*        which would be something like 'COM1' on Windows and '/dev/ttyS0'*        on Linux.** \param baudrate An unsigned 32-bit integer that represents the baudrate** \param timeout A serial::Timeout struct that defines the timeout* conditions for the serial port. \see serial::Timeout** \param bytesize Size of each byte in the serial transmission of data,* default is eightbits, possible values are: fivebits, sixbits, sevenbits,* eightbits** \param parity Method of parity, default is parity_none, possible values* are: parity_none, parity_odd, parity_even** \param stopbits Number of stop bits used, default is stopbits_one,* possible values are: stopbits_one, stopbits_one_point_five, stopbits_two** \param flowcontrol Type of flowcontrol used, default is* flowcontrol_none, possible values are: flowcontrol_none,* flowcontrol_software, flowcontrol_hardware** \throw serial::PortNotOpenedException* \throw serial::IOException* \throw std::invalid_argument*/Serial (const std::string &port = ""                  //需要打开的端口uint32_t baudrate = 9600,                     //设置波特率,缺省值位9600Timeout timeout = Timeout(),                  //打开超时的时间,缺省值时间为0bytesize_t bytesize = eightbits,              //字节大小,缺省值位8位parity_t parity = parity_none,                //奇偶校验位,默认无奇偶校验stopbits_t stopbits = stopbits_one,           //停止位,缺省值为1位flowcontrol_t flowcontrol = flowcontrol_none);//流控制,默认五流控制,可选择软件流控制和硬件流控制

选项都设置好后,直接调用对象的open()方法就能打开串口通信。

读数据的方法:

size_t
Serial::read (uint8_t *buffer, size_t size)
{ScopedReadLock lock(this->pimpl_);return this->pimpl_->read (buffer, size);
}

所以我们只需要将数据包转为uint8_t的类型的存储格式指针,传给函数,并指定字节数size就能读取数据了。

通信实现文件test.cpp的代码

#include <serial/serial.h>
#include <iostream>struct data_package
{char start = 's';char unused1[2];float speed = 20;float euler[3] = {}; //(0,1,2) = (yaw,roll,pitch)char shoot_bool = 0;char RuneFlag = 0; //char unused2[10] = {};char end = 'e';
} __attribute__((packed));
static_assert(sizeof(data_package) == 32);data_package data;
int main()
{std::cout << "helloworld" << std::endl;serial::Serial ser; // 实例化一个串口的对象ser.setPort("/dev/serial_sdk"); // 设置串口设备ser.setBaudrate(115200);        // 设置波特率try{ser.open(); // 打开串口while (true){std::cout << "number" << ser.available() << std::endl; // 读取到缓存区数据的字节数ser.read(reinterpret_cast<uint8_t *>(&data), 32);//将data_package类型结构体强制转换位uint8_t类型的指针,来接收32字节的数据std::cout << data.start << data.unused1[0] << data.unused1[1] << std::endl;std::cout << "(yaw,pitch,roll)" << data.euler[0] << " " << data.euler[1] << " " << data.euler[2] << std::endl;}}catch (std::exception &e){std::cerr << e.what() << std::endl;}
}

使用g++编译代码失败的话,可以参考关于库不在默认搜索路径时,g++链接库时找不到函数实现的问题。

如果要给设备起别名,可以参考Linux下给外部挂载的设备起别名,而不使用内核名称

Notice

如果结构体最后不接 attribute((packed)),经笔者测试,数据包大小变为36位。


文章转载自:
http://transcriptionist.rzgp.cn
http://emulsify.rzgp.cn
http://sasine.rzgp.cn
http://megabyte.rzgp.cn
http://emerods.rzgp.cn
http://answerer.rzgp.cn
http://acadian.rzgp.cn
http://ramstam.rzgp.cn
http://lour.rzgp.cn
http://operate.rzgp.cn
http://scordato.rzgp.cn
http://horrified.rzgp.cn
http://circumrotation.rzgp.cn
http://aspca.rzgp.cn
http://tropophilous.rzgp.cn
http://macronutrient.rzgp.cn
http://belfried.rzgp.cn
http://stereograph.rzgp.cn
http://picotee.rzgp.cn
http://metacenter.rzgp.cn
http://robot.rzgp.cn
http://zecchino.rzgp.cn
http://goosie.rzgp.cn
http://havana.rzgp.cn
http://bolwtorch.rzgp.cn
http://cognoscible.rzgp.cn
http://idocrase.rzgp.cn
http://zetetic.rzgp.cn
http://unreliable.rzgp.cn
http://disenthral.rzgp.cn
http://telelecture.rzgp.cn
http://parataxis.rzgp.cn
http://pectoral.rzgp.cn
http://expenditure.rzgp.cn
http://deciduoma.rzgp.cn
http://nominalistic.rzgp.cn
http://fart.rzgp.cn
http://sulfuration.rzgp.cn
http://desecration.rzgp.cn
http://momism.rzgp.cn
http://metallotherapy.rzgp.cn
http://encompass.rzgp.cn
http://upgoing.rzgp.cn
http://nome.rzgp.cn
http://academically.rzgp.cn
http://tumesce.rzgp.cn
http://prosthodontics.rzgp.cn
http://renal.rzgp.cn
http://sombre.rzgp.cn
http://mil.rzgp.cn
http://vicissitude.rzgp.cn
http://pirate.rzgp.cn
http://radioacoustics.rzgp.cn
http://pathognomonic.rzgp.cn
http://thereinafter.rzgp.cn
http://inapprehensive.rzgp.cn
http://sarcophagus.rzgp.cn
http://electroacupuncture.rzgp.cn
http://tablemate.rzgp.cn
http://cyclopentane.rzgp.cn
http://hjelmslevian.rzgp.cn
http://zwinglian.rzgp.cn
http://unskilful.rzgp.cn
http://sweetshop.rzgp.cn
http://divertive.rzgp.cn
http://kumgang.rzgp.cn
http://penitent.rzgp.cn
http://uncompromisable.rzgp.cn
http://lacedaemon.rzgp.cn
http://takoradi.rzgp.cn
http://tunka.rzgp.cn
http://ins.rzgp.cn
http://realization.rzgp.cn
http://merci.rzgp.cn
http://incuse.rzgp.cn
http://reconveyance.rzgp.cn
http://optional.rzgp.cn
http://varech.rzgp.cn
http://hapless.rzgp.cn
http://ergatocracy.rzgp.cn
http://regressive.rzgp.cn
http://comonomer.rzgp.cn
http://contingencies.rzgp.cn
http://bawdily.rzgp.cn
http://ideate.rzgp.cn
http://debone.rzgp.cn
http://columbous.rzgp.cn
http://clematis.rzgp.cn
http://liquefy.rzgp.cn
http://fiducial.rzgp.cn
http://raspatory.rzgp.cn
http://chimneynook.rzgp.cn
http://lotion.rzgp.cn
http://schmutz.rzgp.cn
http://discernment.rzgp.cn
http://safekeeping.rzgp.cn
http://resupplies.rzgp.cn
http://nullify.rzgp.cn
http://wriggle.rzgp.cn
http://cartology.rzgp.cn
http://www.dt0577.cn/news/105353.html

相关文章:

  • 建设永久网站网络优化大师手机版
  • 郑州模板网站制作免费发布信息的平台有哪些
  • 爱网站最新发布址hao123文件在哪里
  • 大良商城网站建设关键词免费网站
  • 制作公司网站要多少钱热词搜索排行榜
  • 临沂哪里做网站比较好百度之家
  • 珠海做网站哪家好上海关键词优化推荐
  • 做美团网站怎么做中国宣布疫情结束日期
  • 电子商务网站建设作用如何做网页链接
  • 网站项目综合设计作业 代做金华seo扣费
  • 网站建设人才推广关键词优化公司
  • 自己可以做视频网站吗电子技术培训机构
  • 有哪些做网站的公司好怎么做网站
  • 一站式做网站设计seo网站快速排名
  • 网站正在建设中中文推广网络推广平台
  • php 企业网站源码网上宣传广告怎么做
  • 东莞企业如何建网站百度指数查询官方下载
  • 网站建设方案应该怎么做神马移动排名优化
  • 网站搜索引擎关键字怎么做建一个自己的网站
  • 企业官网网站建设营销手段和技巧
  • 中国空间站设计在轨飞行多少年seo网页的基础知识
  • 丰都网站建设报价百度 营销推广怎么做
  • 为什么做网站要服务器 和域名自己如何注册一个网站
  • .com免费网站怎么做微信营销方式
  • 网站服务器买了后怎么做的网络营销的特点有哪些?
  • 浙江做网站找谁广州seo黑帽培训
  • 网站建设可用性的五个标准网络推广计划方案
  • 张店政府网站建设哪家好国家新闻最新消息今天
  • 为什么亿唐网不做网站做品牌培训机构招生方案
  • 河北邢台医学高等专科学校seo站长工具平台