基于lis3dh的简易倾角仪c源码_基于GO的Web前端开发实践

4bbad8f343ca36853b5339e4d46ab4e2.png

最近发布的Golang 1.11版本,新增了两个非常值得关注的内容:Go Modules 和 WebAssembly。我也是非常后知后觉的了解到此事,立刻去下载了新版尝试了一下。

作为一个偏向后端的语言,大家普遍更关心 Go Modules 的使用方法。不过本人倒是更在意WebAssembly,拿到新版后第一时间对该模块进行了尝试,编写了一个简易的页面3D展示功能。

d2cfacd6fbe3004321b2663cb75b77be.png

这是基于Go所编译的wasm代码运行效果截图。

测试地址为

Golang​liuqi0826.xicp.net:8888

开发目标:

1.诸如暴露几个接口给JS调用之类的无聊轮子就不想再造了,既然尝试就做些大胆点的尝试,选择一个GO不擅长的领域,譬如3D。

2.WASM不能直接调用API,所以开发中肯定会融入JS代码,尽可能少用JS,看看GO能做到什么样的地步。

开发准备:

1.首先获取最新版的GO,本人使用Windows进行开发。

建议编写bat文件方便编译

        SET GOOS=js
        SET GOARCH=wasm
        go build -o xxxxx.wasm xxxxxxxxxxx.go ......

2.查看官方文档,主要是syscall/js包的使用,建议结合源码查看。另外拷贝官方页面模板备用。

golang/go​github.com
51d3351293decebe8f8c3cae0aa36990.png
https://godoc.org/syscall/js​godoc.org

3.查看官方示例,以及两个教学视频。

stdiopt/gowasm-experiments​github.com
84bf6c6d5b121f8a732fcb05d0b9935d.png
https://www.youtube.com/watch?v=4kBvvk2Bzis&feature=youtu.be​www.youtube.com https://www.youtube.com/watch?v=iTrx0BbUXI4​www.youtube.com

4.准备一个足够简单的模型用于展示,这里使用了一个《崩坏3》的杂兵模型。

5.准备一个Web服务器,可能需要为wasm新增MIME类型,也可以用GO自行编写,编写方式参考官方WIKI。

开发过程:

1.细节掠过,该项目代码量不算大,大致文件如图。

3edcdbe384f02678572c56396c20c50f.png

2.因为是初次尝试,为避免不必要的复杂度增加,所有代码都归于main包。

3.GO对于web汇编的支持比预想中好,预想网络加载资源需要单开JS函数回调,后来发现可以直接使用HTTP包。

4.对于WebGL的调用还是略显蛋疼,本人最后没忍住,对API包了一层,算是个简单的binding,可以方便日后使用。

5.各种调试,查错,最终模型成功展示出来。

发开总结:

1.GO对于WebAssembly的支持远比我想象中好很多,本以为开发过程会与Flash的炼金术一样痛苦,结果开发过程竟然挺愉悦。

2.最终除了官方页面模板的JS代码外,没有额外编写一行JS,基本上可以在GO内完成整个项目。

3.现阶段开发工具对这类项目支持不算好,syscall/js包引用会报错,调试也很麻烦。

4.GO编译的wasm本体体积(即不包含其他代码,仅含有GO的运行时)大概接近2M,可以说具备一定竞争力。开发难度低于C/C++/Rust,可以适用于前端开发的节奏。但是完败于TS,毕竟人家是专攻这个领域的语言。另外C#以及JAVA等语言估计短期都难以看到在此领域的成果(C#应该根本就不会出,毕竟TS才是干这件事的),毕竟打包虚拟机后体积可能很惊人。

关于GO WebAssembly相关内容,本人也在学习中,如有写错也请多包涵,谢谢。

