Hi Ghica,
thanks for your comments!!!
BLE service is development kit which is like "Bluefruit LE friend". After debugging this, here is what I found out and I understood partial root cause now.
Basically for Battery Service of GATT (please refer to :
https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.service.battery_service.xml), there could have three properties (READ, NOTIFY, WRITE), but only READ is mandatory based on above link. For my case, the BLE server device supported two properties, one is READ, the other is NOTIFY. see attached snapshot (Battery_service.png). If I use AI2 blocks (see blocks snapshot: read_battery_blocks.jpg), the request was treated as the type of NOTIFY properties always, instead of READ. For AI2 blocks, as I mentioned before, when using ReadIntValue blocks, there are 3 parameters, service_uuid, characteristic_uuid and intOffset, I filled out these two uuid based on spec, but not sure what the meaning of IntOffset? anyway, it seems that there is no way to differentiate "properties (read/notify) if based on two uuid parameters.
READ: for me, it means the server should return battery level once READ request is received.
NOTIFY: it means the client is registered as listener of Battery service on server, but there is no immediate return required, server will send NOTIFICATION i.e. when battery level is changed.
P.S: I used attached blocks and can register client (S7) as listener to receive battery level notification from server. But cannot read it immediately, which is my question.
Thanks again!
Z