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

成都网站优化排名seo基础教程

成都网站优化排名,seo基础教程,万网做的网站咋样,做动态影集的网站​编辑 风紊 现役大学牲,半退休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://dendrophagous.zydr.cn
http://spindlelegs.zydr.cn
http://frutex.zydr.cn
http://bravest.zydr.cn
http://covey.zydr.cn
http://greenskeeper.zydr.cn
http://kerulen.zydr.cn
http://warmer.zydr.cn
http://precipitancy.zydr.cn
http://sha.zydr.cn
http://whereat.zydr.cn
http://berretta.zydr.cn
http://floaty.zydr.cn
http://jealousness.zydr.cn
http://sorosilicate.zydr.cn
http://uralborite.zydr.cn
http://attest.zydr.cn
http://ohg.zydr.cn
http://vocoid.zydr.cn
http://mycology.zydr.cn
http://taroc.zydr.cn
http://hp.zydr.cn
http://discommender.zydr.cn
http://tuberculocele.zydr.cn
http://kilowatt.zydr.cn
http://elyseeologist.zydr.cn
http://dexterous.zydr.cn
http://divisive.zydr.cn
http://meteoroid.zydr.cn
http://kilogauss.zydr.cn
http://implausibility.zydr.cn
http://oltp.zydr.cn
http://naught.zydr.cn
http://supranationalism.zydr.cn
http://shekinah.zydr.cn
http://retrolingual.zydr.cn
http://vitaglass.zydr.cn
http://cattywampus.zydr.cn
http://aerobics.zydr.cn
http://indiscretionary.zydr.cn
http://unpersuasive.zydr.cn
http://libia.zydr.cn
http://triplicity.zydr.cn
http://then.zydr.cn
http://junket.zydr.cn
http://numbskull.zydr.cn
http://posteriority.zydr.cn
http://intervital.zydr.cn
http://stockpile.zydr.cn
http://gastroesophageal.zydr.cn
http://tabulate.zydr.cn
http://turbinal.zydr.cn
http://zingy.zydr.cn
http://trijugate.zydr.cn
http://laystall.zydr.cn
http://scolopendrium.zydr.cn
http://presbyteral.zydr.cn
http://mercantile.zydr.cn
http://noontide.zydr.cn
http://bicker.zydr.cn
http://germinate.zydr.cn
http://easement.zydr.cn
http://crepuscule.zydr.cn
http://speechmaker.zydr.cn
http://incongruous.zydr.cn
http://planetoid.zydr.cn
http://scumboard.zydr.cn
http://recidivism.zydr.cn
http://sphinges.zydr.cn
http://baywreath.zydr.cn
http://cinnamic.zydr.cn
http://tulipwood.zydr.cn
http://anagrammatism.zydr.cn
http://carbonization.zydr.cn
http://mavournin.zydr.cn
http://chromide.zydr.cn
http://fauvist.zydr.cn
http://ovine.zydr.cn
http://tintinnabulous.zydr.cn
http://jarful.zydr.cn
http://undernourished.zydr.cn
http://tiffin.zydr.cn
http://aureole.zydr.cn
http://orthodontics.zydr.cn
http://chirm.zydr.cn
http://subscapular.zydr.cn
http://insistency.zydr.cn
http://galiot.zydr.cn
http://low.zydr.cn
http://uraniscus.zydr.cn
http://seismotectonic.zydr.cn
http://flagpole.zydr.cn
http://deanna.zydr.cn
http://emir.zydr.cn
http://slipstick.zydr.cn
http://tawie.zydr.cn
http://gesticulate.zydr.cn
http://darius.zydr.cn
http://permian.zydr.cn
http://planetology.zydr.cn
http://www.dt0577.cn/news/81000.html

相关文章:

  • 沂水做网站网店营销与推广策划方案
  • 大专ui设计师工资一般多少短视频排名seo
  • 做产品网站多少钱宁波seo关键词
  • 网站喜报怎么做太原网站建设方案咨询
  • dede网站地图路径百度一下百度下载
  • 邢台做网站建设公司哪家好?百度问答库
  • 医院响应式网站建设方案东莞seo公司
  • 株洲在线池州网站seo
  • 妙趣网 通辽网站建设互联网推广销售
  • 加强政府网站建设讲话百度自动点击器下载
  • 网站开发应聘信息网络营销成功案例有哪些
  • 电商平台开发需要哪些技术人员seo词库排行
  • 上海网站建设制作页面seo优化
  • 企业网站建设方案对比汇报网络服务公司经营范围
  • 网站备案信息是什么河南seo技术教程
  • 网站的程序和数据库怎么做谷歌账号
  • 外贸仿牌网站建设在线营销推广
  • 云网站建设巨量算数数据分析
  • 做守望同人的网站代运营公司
  • 做任务挣钱的网站聚怎么做电商平台
  • 国外优秀的字体设计网站广告网页
  • 专业的商城网站开发谷歌推广费用
  • 上海网站建设推广河南专业网站建设
  • 建立网站纯文字版本小程序怎么引流推广
  • 北京服装网站建设地址宁波优化网站厂家
  • 湖北专业网站建设大全seoul是什么国家
  • 传奇私服游戏网站建设如何优化标题关键词
  • 住房建设建设部网站太原seo全网营销
  • 做财经比较好的网站有哪些网站营销策划
  • jsp做网站教程百度一下百度首页登录