本文首发于知乎,转载请注明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: stm32f103是一款32位的ARM Cortex-M3微控制器,lis3dh是一种三轴加速度传感器。在使用这两者之间进行通信时,可以使用stm32f103标准库来编写lis3dh的驱动程序。 首先,在stm32f103上使用标准库进行外设的初始化。需要配置GPIO口和SPI总线,在SPI总线上设置stm32f103为主设备,将lis3dh设置为从设备。然后设置SPI的模式、数据大小、时钟极性等参数。 接下来,需要根据lis3dh的手册中定义的寄存器和命令来编写相应的函数。常见的函数包括读写寄存器、设置传感器的工作模式、设置输出数据的分辨率和频率等。这些函数可以根据需要进行封装,以便在主程序中调用。 在编写函数时,需要先通过SPI总线向lis3dh发送命令,然后再根据返回的数据进行相应的操作。可以使用标准库提供的函数来进行SPI的数据发送和接收。 最后,在主程序中调用编写的驱动程序函数,实现对lis3dh传感器的控制和数据读取。可以将读取到的数据进行处理,例如进行滤波、计算加速度的大小等等。 需要注意的是,在编写驱动程序时,要仔细查阅stm32f103和lis3dh的手册,了解各个寄存器的作用和配置方法。还要注意遵循标准库的使用规范,例如正确设置时钟和中断等。 总之,编写基于stm32f103标准库的lis3dh驱动程序需要熟悉stm32f103的外设初始化和数据传输方法,同时了解lis3dh传感器的通信协议和配置方法。通过合理的函数封装和调用,可以实现对lis3dh的控制和数据读取。 ### 回答2: 基于STM32F103标准库的LIS3DH驱动程序是一个用于控制和读取LIS3DH加速度传感器的软件。LIS3DH是一款低功耗、高精度的三轴加速度传感器,常用于测量物体的加速度、倾斜度和运动状态。 驱动程序首先需要初始化LIS3DH传感器。在初始化过程中,我们需要设置传感器的采样率、工作模式和传感器的测量范围。这些参数可以根据实际需求来设定。 初始化完成后,我们就可以开始读取传感器的数据。通过读取传感器的寄存器,我们可以获取到X、Y和Z轴方向上的加速度值。可以使用相应的公式将原始数据转换为物理量,如速度或位移。 此外,LIS3DH传感器还支持中断功能。我们可以设置传感器的阈值和时间窗口,当加速度超过阈值或在时间窗口内保持超过阈值时,传感器将触发中断。 驱动程序也提供了一些其他的功能,比如设置传感器的低功耗模式、使能或禁用传感器的各个轴,以及读取传感器的ID等。 总而言之,基于STM32F103标准库的LIS3DH驱动程序可以简化对LIS3DH传感器的控制和读取操作,使得开发者能够更方便地利用该传感器进行各种应用开发。 ### 回答3: 基于stm32f103标准库的lis3dh驱动程序通常分为几个关键部分:初始化、配置、读取数据和处理数据。 首先,在初始化部分,需要配置stm32f103芯片的GPIO和SPI接口,以及lis3dh芯片的寄存器,包括设置SPI模式、数据输出速率、传感器量程等。 其次,在配置部分,需要根据实际需求设置lis3dh芯片的工作模式、中断模式、中断阈值等。可以根据需要选择连续转换模式或单次转换模式,以及选择中断引脚触发方式,如加速度超过阈值或加速度方向改变等。 接下来,在读取数据部分,通过spi接口和lis3dh芯片通信,读取加速度数据寄存器的值。可以选择通过轴与轴之间的分辨率来调整数据的精度,同时可以根据应用的需求进行数据的滤波和校准处理。 最后,在处理数据部分,可以根据读取的加速度数据进行各种应用,如姿态检测、动作识别、晃动检测等。可以根据加速度数据的大小和方向进行判断和处理,并输出相应的结果。 总体来说,基于stm32f103标准库的lis3dh驱动程序主要涉及到芯片的初始化、配置、读取数据和处理数据等多个步骤。根据具体需求,可以结合相关的库函数和算法对驱动程序进行优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值