系統控制元件
# PinToo 控制元件使用(系統元件)
系統控制元件中包含了通訊連線使用的元件型別。
# 1. TfxBroadcastReceiver元件
- 引用單元 SystemClasses
廣播接收器元件。 可以接收設備發出的廣播資訊。
# 1.1. 屬性(Properties)
- TfxBroadcastReceiver元件主要屬性
屬性 | 功能說明 |
---|---|
BroadcastNodeName | 指定廣播數據標籤 |
BroadcastServiceName | 指定廣播動作標識 |
ReciverIsActive | 指定是否啟用全覆蓋廣播功能 |
# 1.1.1. BroadcastNodeName屬性
廣播數據標籤
fxBroadcastReceiver1.BroadcastNodeName := 'barcode_string';
# 1.1.2. BroadcastServiceName屬性
廣播動作標識。
Android有許多廣播標識,列舉幾個如下:
- 廣播:螢幕被關閉 Android.intent.action.SCREEN_OFF
- 廣播:螢幕已經被打開 Android.intent.action.SCREEN_ON
- 廣播:PDA掃瞄頭 android.intent.ACTION_DECODE_DATA
fxBroadcastReceiver1.BroadcastServiceName := 'android.intent.ACTION_DECODE_DATA';
# 1.1.3. ReciverIsActive屬性
# 1.2. 事件(Events)
- TfxBroadcastReceiver元件主要事件
事件 | 何時觸發 |
---|---|
OnReceiver | 當接收到指定的廣播時觸發 |
# 1.2.1. OnReceiver事件
接收到廣播數據后反饋。
PDA掃瞄資訊反饋
Procedure fxBroadcastReceiver1OnReceiver(AValue: string);
Begin
AddItem(AValue);//數據處理,AddItem是自定義的方法
End;
2
3
4
5
# 1.3. 方法(Methods)
- TfxBroadcastReceiver元件主要方法
方法 | 功能說明 |
---|---|
DoRegBroadcastReceiver | 註冊廣播接收器 |
# 1.3.1. DoRegBroadcastReceiver方法
此方法必需在窗體指令碼運行后執行。
Procedure fxRunFrameAfterScriptRun(Sender: TObject);
Begin
//註冊廣播事件
fxBroadcastReceiver1.DoRegBroadcastReceiver;
End;
2
3
4
5
# 2. TfxBroadcastSender元件
- 引用單元 SystemClasses
廣播發送元件。可自定義廣播標識、廣播數據標籤和內容。
# 2.1. 方法(Methods)
- TfxBroadcastSender元件主要方法
方法 | 功能說明 |
---|---|
DoSendMsg | 發送廣播訊息 |
# 2.1.1. DoSendMsg方法
演示發出一個自定義廣播。廣播標識為PinToo_ACTION_Test,數據標籤為BarCode,廣播內容為123456789的廣播。
fxBroadcastSender1.DoSendMsg('PinToo_ACTION_Test','BarCode','123456789');
# 3. TfxBluetooth元件
- 引用單元 ufxBluetooth
用作藍芽通訊,實現藍芽收發功能,可應用與藍芽電子稱、藍芽列印、藍芽聊天室等場景。
# 3.1. 方法(Methods)
- TfxBluetooth元件主要方法
方法 | 功能說明 |
---|---|
Init | 初始化藍芽設備 |
DiscoverDevices | 發現藍芽設備 |
PairedDevices | 已配置藍芽設備 |
Services | 獲取藍芽服務 |
Pair | 配對藍芽設備 |
UnPair | 取消藍芽配對 |
CreateServerSocket | 建立服務通道 |
CloseServerSocket | 關閉服務通道 |
FreeClientSocket | 釋放服務通道 |
SendData | 發送藍芽資訊 |
ReadData | 接收藍芽資訊 |
ManagerConnected | 獲取藍芽管理器狀態 |
# 3.2. 事件(Events)
- TfxBluetooth 元件主要事件
事件 | 何時觸發 |
---|---|
OnReceiveData | 當接收到資訊時觸發 |
# 3.2.1. OnReceiveData
接收到藍芽通訊數據后反饋。
//資訊反饋
Procedure Bluetooth1OnReceiverData(Sender: TObject;ServiceName,ServiceUUID,ReceiveData:string);
Begin
Showmessage(ReceiveData)
End;
2
3
4
5
# 4. TfxBluetoothLE元件
- 引用單元 SystemBluetoothComponents
用作Bluetooth Low Energy框架類的主要功能的包裝器的元件,例如TBluetoothLEManager,TBluetoothGattServer,TBluetoothLEDevice或TBluetoothGattService。
該TfxBluetoothLE元件提供低功耗藍芽等功能:
- 檢查正在運行您的應用程式的平臺是否支援運行低功耗藍芽客戶端,伺服器或同時運行這兩者,並讀取SupportsGattClient和SupportsGattServer的值。
- 使用DiscoverDevices發現可訪問的遠端設備。
- 使用DiscoverServices發現服務,並使用GetService或GetServices讀取服務。
- 使用ReadCharacteristic,GetCharacteristic或GetCharacteristics從遠端設備讀取特徵。
- 使用SubscribeToCharacteristic訂閱特徵,以便當特徵數據在提供特徵的遠端設備上更改時自動更新特徵數據。
- 使用WriteCharacteristic在遠端設備上寫特徵,或者使用BeginReliableWrite和ExecuteReliableWrite作為原子操作。
- 使用ReadDescriptor或GetDescriptors從遠端設備讀取描述符。
- 使用WriteDescriptor將描述符寫入遠端設備。
- 使用CreateService,CreateIncludedService,CreateCharacteristic,AddCharacteristic和UpdateCharacteristicValue提供服務和特徵。
您還可以使用諸如CurrentAdapter,CurrentManager或GattServer之類的屬性來訪問Bluetooth Low Energy框架類的基礎實體,以實現細粒度控制或高級功能。
# 5. TfxIdHTTPServer元件
- 引用單元 IdHTTPServer 一個基於INDY的HTTPServer元件。可以用它搭建HTTP伺服器。
下面我們用IdHTTPServer來實現簡單的WebService功能:
//啟用HTTPServer服務
Procedure fxButton1OnClick(Sender: TObject);
begin
if not fxIdHTTPServer1.Active then
begin
try
fxIdHTTPServer1.Bindings.Clear;
fxIdHTTPServer1.DefaultPort := 8806;
fxIdHTTPServer1.Active := True;
fxMemo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + 'HTTP列印服務 已啟動。')
except
fxMemo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + 'HTTP列印服務 啟動失敗。')
end;
end;
end;
//關閉HTTPServer服務
Procedure fxButton2OnClick(Sender: TObject);
Begin
fxIdHTTPServer1.Active := False;
fxIdHTTPServer1.Bindings.Clear;
fxMemo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + 'HTTP列印服務 已停止。');
End;
//功能實現
Procedure fxIdHTTPServer1OnCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
ReportType:String;
APathInfo,SQL:string;
str:String;
begin
if ARequestInfo.Command='POST' then
begin
AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Origin:*');
AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Headers:*');
AResponseInfo.CustomHeaders.Add('Access-Control-Allow-Method:*');
APathInfo := ARequestInfo.Document;
if APathInfo = '/opensql' then
begin
SQL :=ARequestInfo.Params.Values['SQL'];
if SQL='' then
begin
str := ('{"status":"error","data":"SQL內容不能為空!"}');
fxMemo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + 'SQL內容不能為空!');
AResponseInfo.ContentText := fxfun.URLEncode(str);
AResponseInfo.WriteContent;
Exit;
end;
fxRFDataSet1.OpenSQL(SQL);
fxMemo1.Lines.Insert(0, FormatDateTime('HH:NN:SS.ZZZ ', now) + '接收到的SQL內容:'+SQL);
end;
end;
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 6. TfxIdTCPClient元件
- 引用單元 IdTCPClient 該控制元件包裝了一個完整的TCP客戶端。
# 6.1. 屬性(Properties)
- TfxIdTCPClient元件主要屬性
屬性 | 功能說明 |
---|---|
BoundIP | 指定客戶端使用的IP地址 |
BoundPort | 指定當前連線的本地埠號 |
Host | 遠端主機名 |
Port | 指定遠端主機埠號 |
Socket | 連線時所用的socket |
# 6.1.1. BoundIP屬性
property BoundIP: string;
客戶端使用的IP地址。
# 6.1.2. BoundPort屬性
property BoundPort: Integer;
目前連線的本地埠號。
# 6.1.3. Host屬性
property Host: string;
遠端主機名。可以是IP地址,也可以是域名。
# 6.1.4. Port屬性
property Port: integer;
遠端主機埠號。
# 6.1.5. Socket屬性
property Socket: TIdIOHandlerSocket;
連線時所用的socket。
# 6.2. 方法(Methods)
- TfxIdTCPClient元件主要方法
方法 | 功能說明 |
---|---|
FastConnect | 打開客戶端連線 |
Connected | 目前連線是否可用 |
Disconnect | 關閉連線 |
SendData | 向連線寫入數據 |
# 6.2.1. FastConnect方法
procedure FastConnect;
打開客戶端連線。
# 6.2.2. Connected方法
function Connected: Boolean; virtual;
判斷目前連線是否可用 。
# 6.2.3. Disconnect方法
procedure Disconnect; virtual;
關閉連線。
# 6.2.4. SendData方法
procedure SendData(const AOut: string);
向連線寫入數據。
fxIdTCPClientLED.sendData('1'); //發送 1 指令給NodeMCU,點亮LED
# 7. TfxTTS 元件
元件用於呼叫設備的TTS語音庫播報語音。
# 7.1. 方法
# 7.1.1. SpeakOut
procedure SpeakOut(AText: String);
播放系統語音。
fxTTS1.SpeakOut('Hello');
# 8. TfxThreadTimer 元件
TfxThreadTimer 元件實現的功能與 TfxTimer 相同,與後者不同的是,前者的 OnTimer 是在另外一個執行緒中實現的,不佔用主執行緒,而後者的 OnTimer 是在主執行緒中實現的,如果在事件中執行了耗時的程式碼,則會導致主界面假死。
# 8.1. 屬性
屬性 | 功能說明 |
---|---|
Enabled | 是否啟用元件功能 |
Interval | 設定定時器觸發的時間間隔,以ms為單位 |
RunOnMainThread | 設定是否將定時器運行在主執行緒中 |
# 8.2. 事件
# 8.2.1. OnTimer
設定定時觸發的事件。