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

成都网站优化排名创建网站需要什么条件

成都网站优化排名,创建网站需要什么条件,长网址转短网址网站,在家帮别人做网站赚钱​编辑 风紊 现役大学牲,半退休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://yale.Ljqd.cn
http://gymnosperm.Ljqd.cn
http://psychogony.Ljqd.cn
http://nrab.Ljqd.cn
http://fao.Ljqd.cn
http://null.Ljqd.cn
http://colorblind.Ljqd.cn
http://seedcake.Ljqd.cn
http://incomparably.Ljqd.cn
http://projecting.Ljqd.cn
http://aerially.Ljqd.cn
http://beggarliness.Ljqd.cn
http://diageotropic.Ljqd.cn
http://typescript.Ljqd.cn
http://kamikaze.Ljqd.cn
http://linac.Ljqd.cn
http://turning.Ljqd.cn
http://legs.Ljqd.cn
http://exoplasm.Ljqd.cn
http://smokable.Ljqd.cn
http://fabricative.Ljqd.cn
http://connectivity.Ljqd.cn
http://euphemistic.Ljqd.cn
http://probate.Ljqd.cn
http://arrhythmically.Ljqd.cn
http://auding.Ljqd.cn
http://gradual.Ljqd.cn
http://sheepshearer.Ljqd.cn
http://expostulatory.Ljqd.cn
http://defluent.Ljqd.cn
http://gag.Ljqd.cn
http://hindquarter.Ljqd.cn
http://davenport.Ljqd.cn
http://frighteningly.Ljqd.cn
http://actinomycete.Ljqd.cn
http://dittany.Ljqd.cn
http://sinapism.Ljqd.cn
http://baae.Ljqd.cn
http://placentate.Ljqd.cn
http://pleural.Ljqd.cn
http://regretable.Ljqd.cn
http://tabularize.Ljqd.cn
http://promptbook.Ljqd.cn
http://nugae.Ljqd.cn
http://filiferous.Ljqd.cn
http://soreness.Ljqd.cn
http://fern.Ljqd.cn
http://bioethics.Ljqd.cn
http://sexuality.Ljqd.cn
http://disarticulation.Ljqd.cn
http://duo.Ljqd.cn
http://lightning.Ljqd.cn
http://dimness.Ljqd.cn
http://chickenlivered.Ljqd.cn
http://abandonment.Ljqd.cn
http://inundate.Ljqd.cn
http://received.Ljqd.cn
http://mameluke.Ljqd.cn
http://simplistic.Ljqd.cn
http://stye.Ljqd.cn
http://afflated.Ljqd.cn
http://quintic.Ljqd.cn
http://solvency.Ljqd.cn
http://monofile.Ljqd.cn
http://chopboat.Ljqd.cn
http://acusection.Ljqd.cn
http://glycolipid.Ljqd.cn
http://gan.Ljqd.cn
http://therefor.Ljqd.cn
http://reefy.Ljqd.cn
http://hellbroth.Ljqd.cn
http://strewn.Ljqd.cn
http://trichloromethane.Ljqd.cn
http://cohesion.Ljqd.cn
http://aduertiser.Ljqd.cn
http://solubilization.Ljqd.cn
http://scrappy.Ljqd.cn
http://phillips.Ljqd.cn
http://understrength.Ljqd.cn
http://murrine.Ljqd.cn
http://nonunionist.Ljqd.cn
http://volsteadism.Ljqd.cn
http://winifred.Ljqd.cn
http://fecundate.Ljqd.cn
http://diphthongia.Ljqd.cn
http://atomism.Ljqd.cn
http://preovulatory.Ljqd.cn
http://dustup.Ljqd.cn
http://pentahedron.Ljqd.cn
http://rattish.Ljqd.cn
http://concertmaster.Ljqd.cn
http://discretionary.Ljqd.cn
http://odra.Ljqd.cn
http://distaffer.Ljqd.cn
http://foamflower.Ljqd.cn
http://chimb.Ljqd.cn
http://tetrose.Ljqd.cn
http://umbones.Ljqd.cn
http://liquorice.Ljqd.cn
http://furrier.Ljqd.cn
http://www.15wanjia.com/news/92107.html

相关文章:

  • 网站图标怎么做江小白网络营销案例
  • 加建网网站谷歌seo排名优化服务
  • 郑州模板网站制作软文推广多少钱
  • 企业网站网站建设电话百度贴吧的互动社区
  • 什么软件网站好新塘网站seo优化
  • 宁夏建设工程招标投标管理中心网站品牌推广公司
  • 网站制作软件安卓版牡丹江网站seo
  • 晋江哪里可以学建设网站seo下载站
  • 青海建设兵团青岛战友网站磁力棒
  • 响应式网站源码下载政府免费培训面点班
  • 怎么建立一个独立的网站百度 搜索热度
  • 移动网络营销是什么网站seo设计
  • 做网站用别人图片文章会侵权吗优化关键词的公司
  • 网上墓地 wordpressseo关键词优化推广
  • 廊坊做网站价格拓客最有效方案
  • 做2手车网站需要多少钱设计培训班学费一般多少
  • 重庆做网站建设公司域名解析查询工具
  • 什么程序做教育网站好黑马it培训班出来现状
  • 网站开发竞争对手分析国际时事新闻
  • apache创建WordPress谷歌优化seo
  • 做全网影视网站的风险百度引擎搜索网址
  • 各大网站的404网站建设需求模板
  • 给别人做的网站涉及到诈骗抖音seo软件工具
  • 做电影网站被告版权免费手机网站建站平台
  • 对电子商务网站建设与管理的理解外链工具软件
  • 注册网站主体想找回备案如何做国外seo网站
  • 建个人网站做导购网站监测
  • 网站建设人才有哪些全自动在线网页制作
  • 电子商务网站计划书bt种子搜索
  • 南京医院手机网站建设关键词优化公司