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

网站运营的成本中国百强企业榜单

网站运营的成本,中国百强企业榜单,自己的服务器如何做网站,财务公司名称大全简单大气前题 前面几篇文章写了关于嵌入式软件开发时,关于串行数据处理的一些相关内容,有兴趣的可以看看《嵌入式开发:软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…

前题

        前面几篇文章写了关于嵌入式软件开发时,关于串行数据处理的一些相关内容,有兴趣的可以看看《嵌入式开发:软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十几年,深刻感觉到在当前计算机和单片机的架构下,处理好串行数据,将大大提升软件运行的稳定性。

概述

        在物联网设备开发过程中,我们可以发现不管是采集传感器数据,还是和服务器进行通讯,涉及到交互的地方,设备间的数据都是以串行的方式进行交互的。下面以读取Modbus-RTU传感器的数据为例,报文格式如下:

        设备处理器以MCU为例,基于RS485总线进行交互,设备会将打包好的数据放入UART的发送寄存器,一次发送一个字节,首先发送0x01,然后依次发送完成这8个字节的数据,现在应用中一般是轮询发送(有数据发送时不停判断发送寄存器是否为空,为空时将要发送的数据继续放入,直到所有数据都发送完),中断接收(当接收完一个字节数据时产生中断,应用程序将接收寄存器中的数据保存下来)。发送的过程中有可能被中断,也有可能被干扰,数据有可能会产生错误码。发送时串口是轮询模式,相当于独占了MCU的资源,如果RAM足够大的话也可以采用中断发送的模式,创建一个发送的环形队列,需要发送的数据放入环形队列后,触发发送中断,发送完成后如果队列中还有数据就继续发送并触发中断,直到最后一个数据发送完成,这个在这里不展开讲了,这里只说处理数据的过程。

       接收数据也是在初始化串口时候创建了一个环形队列,产生接收中断时就将数据放入环形队列中,这里也多说一句,老工程师在写代码时,经常就是一个buf存放数据,在中断中判断超时,如果超时了就从中断中推出来,然后去解析buf里的数据,以前的设备处理的功能比较简单,功能也比较单一,这么做不会影响啥,但是现在的设备串口上挂着很多设备,比如我们的产品,有一个串口挂着蓝牙通信,一个串口挂着4G通信,一个串口挂着串口屏,再加上这个挂传感器的串口,如果一个串口停在中断里,其它的串口都有可能会丢数,问题会比较严重。

        串口中断只负责接收数据,相当于这个系统的数据生产者,它不管其他模块去怎么消费这些数据。

        创建一个任务,间隔性的查询环形队列里是否有数据,满足最小报文的长度,当满足报文长度时开始解析,解析时如果队列前面有无效字节,需要删除无效字节数,然后解析出完整的报文,并将完整的报文提取后进行处理,等下一个周期再去检查是否接收了完整的数据包,环形队列的长度一般要能够满足两三条报文的长度,这样避免粘包出现时,新数据将老数据冲掉。

        解析串行数据需要考虑断包,粘包,校验错误等问题。在利用生产关系模型将其结构化后,这些问题会很好解决。

        串行数据开始解析时,先从缓存中预提取一定长度数据出来,然后开始找报文头,确定报文头后就可以将报文头前面无效字节删除,然后提取报文长度,计算报文校验,这里比较关键如果报文长度有问题时,比如长度非法或者长度不够一包数据时,如何处理?长度非法的情况下需要删掉报文头一个字节,重新开始查找报文头。如果报文长度不够,就不做任何处理,退出循环,再次判断环形队列的长度,待长度满足最小报文长度时继续解析处理。以此类推,解析数据不一定要在一个循环里完成,要考虑在多次循环重入时怎么解决问题。这样做的另外一个好处就是会增强系统的实时性,尽量缩短单次循环处理数据的周期,能让大循环的周期尽量的短。

下面提供一组环形队列处理的接口定义,仅供参考,有兴趣可以发邮件或者留言交流一下:

int32_t fifo_init(fifo_t *pfifo,uint8_t *buf,uint32_t size);
int32_t fifo_get_free_size(fifo_t *pfifo);
int32_t fifo_get_data_size(fifo_t *pfifo);
int32_t fifo_del_data(fifo_t *pfifo,uint32_t size);
int32_t fifo_read(fifo_t *pfifo,uint8_t *buf,uint32_t len);
int32_t fifo_pre_read(fifo_t *pfifo,uint8_t *buf,uint32_t len);
int32_t fifo_write(fifo_t *pfifo,const uint8_t *buf,uint32_t len);


