導航:首頁 > 操作系統 > android開發協議

android開發協議

發布時間:2023-06-07 08:00:41

㈠ 什麼是安卓協議

安卓協議是 手機端和手機操作系統之間的一個運行,交換數據,對等的一個計算機內部程序稱作「協議」這個協議程序是系統和機器之間的一個重要對介面憑證和工式。其實就是安卓系統允許什麼樣的手機,什麼樣的程序,以什麼要求來運行這個程序的一個限定。

㈡ 安卓wifi開發,要使用modbus協議,請問該怎麼使用

"你好 想問你一個問題~如果我用wifi使用socket發送讀寫寄存器命令,wifi端用rtu能實現嗎?還是必須用modbus/tcp?"

可以. MODBUS其實可以從硬體層與軟體層來看 . 硬體層就是通訊的媒介, 一般就是CAT網線或者是RS485這兩種居多.

軟體層面則分為三個類別, 1: MODBUS TCP(可簡單理解為加了一個封包頭的MODBUS命令)
2. MODBUS RTU (簡單理解為具有CRC校驗機制的MODBUS令令) 3. MODBUS ASCII (與RTU相同, 只是命令改為ASCII明碼)

再回來看您的問題, WiFi是基於SCOKET也就是TCP方式通訊. 這只是一條道路, 只要MODBUS主機與MODBUS從機事先說好了, 兩者都用RTU(具有CRC校驗的方式)做通訊, 就可以正常的通訊.
這種方式, 一般俗稱為 "RTU OVER TCP" 的MODBUS協定. 即把RTU的格式直接透過SOCKET發送或接收, 就不像MODBUS TCP帶前特定的包頭了.

另外, 也有人利用UDP來傳遞MODBUS命令的. 也是OK的. 總之, 硬體層與軟體層只要主從機間一致了. 都能通訊上的. 唯一的差別是與其它MODBUS設備的兼容度問題了. 最通用也就是兼容性最高的, 就是 "MODBUS TCP" 與 "MODBUS RTU" 這兩種了.

android bluetooth hid協議的開發求助

Android Bluetooth HID實現詳解


Android 關於藍牙的部分使用的是BlueZ協議棧。但是直到目前2.3.3都沒有擴展HID的profile,只是實現了最基本的Handset和d2dp的profile,所以我們的工作涉及到從應用到jni三層的修改,具體修改文件如圖所示,綠色表示新建的類,橙色表示修改的類。

一. 本地層


路徑:framework/base/core/jni/

參照android_server_BluetoothA2dpService.cpp新建android_server_bluetoothHidServer.cpp。該類中主要是通過dbus對bluez協議棧的訪問,dbus 的通用方法都在android_bluetooth_common.cpp中實現,我們做的僅僅是通過dbus_func_args_async調用到bluez提供的input介面。

主要實現以下兩個方法函數:

static jboolean connectSinkNative(JNIEnv *env, jobject object, jstring path) {


#ifdef HAVE_BLUETOOTH


LOGV(__FUNCTION__);


if (nat) {


const char *c_path = env->GetStringUTFChars(path, NULL);



bool ret = dbus_func_args_async(env, nat->conn, -1, NULL, NULL, nat,


c_path, "org.bluez.Input", "Connect",


DBUS_TYPE_INVALID);



env->ReleaseStringUTFChars(path, c_path);


return ret ? JNI_TRUE : JNI_FALSE;


}


#endif


return JNI_FALSE;


}



static jboolean disconnectSinkNative(JNIEnv *env, jobject object,


jstring path) {


#ifdef HAVE_BLUETOOTH


LOGV(__FUNCTION__);


if (nat) {


const char *c_path = env->GetStringUTFChars(path, NULL);



bool ret = dbus_func_args_async(env, nat->conn, -1, NULL, NULL, nat,


c_path, "org.bluez.Input", "Disconnect",


DBUS_TYPE_INVALID);



env->ReleaseStringUTFChars(path, c_path);


return ret ? JNI_TRUE : JNI_FALSE;


}


#endif


return JNI_FALSE;


}

這里要注意將該文件添加到AndroidRuntime.cpp和Android.mk中,否則不會編譯到動態庫中。

此部分編譯後最終生成libandroid_runtime.so並替換到system/libs下

二.Framework的java部分

路徑framework/base/java/android/server/中添加BluetoothHidService.java文件

路徑framework/base/java/android/bluetooth/中添加BluetoothHid.java和IBluetoothHid.aidl文件。


interface IBluetoothHid {


boolean connect(in BluetoothDevice device);


boolean disconnect(in BluetoothDevice device);


int getState(in BluetoothDevice device);


boolean setPriority(in BluetoothDevice device, int priority);


int getPriority(in BluetoothDevice device);


}

BluetoothHid.java中主要的兩個方法connect和disconnect間接地通過aidl訪問BluetoothHidService。這里主要是實現跨進程並為上層提供可直接訪問的方法。

由此framework的主要部分打包生成framework.Jar並最終部署到system/framework里。

三.應用(Settings.apk)

最後需要修改應用部分,應用部分的修改點比較分散,不想框架層那樣整塊模仿A2DP的樣子那麼方便,但也不是說jni部分有多麼容易。反而對於我這種對C語言不熟悉的人來說,修改jni是最頭疼得事了。好在藍牙HID這部分框架層的修改都是整塊進行的,理解上還算比價容易。

總的來說在Settings.apk中要修改的文件主要是這么幾個:

LocalBluetoothProfileManager.java這里主要提供一個HID的profile以便應用層訪問。建一個HIDProfile的class調用framework中的BluetoothHID。實際上就是通過bender機制調用了BluetoothHidService。

CashedBluetoothDevice中添加顯示藍牙鍵盤的圖標,BluetoothPairingDialog中則需要添加一段藍牙配對驗證處理的代碼,我是參照i9000中先彈出一個隨機數,然後在鍵盤中敲入相同的隨機數即配對成功,具體實現如下:


// HID


if (isDeviceKeyboard(mDevice)) {


String pin = String.format("%06d", Long.valueOf(Math


.abs(new Random().nextLong() % 1000000L)));


mPairingView.setVisibility(View.GONE);


messageView.setText(getString(


R.string.bluetooth_enter_keyboard_pin_msg, pin, name));



byte[] bytePin = BluetoothDevice.convertPinToBytes(pin);


if (bytePin != null) {


mDevice.setPin(bytePin);


}


}


……


}

轉載

閱讀全文

與android開發協議相關的資料

熱點內容
如何限制手機app的使用 瀏覽:307
安卓華為手機怎麼恢復桌面圖標 瀏覽:956
我的世界電腦版伺服器地址在哪找 瀏覽:533
違抗了命令 瀏覽:256
安卓如何實現拖拽放置 瀏覽:91
凈資產收益率選股指標源碼 瀏覽:599
血壓力感測器計算公式單片機 瀏覽:466
全網介面vip影視解析源碼 瀏覽:916
如何破解伺服器遠程密碼錯誤 瀏覽:377
平安深圳app如何實名認證 瀏覽:500
linux網路監控軟體 瀏覽:889
內網伺服器如何上傳文件 瀏覽:140
程序員在你心中是什麼 瀏覽:1
蘋果手機怎麼找回app賬號 瀏覽:466
房屋中介網站源碼 瀏覽:29
命運格數演算法 瀏覽:852
ets3編程 瀏覽:730
怎麼製作音樂相冊的文件夾 瀏覽:566
寧夏重加密硅灰用法 瀏覽:231
70個4相乘的簡便演算法 瀏覽:292