这里实现用 Windows x86 平板电脑控制小灯泡亮度。
硬件方面在我们最初实验设备【参考1】的基础上增加一个蓝牙模块(这里建议使用蓝牙的朋友选用 HC06系列的,和HC05的不同,这个系列只有Slave的功能,但是个人感觉HC06更容易搜索连接上,我用HC05的时候每次都需要重新搜索配对设备,但是HC06上不用),用来和Windows平板进行通讯。
代码方面,Arduino使用的程序非常简单,将串口收到的char当作PWM值直接输出。程序使用了2个串口,一个是通常的USB,同PC进行通讯,主要是为了方便Debug;真正工作的是另外一个进行蓝牙通讯的串口。
int n=255; void setup() { Serial.begin(9600); Serial1.begin(9600); pinMode(6,OUTPUT); //该端口需要选择有#号标识的数字口 } void loop() { char c; while (Serial.available() > 0) { c=Serial.read(); analogWrite(6,c); Serial.println(c); } while (Serial1.available() > 0) { c=Serial1.read(); analogWrite(6,c); Serial.println(c); } }
上位机使用的是Delphi 2010,使用控件很简单即可完成编程。
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, iComponent, iVCLComponent, iCustomComponent, iPositionComponent, iScaleComponent, iKnob, iSevenSegmentDisplay, iSevenSegmentBinary, iSevenSegmentInteger, StdCtrls, CPortCtl, CPort, Buttons; type TForm2 = class(TForm) iKnob1: TiKnob; iSevenSegmentInteger1: TiSevenSegmentInteger; ComPort1: TComPort; Button1: TButton; Button2: TButton; procedure iKnob1PositionChange(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin ComPort1.ShowSetupDialog; end; procedure TForm2.Button2Click(Sender: TObject); begin if ComPort1.Connected then begin ComPort1.Close; Button2.Caption:='Connect'; end else begin ComPort1.Open; ComPort1.WriteStr(chr(0)); Button2.Caption:='Disconnect'; end end; procedure TForm2.FormActivate(Sender: TObject); begin iKnob1.Width:=Form2.Width; end; procedure TForm2.iKnob1PositionChange(Sender: TObject); var c:byte; begin c:=trunc(iKnob1.Position); iSevenSegmentInteger1.Value:=c; if Comport1.Connected then begin ComPort1.Write(&c,1); end; end; end.
上位机完整代码下载
工作的视频:
http://www.tudou.com/programs/view/yE4EHhUFcvU/?resourceId=414535982_06_02_99
最后说点其他的:除了Apple和各式各样的 Anrdoid平板电脑,x86的Windows平板也在崛起。
相比之下,使用Windows平板编程有如下优点:
1. 编程简单。工具方面Delphi VB VC 都是非常成熟的工具,能在普通PC上运行的程序,即可顺利移植到Windows平板上(甚至可以说‘移植’这个词不合适,因为不用任何改动直接放上去即可);
2. 发布简单。从时效性上来说,不需要发布到什么市场,也不需要什么审核,各种方法让对方拿到即可运行;
3. 周边设备多多,比如:各种摇杆方向盘,价格也比Apple专用的低很多;
4. 程序运行非常稳定,除非程序有错误,否则根本不会出现那种莫名其妙的“闪退”;
此外,从我的实践的角度来说,Windows 平板目前还有如下的缺点:
1. Windows本质上是给有鼠标的机器运行的,而不是触摸类的设备。这两者在精度上差别很大,传统的Window的各种控件,默认的调用者也都是鼠标,如果直接用触摸操作起来很困难,也容易误操作。因此,我用普通台式机做平板程序的感受是:你一定要把你的用户当成视力有困难的人,能调大的菜单或者按钮一定要做到最大…….
2. 目前比较缺少Windows x86平板方面的中文资料,在使用板载的各种传感器时,缺少资料
参考:
1. http://www.lab-z.com/mos%E6%8E%A7%E5%88%B6%E5%B0%8F%E7%81%AF%E6%B3%A1%E7%9A%84%E5%AE%9E%E9%AA%8C/ MOS控制小灯泡的实验