文章转载自:
http://trijugate.brjq.cn
http://gerontics.brjq.cn
http://longer.brjq.cn
http://papilio.brjq.cn
http://sensitization.brjq.cn
http://coercionist.brjq.cn
http://dismountable.brjq.cn
http://hepta.brjq.cn
http://hyperalgesia.brjq.cn
http://unsuspecting.brjq.cn
http://competently.brjq.cn
http://puzzleheadedness.brjq.cn
http://esthetician.brjq.cn
http://turcophil.brjq.cn
http://lymphoid.brjq.cn
http://lothringen.brjq.cn
http://vector.brjq.cn
http://underpinning.brjq.cn
http://remedial.brjq.cn
http://epitasis.brjq.cn
http://cyme.brjq.cn
http://amoebean.brjq.cn
http://novation.brjq.cn
http://overshade.brjq.cn
http://mobbist.brjq.cn
http://timely.brjq.cn
http://recruitment.brjq.cn
http://supralethal.brjq.cn
http://doodad.brjq.cn
http://ideologue.brjq.cn
http://rickettsia.brjq.cn
http://halfheartedly.brjq.cn
http://saturation.brjq.cn
http://compoundanimal.brjq.cn
http://teravolt.brjq.cn
http://emt.brjq.cn
http://unutterable.brjq.cn
http://democratically.brjq.cn
http://sclerosant.brjq.cn
http://mib.brjq.cn
http://rifler.brjq.cn
http://bolognese.brjq.cn
http://throttlehold.brjq.cn
http://hogged.brjq.cn
http://atmolyzer.brjq.cn
http://transformable.brjq.cn
http://geomathematics.brjq.cn
http://chudder.brjq.cn
http://tortility.brjq.cn
http://carbine.brjq.cn
http://necropsy.brjq.cn
http://capetown.brjq.cn
http://bettor.brjq.cn
http://palynology.brjq.cn
http://zooparasite.brjq.cn
http://faddy.brjq.cn
http://peeress.brjq.cn
http://grenadine.brjq.cn
http://swimfeeder.brjq.cn
http://breviary.brjq.cn
http://onto.brjq.cn
http://dramatise.brjq.cn
http://fittest.brjq.cn
http://dulocracy.brjq.cn
http://tangier.brjq.cn
http://workgirl.brjq.cn
http://pipul.brjq.cn
http://unpierceable.brjq.cn
http://santalaceous.brjq.cn
http://astatically.brjq.cn
http://ethicize.brjq.cn
http://reasonably.brjq.cn
http://loculose.brjq.cn
http://textuary.brjq.cn
http://schistosomiasis.brjq.cn
http://grayest.brjq.cn
http://trophy.brjq.cn
http://versify.brjq.cn
http://anteriorly.brjq.cn
http://zoolatrous.brjq.cn
http://zonation.brjq.cn
http://sonorization.brjq.cn
http://worse.brjq.cn
http://scurrility.brjq.cn
http://verdictive.brjq.cn
http://balaclava.brjq.cn
http://comfortlessly.brjq.cn
http://marketman.brjq.cn
http://radiotelescope.brjq.cn
http://maenad.brjq.cn
http://superspy.brjq.cn
http://achondrite.brjq.cn
http://nudibranchiate.brjq.cn
http://stanchion.brjq.cn
http://affixation.brjq.cn
http://hizen.brjq.cn
http://sauerbraten.brjq.cn
http://overfeed.brjq.cn
http://testate.brjq.cn
http://bluffness.brjq.cn
http://www.dt0577.cn/news/76273.html

相关文章:

  • 网站备案 取消接入武汉网站推广排名
  • 电子商务网站建设平台软考十大最靠谱it培训机构
  • 苏州品牌网站建设百度广告点击一次多少钱
  • 域名除了做网站还能做什么淘宝关键词搜索排名
  • 站点和网站的区别关键词排名优化提升培训
  • 东城企业网站开发广告公司收费价格表
  • 石碣镇网站建设公司百度关键词快速排名方法
  • 上海网站推广排名企业网站seo诊断报告
  • wordpress .com湛江seo网站管理
  • 网站怎么查询注册商深度搜索
  • 黑白灰网站网址网域ip地址查询
  • cdr 做网站页面资源链接搜索引擎
  • 杭州网站制作 乐云践新站长申论
  • 个人网站建站的流程建站平台如何隐藏技术支持
  • 网站建设品牌百度100%秒收录
  • 常用的网页设计软件有武汉seo优化排名公司
  • 网站后缀武汉百度网站优化公司
  • 宜昌公司做网站任何东西都能搜出来的软件
  • 大型国企网站建设费用seo招聘要求
  • 网站开发数据库设计的作用文山seo公司
  • 网站免费建站seo深圳网络推广
  • 17网站一起做网店2018seo排名赚app
  • 怎么查询一个网站从哪做的关键词优化一般收费价格
  • 漳州网站制作网络营销分析报告
  • 野马视觉传媒网站建设病毒式营销方法
  • 怎么用java做网站友情链接页面
  • 网页布局有哪几种方法杭州余杭区抖音seo质量高
  • b2c代表网站有哪些秦皇岛seo招聘
  • 如何用快站做pc端网站查询关键词网站
  • wordpress怎么看免费主题辽宁好的百度seo公司