freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于pda的藍(lán)牙通訊程序設(shè)計(jì)——軟件設(shè)計(jì)(20xx自動(dòng)化本科畢業(yè)論文-資料下載頁

2024-11-06 07:15本頁面

【導(dǎo)讀】[摘要]隨著工業(yè)技術(shù)的發(fā)展,對(duì)工業(yè)現(xiàn)場(chǎng)通信與數(shù)據(jù)實(shí)時(shí)處理的要求越來越高。業(yè)現(xiàn)場(chǎng)的最佳選擇。收并發(fā)送工業(yè)接入點(diǎn)數(shù)據(jù),實(shí)現(xiàn)了工業(yè)現(xiàn)場(chǎng)、PDA與上位機(jī)的三方通信。境下開發(fā)編寫,PC端的程序采用VC++編寫。實(shí)現(xiàn)了PDA與單片機(jī)和PC機(jī)間的數(shù)據(jù)。通訊,和PDA對(duì)接收數(shù)據(jù)的輔助處理。

  

【正文】 ACL 數(shù)據(jù)分組的處理過程。 HCI 狀態(tài)機(jī)要通過系統(tǒng)預(yù)先設(shè)定的一個(gè)定時(shí)器定時(shí)循 環(huán)調(diào)用 , 雖然 HCI 從 UART 得到的數(shù)據(jù)流是一塊一塊的 , 有可能剛好是一個(gè)分組 , 有可能是幾個(gè)分組 , 還可能是一個(gè)分組的部分?jǐn)?shù)據(jù) , 但狀態(tài)機(jī)對(duì)接收到的一塊數(shù)據(jù)流的處理是連續(xù)進(jìn)行的 , 數(shù)據(jù)流的間斷只會(huì)造成狀態(tài)機(jī)的暫時(shí)等待 , 而不會(huì)影響其正確處理返回分組。如中途出現(xiàn)分組丟失或錯(cuò)誤的字段 , 狀態(tài)機(jī)會(huì)報(bào)錯(cuò)并重新置回初始態(tài) [10]。 狀態(tài)機(jī)數(shù)據(jù)處理部分的程序主函數(shù)如下: hci_state_machine( ) hci 狀態(tài)機(jī) , 定時(shí)器 3 定時(shí) 10ms 中斷調(diào)用 hci_buf_put_ch( ) uart0 中斷接收藍(lán)牙模塊返回?cái)?shù)據(jù) , 放入hci_data_buf[1000] hci_buf_get_ch( ) 從 hci_data_buf[1000]讀取一個(gè)字符待狀態(tài)機(jī)分析 hci_reset( ...) 復(fù)位命令 , 組合命令分組 , 調(diào)用 send_cmd( ) 發(fā)送給藍(lán)牙模塊 ? 類同 hci_reset, hci 共 4 大類命令 : 鏈路管理 / 鏈路策略 / 主機(jī)控制器 / 信息參數(shù) get_opcode( ...) 將 ogf 和 ocf 組合成操作碼 opcode le_u16_to_u16( ...) 實(shí)現(xiàn)反位序即大小模式轉(zhuǎn)換 send_cmd( ...) 將指定長度的 hci 指令送入指令發(fā)送緩沖區(qū)并調(diào)用 uart_send_str()發(fā)送出去 uart_send_ch(...) 發(fā)送一個(gè)字符 uart_send_str(...) 發(fā)送一個(gè)指定長度的字符串 PDA 端的軟件設(shè)計(jì) 目前 ,國內(nèi) PDA 基本采用 Windows Mobile 操作系統(tǒng)。 Windows Mobile 系統(tǒng)是Microsoft 公司為智能移動(dòng)終端設(shè)備設(shè)計(jì)的嵌入式操作系統(tǒng) ,基于 Windows Mobile 操作基于 PDA 的藍(lán)牙通信程序設(shè)計(jì) —— 軟件設(shè)計(jì) 15 系統(tǒng)的智能終端設(shè)備分 Smart Phone 和 Pocket PC 兩大類。其中 ,Smart Phone 為智能手機(jī)系統(tǒng) , Pocket PC 為個(gè)人掌上電腦 ?,F(xiàn)在 ,很多 Pocket PC 也加入電話功能成為 Pocket PC Phone。 Windows Mobile 2020 中內(nèi)置 . Net Compact Framework CF ,方便開發(fā)人員對(duì)Windows 智能移動(dòng)終端設(shè)備的開發(fā)。 Microsoft 也為 Windows CE 提供了很多設(shè)備開發(fā)工具 ,如近年來發(fā)展迅速的 Visual Studio 2020 中的 Visual C 。 Visual C 2020 為開發(fā)在基于 Windows CE 的智能設(shè)備 (如 Pocket PC 和 Smart phone) 上運(yùn)行的軟件提供豐富的集成支持 ,可以使用開發(fā) PC 程序時(shí)所使用的相同代碼編輯器、設(shè)計(jì)器和調(diào)試器界面 ,它還提供仿真程序 ,讓我們可以在開發(fā)計(jì)算機(jī)上運(yùn)行和調(diào)試編寫的代碼 。Visual C 2020 中 的 SerialPort 類控制串口資源非常方便 ,因此 ,本文選用 Visual C 2020 來編寫藍(lán)牙串口通信程序。藍(lán)牙串口通信的基本流程包括配置資源參數(shù)、打開串口資源、通信讀寫操作和關(guān)閉串口資源 [11]。 配置資源參數(shù) 在 Windows CE 系統(tǒng)中 ,串口與其他通信設(shè)備是作為文件進(jìn)行處理的。本 文對(duì)藍(lán)牙串口進(jìn)行操作用到了 C 2020 中的 SerialPort 類 ,此類在 . NET Framework 2. 0 版本中是新增的 ,用于控制串口文件資源。初始化 SerialPort 類實(shí)例和配置資源參數(shù)方法如下 : namespace BlueTooth_RS232_ { public partial class FormMain : Form //窗體 { public FormMain() { InitializeComponent()。 //窗體初始化 } private ComPort Port = new ComPort()。 //COM 端口實(shí)例化 private void FormMain_Load(object sender, EventArgs e) { ()。 //設(shè)置菜單 } private void SetMenu(ComPort Port) { switch () //選擇 COM 端口 { case COM1: = true。 = false。 基于 PDA 的藍(lán)牙通信程序設(shè)計(jì) —— 軟件設(shè)計(jì) 16 = false。 = false。 = false。 = false。 = false。 = false。 break。 …… default: = true。 //默認(rèn)值設(shè)為 COM1 = false。 = false。 = false。 = false。 = false。 = false。 = false。 break。 }…… 波特率、停止位、校驗(yàn)位等參數(shù)的設(shè)置方法和 端的設(shè)置基本類似,限于篇幅,不再贅述。 打開串口資源 打開串口資源在串口參數(shù)配置正確的情況下 ,只需調(diào)用 SerialPort 類的 Open 方法即可打開串口連接。方法如下 : try { if (!) ()。 //打開串口 } PDA 通信讀寫操作 在成功設(shè)置通信參數(shù)并打開串口連接后 ,可采取事件觸發(fā)的方式對(duì)數(shù)據(jù)進(jìn)行接收 與發(fā)送 處理。本文使用 SerialPort 類的 DataReceived 事件方法來處理 SerialPort 對(duì)象的數(shù)據(jù)接收事件 ,同時(shí)還要用到 SerialDataReceivedEvent Handler 委托來處理 SerialPort 對(duì)象的 DataReceived 事件 ,使用 SerialPort 類中的 DataWrite 事件方法來處理數(shù)據(jù)的發(fā)送 。 由于 MT1020A 端、 PC端與 PDA 端所發(fā)送 或接收 的 信號(hào) 均為 二進(jìn)制所轉(zhuǎn)化成的 ASCII 碼,所以發(fā)送與接收信號(hào)時(shí)存在一個(gè)數(shù)據(jù)的編碼與解碼的過程 [12]。 具體方法如下 : private StringBuilder buffer = new StringBuilder()。 //緩存實(shí)例化 基于 PDA 的藍(lán)牙通信程序設(shè)計(jì) —— 軟件設(shè)計(jì) 17 private void serialPort_DataReceived(object sender, e) { byte[] recBytes = new byte[]。 (recBytes, 0, )。 //讀取 ASCII 碼數(shù)據(jù) string recString = (recBytes, 0, )。//數(shù)據(jù)解碼 (recString)。 //將數(shù)據(jù)重載入緩存 } private void timer_Tick(object sender, EventArgs e) //將數(shù)據(jù)從緩存?zhèn)魉偷浇邮諈^(qū) { if () //如果該項(xiàng)選中,則轉(zhuǎn)化為 unicode 字符顯示 { char[] chars = ().ToCharArray() 。 for (int i = 0。 i 。 i++) { += ((byte)chars[i]).ToString(X) + 。 } } else { += ()。 //如果不選中該項(xiàng)則為字符串顯示 } (0, )。 //清空緩存 } private void textSend_GotFocus(object sender, EventArgs e) { = true。 } private void btnSend_Click(object sender, EventArgs e) //發(fā)送串口數(shù)據(jù) { string sendString = 。 byte[] sendBytes = new byte[]。 (sendString,0,sendBytes,0)。//將數(shù)據(jù)轉(zhuǎn)換成 ASCII 碼 (sendBytes, 0, )。 //將 ASCII 碼基于 PDA 的藍(lán)牙通信程序設(shè)計(jì) —— 軟件設(shè)計(jì) 18 寫入串口 } 其它具體程序限于篇幅不再贅述。 關(guān)閉串口 為了省電 ,掌上電腦串口通常關(guān)閉。 SerialPort 類的 Close 方法可以關(guān)閉端口連接。方法如下 : try { if () ()。 //關(guān)閉串口 } PDA 端的程序組件框圖如圖 11 所示 。 圖 11 程序組件框圖 PC 端的軟件設(shè)計(jì) PC 端硬件 連接比較簡單 , 將藍(lán)牙 USB 適配器直接通過 USB 連接到 PC 上即可 , 需要注意的是 , 插上適配器后 , 如果是在 XP 系統(tǒng)下 , 系統(tǒng)會(huì)自動(dòng)裝載藍(lán)牙適配器驅(qū)動(dòng)程序 , 因?yàn)樵诖耸且_發(fā)自己的簡單應(yīng)用程序 , 而自動(dòng)安裝的驅(qū)動(dòng)程序是針對(duì)高級(jí)應(yīng)用開發(fā)的 , 覆蓋了 HCI 層 , 因此需要將其卸載 , 安裝針對(duì)特定適配器的 HCI 驅(qū)動(dòng)程序。此處使用的是 CSRBlueCore 04, 安裝 CSR USB Driver , 安裝成功后可在 “設(shè)備管理器 ”“通用串行總線控制器 ”中查找到 “CSR BlueCore Bluetooth”。 藍(lán)牙適配器驅(qū)動(dòng)程序接口函數(shù)的調(diào)用 操作系統(tǒng)采用 Windows XP, 藍(lán)牙 USB 適配器采用 CSR BlueCore 04, 藍(lán)牙 USB 適基于 PDA 的藍(lán)牙通信程序設(shè)計(jì) —— 軟件設(shè)計(jì) 19 配器驅(qū)動(dòng)程序采用 。此驅(qū)動(dòng)程序提供了一系列的控制字 , 通過這些控制字可以直接在 HCI 層上控制藍(lán)牙適配器。編程環(huán)境
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1