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

哪里可以免费建网站广西建设工程质量检测协会网站

哪里可以免费建网站,广西建设工程质量检测协会网站,做网站要学会什么语言,河南智慧团建网站登录Electron使用WebAssembly实现CRC-16 MAXIM校验 将C/C语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-16 MAXIM格式校验的方式。 CRC-16 MAXIM校验函数WebAssembly源文件 C语言实…

Electron使用WebAssembly实现CRC-16 MAXIM校验

将C/C++语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-16 MAXIM格式校验的方式。

CRC-16 MAXIM校验函数WebAssembly源文件

C语言实现CRC-16 MAXIM格式校验的介绍见:《C语言CRC-16 MAXIM格式校验函数》

选择上面介绍文章中的uint16_t PY_CRC_16_T8_MAXIM_i(uint8_t *di, uint32_t len)校验函数,建立一个新文件PY_CRC_16_T8_MAXIM_i.cc:

#ifndef EM_PORT_API
#	if defined(__EMSCRIPTEN__)
#		include <emscripten.h>
#		if defined(__cplusplus)
#			define EM_PORT_API(rettype) extern "C" rettype EMSCRIPTEN_KEEPALIVE
#		else
#			define EM_PORT_API(rettype) rettype EMSCRIPTEN_KEEPALIVE
#		endif
#	else
#		if defined(__cplusplus)
#			define EM_PORT_API(rettype) extern "C" rettype
#		else
#			define EM_PORT_API(rettype) rettype
#		endif
#	endif
#endif#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>EM_PORT_API(void *) mymalloc(uint32_t size) {return malloc(size);
}EM_PORT_API(void) myfree(void * ptr) {free(ptr);
}EM_PORT_API(uint16_t) PY_CRC_16_T8_MAXIM_i(uint8_t *di, uint32_t len)
{uint16_t crc_poly = 0xA001; //Bit sequence inversion of 0x8005uint16_t data_t = 0; //CRC registerfor(uint32_t i = 0; i < len; i++){data_t ^= di[i]; //8-bit datafor (uint8_t j = 0; j < 8; j++){if (data_t & 0x0001)data_t = (data_t >> 1) ^ crc_poly;elsedata_t >>= 1;}}return data_t ^ 0xFFFF;
}

这个文件有三个函数导出,前两个是获取和释放内存的函数,后一个就是CRC-16 MAXIM校验函数的导出。

将这个文件进行WebAssembly编译,就会得到两个库文件:
在这里插入图片描述

将这几个文件拷贝到后面建立的Electron工程目录,再进行调用。

Electron调用WebAssembly CRC-16 MAXIM函数演示源文件

下载Electron的Hello World!例程,并实现正常运行:
在这里插入图片描述

然后将前面的3个WebAssembly相关文件,放到例程根目录。再引入一个jQuery库。编写index.html文件如下:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --><link href="./styles.css" rel="stylesheet"><title>Hello World!</title><script>window.$ = window.jQuery = require('./js/jquery-3.3.1.min.js');</script></head><script src="PY_CRC_16_T8_MAXIM_i.js"></script><script src="./mainprocess.js"></script>  <body><h1>Hello World!</h1>We are using Node.js <span id="node-version"></span>,Chromium <span id="chrome-version"></span>,and Electron <span id="electron-version"></span>.<!-- You can also require other files to run in this process --><script src="./renderer.js"></script></body>
</html>

主要修改部分为引入了jQuery,引入了PY_CRC_16_T8_MAXIM_i.js以及引入了mainprocess.js,mainprocess.js是在例程根目录下新建的工程文件,内容如下:

// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// All of the Node.js APIs are available in this process.//增加当前运行状态和当前运行进程/函数信息,控制不产生误触发
window.name="mainwindow";   $(document).ready(function(){Module.onRuntimeInitialized = function() {console.log(Module);}setTimeout(function(){var count = 8;var ptr = Module._mymalloc(count);for (var i = 0; i < count; i++){Module.HEAP8[ptr + i] = 1+i;}console.log(Module._PY_CRC_16_T8_MAXIM_i(ptr, count));Module._myfree(ptr);},2000);   //Delay is a must for Module initialized! });process.on('uncaughtException', function (){});

mainprocess.js实现了WebAssembly库文件的导入和使用,Module._mymalloc用于申请内存空间,Module._myfree用于释放内存空间,Module.HEAP8[ptr + i] = 1+i;用于给申请到的内存空间从1开始赋值,这里堆空间为8个字节,因此赋值从1到8。Module._PY_CRC_16_T8_MAXIM_i(ptr, count)则进行CRC-16 MAXIM校验函数的调用,提供了内存指针和要校验的字节数量。

整个Electron工程环境的文件如下所示:
在这里插入图片描述

Electron调用WebAssembly CRC-16 MAXIM函数演示效果

通过在控制台输入 npm start执行Electron工程,打开console显示:
在这里插入图片描述

15119是打印出的CRC校验结果,十六进制值为0x3B0F, 通过在线工具比较验证:
在这里插入图片描述

Electron使用WebAssembly实现CRC-16 MAXIM校验演示工程下载

Electron Demo工程下载,包含已编译后的WebAssembly库文件:
在这里插入图片描述

–End–


文章转载自:

http://aBGus2el.ydyjf.cn
http://6zIN537Q.ydyjf.cn
http://CZ8aRIuf.ydyjf.cn
http://Ex5ZQtAh.ydyjf.cn
http://A8zJLKBx.ydyjf.cn
http://HRQEuchT.ydyjf.cn
http://2YakV1C4.ydyjf.cn
http://IhcF1o1i.ydyjf.cn
http://fDaeFGKQ.ydyjf.cn
http://xwSisDIO.ydyjf.cn
http://ZaHlPJdC.ydyjf.cn
http://1A6BQKLc.ydyjf.cn
http://QENrxCdn.ydyjf.cn
http://cn7HWE6P.ydyjf.cn
http://C4PRBssz.ydyjf.cn
http://TpuTYCjL.ydyjf.cn
http://JKdSWkQt.ydyjf.cn
http://ZYtgfxmA.ydyjf.cn
http://1o0yL65t.ydyjf.cn
http://r4t7q4hW.ydyjf.cn
http://odMrFbXc.ydyjf.cn
http://O8WU0ga6.ydyjf.cn
http://hDl7TIGP.ydyjf.cn
http://3JEbzJdI.ydyjf.cn
http://r47VuleG.ydyjf.cn
http://fG0zh1XX.ydyjf.cn
http://wm93FmaR.ydyjf.cn
http://HfFDxoTz.ydyjf.cn
http://C4yZvP83.ydyjf.cn
http://Wk6CYBFH.ydyjf.cn
http://www.dtcms.com/wzjs/774545.html

相关文章:

  • 做网站有意思吗网站信息化建设建议书
  • 无忧网站建设成都电脑培训班哪里有
  • 平台网站建设需要什么技术成都网上商城网站建设
  • 学习建设网站需要多久晋州住房保障建设局网站
  • 如何制作一个公司网站wordpress 插件表单 写入数据库
  • 服装网站建设竞争对手调查分析中山市城市建设档案馆网站
  • 为什么最近好多网站维护个人网站设计总结
  • 南通专业网站排名推广中国建设建设工程造价管理协会网站
  • 开发wap网站 转企业管理软件系统有哪些
  • 一个网站怎么做聚合王璞网站开发实战答案
  • 如何制作一网站做再生资源的网站有哪些
  • 德州网站开发培训wordpress表单提交显示插件
  • 百度统计会对原网站产生影响吗人才引进从事网站建设
  • 泉州做网站便宜电子商务网站建设运营
  • 做项目搭建网站 构建数据库wordpress点击图片
  • 集团企业网站建设文案免费游戏网页入口
  • 做投标的在什么网站找信息上海市各区建设局网站
  • 蓝色企业网站手机版织梦模板想建设网站前期调研报告如何写
  • 商务网站建设与维护(专21春)dw做网站一般是多大的尺寸
  • 梧州建设厅官方网站同城分类信息网站建设
  • 义乌国贸学校网站建设世界杯网络竞猜
  • 金华网站建设电话wordpress如何添加关键词和描述
  • html制作静态网站模板网站代码结构
  • 响应式网站改为自适应国际实时新闻
  • 毕业设计网站开发类题目地域名网址ip查询
  • 最精品网站建设10大设计师网站
  • 广州智能模板建站wordpress安装空白
  • 制作 网站 盈利网站主页设计素材
  • 扬州市建设局网站广州顺德网站设计
  • 电脑店免费建站织梦网站为什么容易被注入