把灵龟八法程序改为了嵌入式芯片

之前基于兴趣,再业余时间完成灵龟八法桌面的程序开发后,感觉实际应用起来仍然不算简便。真正的针灸师再治疗时不会去看手机查穴位,比较靠谱的方式是做成一个嵌入式产品,就想一个台历时钟一样,下针时扫一眼即可。

按照这个想法说干就干,调研了下技术框架,朋友推荐了nanoframework,这个是用 .NET封装的嵌入式框架,正适合我的技术路线。芯片选用目前便宜、功能强大和流行的ESP32,正好nanoframework也是支持这款芯片的。

买来芯片后开始动手却发现嵌入式开发和桌面开发有很大的不同。首先面临第一个问题是开发板芯片和OLED屏幕接线,买的第一个OLED是SPI协议线比较多没搞定。后来换成了一个IIC协议的OLED(一共4根线)才成功点亮屏幕。

再一个问题就是移植程序,发现之前用.NET CORE架构写的程序很多class和方法,嵌入式是不支持的,特别是计算天干地支的中国历不支持,开始尝试把底层用到的方法做移植,如找了用到的中国历中用到的方法的源代码,但是发现很多方法是一个套一个,所以这个方法放弃了。然后想到一个方法是通过网络方式获取最终计算结果,嵌入式只做显示,但是这又涉及到需要芯片进行网络连接,我更希望他是本地单机的不依赖网络,这样操作更简单更稳定,所以这个方法没有做尝试。最后想到的一个方法是把一天12个时辰的穴位通过之前的桌面程序计算好结果,并把结果输出到txt文件里存储,最后拷贝到芯片存储里。但这个方式遇到的难题是芯片容量只有4m,所以把输出结果的穴位汉字用中间的计算结果数字代替,然后把一部分计算逻辑写在芯片程序里,最后终于可以正确输出穴位结果了。

最后遇到的一个问题是最常见的系统时间,嵌入式中默认是无法获取到的,单独买了个一个RTC时间存储器,并增加相关代码才得到时间。但可能存在问题是一旦电池没电了芯片里存储的时间就会失效,导致无法使用。

后面还要做的工作是通过3Dmax设计一个外壳,再把线路焊接再芯片上,最后进行一个组装,然后基本原型就出来了。

b9ed5561-65f0-4ce6-9330-432043c99dcd

posted on 2023-03-24 14:05  学中医的程序员  阅读(18)  评论(0编辑  收藏  举报  来源

导航