如何在html里加入验证码_如何把crc校验加入到对应的程序里?看高手怎么做

我们现在已经搞清楚了crc校验的算法,本文我就向大家具体讲解一下如何把crc校验加入到我们的程序里。

1 、crc校验使用原理

crc校验在程序中运行的原理主要可以分为以下几步。

第一步:主站发送数据前把要发送的数据进行crc校验,将要发送的数据和crc校验的结果一起发送给从站。

第二步:从站接收到主站发送的数据后对除去crc校验码以外的数据再次进行crc校验计算。

第三步:从站把自己算出来的校验码和从主站接收到的校验码进行比对,如果一样则说明接收到的是正确的数据,进行下一步程序。如果不一样则说明接收到的是错误的数据,重新进入等待接收状态。

第四步:如果接收到的是正确的数据,从站将要返回给主站的数据进行crc校验,并将返回数据与校验结果一并发回给主站。

2、程序的编写

此处我就用之前的向V区写入数值的程序来向大家演示如何将上面说的流程融入到整个程序中。这里我们程序的变化都在接收完成中断和子程序Write中大家可以着重看这两部分程序。

图2-1主程序

c3fbffd2ad9fda3548a34322d881eeb4.png

图2-1

图 2-2~图 2-4是接收完成中断

57ac3a93cf632b9614e9a35aa5b4b5aa.png

图 2-2

8e015e39c45a01e9916780181cae93ee.png

图2-3

daa03b473f8c6f5263d3c6dcd68a4df8.png

图 2-4

图 2-5crc校验

afd963201d94f432a9f10e413e5af52a.png

图 2-5

图 2-6~图 2-10子程序Write

5d943e41e291226fabb9ce7f31620929.png

图 2-6

22e0c1654bd5458e381cf51e7c2fd3b4.png

图2-7

13363bdaff7ee00be50febdcd786c843.png

图2-8

50b0e355d60c761e6d8fb6baf0e55f94.png

图2-9

7fba2fd2704b5225f070c472e5b37a6b.png

图 2-10

图 2-11发送完成中断

9856e123de2e95e4ba4662e2289a6a82.png

图 2-11

作者:技成培训网(马乐)版权为技成所有,未经同意盗取必究!

往期优秀文章回顾:

液压混合、机床电机、PID温控、恒压供水等1164个三菱PLC实用案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android安全与逆向之Dalvik虚拟机架构和如何执行程序以及JIT(即时编译)

1、Dalvik虚拟机架构和Java虚拟机的架构不同 1、Java虚拟机基于栈结构,需要频繁从栈读取或写入数据,这个过程需要更多的指令与内存访问次数,会消耗cpu时间 2、Dalvik虚拟机基于寄存器,数据访问通过寄存器…

cacti及其相关插件的安装

cacti是什么?1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系…

.net 测试工具类

fluentassertions QuickStart (替换Assert )https://github.com/dennisdoomen/fluentassertions/wiki Moq QuickStarthttps://github.com/Moq/moq4/wiki/Quickstart转载于:https://www.cnblogs.com/peteryu007/p/4081265.html

6张图,带你深入理解GitOps,真硬核!

大家好,我是小碗汤,今天分享一篇6张图深入理解GitOps,内容硬核,建议兄弟们收藏~在使用 K8s 的云原生应用中,Serverless,Devops 工具以及大量其他云技术。通常,基础设施代码和应用程序代码是分开…

css 字体加粗_HTML基础属性与CSS基础

有头发且有趣的码农万里挑一~ 40有料叔 | 一位有故事的程序猿1HTML基础属性1.class属性:用于定义元素的类名,如需为一个元素规定多个类,用空格分隔类名定义格式:2.name属性: 用于指定标签元素的名称。Name属性的值可以…

OPENSSL ENGINE机制

1. 概念 OpenSSL项目是一个开放源代码安全项目,它的目标是开发一个健壮的、商业级的、完整的开放源代码的工具包,用强大的加密算法来实现安全的Socket层(Secure Sockets Layer,SSL v2/v3)和传输层的安全性…

mongoDB的副本机制

主机192.168.99.80[rootmaster ~]# grep -v "^#" /etc/mongod.conf | grep -v "^$" bind_ip 192.168.99.80 fork true pidfilepath /var/run/mongodb/mongod.pid logpath /var/log/mongodb/mongod.log unixSocketPrefix /var/run/mongodb dbpath /mo…

文件系统一些概念【更新完毕】

煮酒品茶:文章大多摘自《分布式文件系统研究》《构建高性能WEB站点》《大型网站技术架构》文件系统是操作系统的一个重要组成部分,通过对操作系统所管理的存储空间的抽象,向用户提供统一的、对象化的访问接口,屏蔽对物理设备的直接…

.NET下如何拦截鼠标、键盘消息?Win32NET来帮你

Win32NET是一个Win32API的.NET下封装的类库,包含:1: 常用win32的API的net封装2:鼠标、键盘、热键hook钩子模块,3:模拟键盘输入文字(支持各种字符文字、不同语言的文字)、模拟鼠标点击移动滚动等…

linux之如何快速在文本里面写入内容

一、创建文件 touch file 二、写入内容 echo "hello word">>file 图片举例 还有 echo "hello">file 是把之前的内容覆盖,然后内容只有hello 如图: 最后: 无论是echo "hello">file 还是 echo&quo…

css实战手册第四版 pdf_你真的了解CSS继承吗?看完必跪

也许你瞧不起以前的 css ,但是你不该再轻视眼下的 css 。近年来 css 的变量系统已逐步得到各大浏览器厂商支持,自定义选择器等强势袭来,嵌套系统/模块系统也在路上...为了更好的掌握 css 这门语言,很有必要把之前零零散散的 css 知…

hibernate级联操作详解

2019独角兽企业重金招聘Python工程师标准>>> 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) l Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade: none,all,save-update,delete, lock,ref…

Oracle数据库的备份与恢复

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。一、 导出/导入(Export/Import)…

关于Windows® API Code Pack for Microsoft® .NET Framework

相比之前的操作系统,Window 7(or Vista)提供了很多新特性,我们在应用实现中可以利用这些特性来提升用户体验。 这些特性主要包括以下几个方面: Shell EnhancementsDirectX TechnologiesApplication Restart and Recove…

出门就背他了!可伸缩的背包,自由变大变小,还有防盗功能!

▲ 点击查看出门能不背包就不背包,几乎是小爆身边每个男生的人生信条。不背包时,两手空空一身轻,潇洒有型。但一旦到了必须背包,比如五一外出回家或旅游的时候,男同胞们翻箱倒柜找出来的背包,大多都是这种双…

C#实现网页加载后将页面截取成长图片 | Playwright版

前言如何将网页生成预览图?要实现这个功能,可以用WebBrowser组件模拟浏览器,或者使用系统浏览器访问网页,再进行截图操作。但是,这样需要编写大量的控制代码。工欲善其事,必先利其器!利用Playwr…

Android安全与逆向之Dex动态加载

Dex动态加载是为了解决什么问题? 在Android系统中,一个App的所有代码都在一个Dex文件里面。 Dex是一个类似Jar的存储了多个Java编译字节码的归档文件。 因为Android系统使用Dalvik虚拟机,所以需要把使用Java Comp…

python链接mysql报错2003_Python连接Mysql报错问题解决

import MySQLdb #打开数据库 db MySQLdb.connect("127.0.0.1","root","123456","testdb",3306) #使用corsor()方法获取操作游标 cursor db.cursor() #使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") #使…