虽然只是报靶器,但不单单只是用来显示,既有无线通讯,也有人机交互界面。C或C++的界面开发我没做过,什么QT之类的都没用过,好在十几年前一直在使用Delphi开发MIS系统,所以还是抄起老本行用Delphi来开发。Delphi开发图形界面可谓是得心应手,非常方便,只是驱动的开发肯定不如C,那么我的计划是:
wiringPi实现底层驱动;
Delphi调用wiringPi的接口实现中断、I2C、SPI等功能;
Delphi实现图形交互界面。
当然,Delphi已经没了,只能用Lazarus或CodeTyphon来代替,开发起来没什么区别。安装的过程就不再重复了,网上有很多,一搜就能搜到。安装完成后打开IDE,直接显示出窗体,点击运行就可以看到一个带有窗体的程序了。
不过呢,这次是为了编写I2C和SPI的功能,wiringPi没有提供pascal使用的单元文件,不过Lazarus能够直接调用C/C++编译的lib文件,自己声明一下函数的定义就行了。要保证函数名称的大小写和参数的类型对应。
底层驱动可以调用,功能的实现就要靠自己了。为了验证I2C和SPI功能,我找了两个OLED来做实验,一个是I2C的,一个是SPI的。
两种OLED的操作方式一样,只是调用了不同的接口,所以父类的 通讯函数都是虚函数,在子类中实现具体的操作。
顺便在窗体上放上个定时器控件,设定1秒间隔,在事件中显示数字并刷新就可以了。
|