欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      hr開發(fā)小結(jié)

      時(shí)間:2019-05-13 16:44:29下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《hr開發(fā)小結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《hr開發(fā)小結(jié)》。

      第一篇:hr開發(fā)小結(jié)

      HR信息類型增強(qiáng)

      信息類型是SAP HR模塊數(shù)據(jù)單元,用于對(duì)人員數(shù)據(jù)的記錄和維護(hù),是HR的基礎(chǔ)。信息類型按照其創(chuàng)建方式的不同可以分為:人事信息類型、組織信息類型。信息類型數(shù)據(jù)的維護(hù)主要在事物碼PA30、PA40、po10、P013 中進(jìn)行。信息類型的創(chuàng)建

      信息類型的創(chuàng)建涉及到的兩個(gè)事務(wù)碼:PM01,PPCI。分別對(duì)應(yīng)人事主數(shù)據(jù)與組織、職位主數(shù)據(jù)的增強(qiáng)。

      人事信息類型在生成時(shí),系統(tǒng)會(huì)自動(dòng)生成2000、1000、3000等屏幕,以及相應(yīng)的類,和PR模塊。其中2000屏幕是我們?cè)赑A30中(對(duì)人事信息類型來說)編輯或查看時(shí)看到的屏幕,一般做好信息類型增強(qiáng)后需要對(duì)2000屏進(jìn)行修改,像設(shè)置下拉框、設(shè)置單選按鈕組、制作樹型結(jié)構(gòu)F4等;3000屏為列表屏幕,是我們點(diǎn)擊概覽時(shí)所看到的屏幕。PR模塊用于信息類型的顯示(具體的我也不清楚)。

      組織信息或職位信息類型,有時(shí)需要?jiǎng)?chuàng)建7000屏,也就是我們常見的PPOSE屏,這個(gè)屏幕可以在生成信息類型時(shí)直接在PPCI里生成(點(diǎn)擊菜單欄中,信息類型—?jiǎng)?chuàng)建子屏幕 即可,當(dāng)然邏輯流要與2000屏的邏輯流保持一致)。人事信息類型的創(chuàng)建 創(chuàng)建信息類型

      HR本身提供一些常用的信息類型,但當(dāng)有特殊的需求時(shí)需要進(jìn)行信息類型的創(chuàng)建。自己創(chuàng)建的信息類型編碼是以?9?開頭的四位數(shù)字,其他數(shù)字開頭的信息類型為系統(tǒng)自帶的。像9025、9195、9135等。創(chuàng)建步驟如下(以9001為例):TCODE PM01 PM01——》創(chuàng)建IT——》輸入9001——》選擇PS結(jié)構(gòu)——》編輯,進(jìn)入ps9001編輯界面。維護(hù)后點(diǎn)擊 ;

      信息類型增強(qiáng)時(shí),需要?jiǎng)?chuàng)建一個(gè)結(jié)構(gòu),用于說明該信息類型有哪些字段,結(jié)構(gòu)的名稱格式為:”PS+信息類型”。實(shí)例結(jié)構(gòu)如下: 保存,激活后返回PM01界面,點(diǎn)擊生成對(duì)象,同前。維護(hù)信息類型特征:

      系統(tǒng)會(huì)按照你提供的字段生成2000屏、3000屏;其中2000屏為我們?cè)赑A30中進(jìn)行維護(hù)(查看)時(shí)展現(xiàn)出的屏幕,3000屏即列表屏,當(dāng)我們選擇概覽時(shí)的所看到屏幕。

      詳細(xì)設(shè)置如下:(我們可以通過SM30維護(hù)V_T582A中信息從而實(shí)現(xiàn)對(duì)信息類型的屬性的維護(hù))

      維護(hù)完保存,進(jìn)入PA30,效果如下:

      信息類型自動(dòng)生成完成。由于屏幕是自動(dòng)生成,屏幕中的所有字段均由結(jié)構(gòu)中的字段生成。所以需要對(duì)屏幕進(jìn)行修改。(像:屏幕字段描述的修改、F4幫助、下拉列表等)增強(qiáng)單個(gè)屏幕 當(dāng)某些信息類型的字段不能滿足當(dāng)前的業(yè)務(wù)需求時(shí),需要對(duì)這個(gè)信息類型進(jìn)行增強(qiáng)。單個(gè)屏幕增強(qiáng)的步驟如下(以信息類型0529為例)。PM01——》單個(gè)屏——》信息類型號(hào)0529——》客戶包含——》編輯,這時(shí)進(jìn)入CI_P0529結(jié)構(gòu)的創(chuàng)建。

      CI_0529結(jié)構(gòu)中的字段即為需要在屏幕中增強(qiáng)的附加字段。CI_0529結(jié)構(gòu)如下:

      創(chuàng)建完成后,保存,激活,回到PM01初始界面,點(diǎn)擊生成對(duì)象,這時(shí)系統(tǒng)會(huì)給出一系列提示消息框,不要理會(huì),點(diǎn)確定直到不出現(xiàn)。這時(shí)相關(guān)的屏幕、結(jié)構(gòu)、表都已經(jīng)創(chuàng)建完畢,但要在前臺(tái)界面顯示出來還需做一定的設(shè)置。

      PM01——》分配增強(qiáng)——》新條目。

      維護(hù)好之后,保存,退出,現(xiàn)在可在事務(wù)碼PA30里看到效果了。注: 屏幕自動(dòng)生成的字段的輸入/輸出以及可修改性是可以在屏幕修正(v_t588m/t588m)里進(jìn)行設(shè)置。組織職位信息類型的創(chuàng)建 創(chuàng)建信息類型

      組織信息信類型的創(chuàng)建TCODE為:PPCI 信息類型以9開頭,最好與人事的信息類型編碼區(qū)分開。

      首先要?jiǎng)?chuàng)建HRIXXXX結(jié)構(gòu)。SE11 根據(jù)業(yè)務(wù)字段進(jìn)行HRI結(jié)構(gòu)的創(chuàng)建.(在創(chuàng)建組織信息類型時(shí)要,收集好需求,避免遺漏字段。組織信息類型后期刪除比較麻煩。)創(chuàng)建信息類型 PPCI 進(jìn)行檢查 生成信息類型

      維護(hù)信息類型視圖(SM30 —— T777I),維護(hù)時(shí)間限制和信息類型類型 組織職位中子屏幕(7000)屏幕的創(chuàng)建

      進(jìn)入PPCI,填寫信息類型,點(diǎn)擊創(chuàng)建,點(diǎn)擊菜單欄中的“信息類型”,選擇“創(chuàng)建子屏幕”。

      創(chuàng)建完子屏幕后,對(duì)新生成屏幕的邏輯流及屏幕進(jìn)行修改。HR出口(CMOD)增強(qiáng) HR出口增強(qiáng)中常用的 方法有:

      1、cl_hr_pnnnn_type_cast=>prelp_to_pnnnn “ 獲取數(shù)據(jù)

      2、cl_hr_pnnnn_type_cast=>pnnnn_to_prelp “寫入數(shù)據(jù) HR中常用的BADI

      1、HRBAS00INFTY “ 作用于 OM

      2、HRPAD00INFTY “ 作用于 PA 原始字段描述修改增強(qiáng)

      1、CMOD HR程序開發(fā)

      HR程序開發(fā)如其他模塊開發(fā)有些不同。主要是因?yàn)镠R模塊中引入了信息類型、邏輯數(shù)據(jù)庫和宏。2.1 邏輯數(shù)據(jù)庫

      HR中常用的邏輯數(shù)據(jù)庫為:PNP、PCH、PNPCE、PAP,其中PNP及PCH用的最多。PNP 用于獲取人員信息,PCH用于獲取組織信息。2.2 Provide PROVIDE常用于HR的取數(shù)中。

      一般provide和end provide用于處理時(shí)間限制是1和2的infotype.會(huì)一筆一筆的循環(huán)該infotype.provide endprovide 會(huì)將符合條件的記錄進(jìn)行分段,因此會(huì)改變pnnnn-begda 或 pnnnn-endda 的值,使用時(shí)要注意。2.3 HR報(bào)表常用的宏

      1、rp_provide_from_last 用于獲取信息類型中的最新的一筆數(shù)據(jù)

      2、rp_provide_from_frst 用法與rp_provide_from_last 相同,用于獲取信息類型中的第一筆數(shù)據(jù) 與HR相關(guān)的FM

      1、RH_STRUC_GET 用于獲取組織單元下的職位及人員信息

      2、CU_READ_RGDIR 薪資報(bào)表中用于獲取期間

      3、PYXX_READ_PAYROLL_RESULT 根據(jù)索引號(hào)得到工資數(shù) 一般與CU_READ_RGDIR一起用

      4、RP_LAST_DAY_OF_MONTHS 獲取一個(gè)月的最后一天

      5、HR_GET_TIME_BETWEEN_DATES 獲取日期 年月差

      6、RH_OBJID_REQUEST 獲取組織對(duì)象

      7、HR_HCP_READ_OBJECT_TEXT 獲取對(duì)象文本

      8、RP_HIRE_FIRE 獲取0041中的日期

      9、HR_AUPBS_AGE 計(jì)算員工年齡

      第二篇:HR培訓(xùn)與開發(fā)

      案例

      1、國(guó)內(nèi)某公司與英國(guó)某大學(xué)簽訂了一項(xiàng)培訓(xùn)協(xié)議,每年選派2-3名管理人員到該學(xué)校攻讀管理碩士學(xué)位。學(xué)業(yè)完成后,員工必須回公司服務(wù)5年,服務(wù)期滿方可調(diào)離。2002年5月,銷售部助理小張經(jīng)過公司幾輪挑選,終于與其他兩位同事一起獲得了推薦。但小張?jiān)缬蓄A(yù)謀,在此之前已獲取了英國(guó)另一所學(xué)院管理碩士的錄取通知書。雖然該校的學(xué)費(fèi)較高,但其聲譽(yù)好,教學(xué)質(zhì)量高,還能幫助學(xué)生申請(qǐng)到數(shù)額可觀的助學(xué)貸款。經(jīng)過公司人事部的同意,小張用公司提供的獎(jiǎng)學(xué)金交了學(xué)費(fèi),又申請(qǐng)了3萬美金的助學(xué)貸款,以解決和妻子在英國(guó)的生活費(fèi)。按照目前小張的收入水平,需要8年時(shí)間才能還清貸款,如果他在一家外資公司工作,不到4年便可還清貸款。行期將近,公司人事部多次催促與其簽訂培訓(xùn)合同書,一直到離開公司的前一天小張才在協(xié)議書上簽了字。

      2003年9月末,小張學(xué)成回國(guó),并馬上回公司報(bào)到。不過,10月初,他便向公司人事部遞交了辭呈,并按合同還清了公司為其支付的英語培訓(xùn)考試費(fèi)、赴英簽證費(fèi)、學(xué)費(fèi)等一切費(fèi)用。不久,他便在一家美國(guó)大公司得到一個(gè)年收入20萬以上的職位。

      根據(jù)本案例,請(qǐng)回答下列問題:

      ⑴該公司在選派員工出國(guó)培訓(xùn)的工作中主要存在哪些問題?

      ⑵該公司采取哪些措施才能確立更有效的培訓(xùn)體系,防止此類的事件發(fā)生?

      解析:

      ⑴該公司在組織員工出國(guó)培訓(xùn)方面主要存在的問題:

      ①未進(jìn)行必要的培訓(xùn)需求分析,選派員工出國(guó)培訓(xùn)的目的不明確。

      ②未選擇適宜的培訓(xùn)方式,應(yīng)當(dāng)根據(jù)具體的培訓(xùn)目的和要求,選擇投入較少,收益較大的培訓(xùn)方式,對(duì)員工進(jìn)行有針對(duì)性培訓(xùn)。

      ③沒有確立有效的人才選拔機(jī)制,象出國(guó)培訓(xùn)這樣高投入具有一定風(fēng)險(xiǎn)的培訓(xùn)項(xiàng)目,為了提高培訓(xùn)效果,應(yīng)當(dāng)選派那些具有很高忠誠(chéng)度和很強(qiáng)事業(yè)心的員工作為培養(yǎng)對(duì)象。

      ④沒有建立規(guī)避培訓(xùn)風(fēng)險(xiǎn)機(jī)制,如培訓(xùn)合同管理不夠健全完善,協(xié)議書約定條款缺乏合理性,對(duì)違約責(zé)任沒有明確的規(guī)定。

      ⑵可以采取的措施:

      ①建立培訓(xùn)需求分析系統(tǒng),明確公司培訓(xùn)目標(biāo),制定公司的中長(zhǎng)期培訓(xùn)規(guī)劃。②確立公司培訓(xùn)評(píng)估系統(tǒng),選擇適合的培訓(xùn)方式方法,提高培訓(xùn)效果。

      ③完善各類培對(duì)象的選拔機(jī)制,注重對(duì)后備人才的甄靠選,確保人才選拔的可靠性 ④建立培訓(xùn)風(fēng)險(xiǎn)防范機(jī)制,完善培訓(xùn)合同管理,運(yùn)用多種手段制止違約行為。

      ⑤采取多種渠道、手段和方法有效激勵(lì)員工,避免優(yōu)秀人才的流失,如加強(qiáng)企業(yè)文化建設(shè),與員工之間確立遵守承諾的互信機(jī)制,構(gòu)建公正公平的薪酬福利制度,等等。

      第三篇:PAYPAL IPN開發(fā)小結(jié)

      PayPal支付接口IPN開發(fā)小結(jié)

      1.IPN簡(jiǎn)介及其工作方式

      PayPal IPN(Instant Payment Notification),就是Paypal開發(fā)的一種能主動(dòng)通知第三方賣家系統(tǒng)交易狀態(tài)的一種機(jī)制。IPN的原理很簡(jiǎn)單,就是當(dāng)產(chǎn)生了一個(gè)交易之后,交易狀態(tài)發(fā)生變化時(shí),如用戶已經(jīng)付款、或者退款、撤銷時(shí),Paypal利用常用的HTTP POST方式,將交易的一些變量提交給網(wǎng)站的某個(gè)頁面(稱之為IPN Handler),當(dāng)這個(gè)頁面接受到請(qǐng)求時(shí)候,將這些數(shù)據(jù)原封不動(dòng)加上一個(gè)指示驗(yàn)證的cmd=_notify-validate,POST回Paypal的接口地址,如果數(shù)據(jù)正確,那么Paypal返回字符串VERIFIED,否則為INVALID,如果結(jié)果為VERIFIED,那么你的程序就可以使用這些數(shù)據(jù)進(jìn)行操作。

      另外,IPN只針對(duì)PayPal的Business用戶開放。

      2.SANDBOX使用介紹

      Paypal專門開發(fā)了Sandbox給開發(fā)人員進(jìn)行開發(fā),首先到https://developer.paypal.com/ 注冊(cè)一個(gè)開發(fā)帳號(hào),好了之后再進(jìn)入Sandbox建立測(cè)試用的Paypal虛擬帳號(hào)(至少應(yīng)該建立一個(gè)Business的和一個(gè)Personal的),這種賬號(hào)注冊(cè)方法和Paypal的流程一樣,信息可以是假的,包括銀行帳號(hào)、信用卡(其實(shí)Paypal Sandbox會(huì)自動(dòng)生成一些隨機(jī)的號(hào)碼)。接下來需要激活Paypal Sandbox的虛擬帳號(hào),注意,這里不管你在Paypal Sanbox注冊(cè)時(shí)填什么郵件地址,有任何發(fā)送到虛擬帳號(hào)所填郵箱的郵件都存會(huì)在開發(fā)帳號(hào)的管理界面中的Email頁(導(dǎo)航欄上有)中。登錄Sandbox的虛擬Paypal環(huán)境,還需要驗(yàn)證虛擬帳號(hào)的銀行,這里可以隨便填,然后通過Add Funds來給賬戶充值(想填多少填多少)。然后,還需要激活I(lǐng)PN的選項(xiàng),在Business的那個(gè)賬戶的Profile設(shè)置頁面中,點(diǎn)擊,然后點(diǎn)擊Edit按鈕,打開IPN,這里如果你使用的是固定的IPN Handle,可以直接將地址填入。

      測(cè)試案例:

      登錄Business帳戶,在Merchant Service中點(diǎn)擊Buy Now Buttons生成一個(gè)PAY按鈕的HTML代碼; 在My Account中點(diǎn)擊Profile,然后點(diǎn)擊Instant Payment Notification Preferences設(shè)置IPN Handel;在Website Payment Preferences中可以設(shè)置PAY完成之后返回的頁面;

      在一個(gè)頁面中嵌入PAY按鈕代碼,點(diǎn)擊支付后IPN Handel就會(huì)收到PayPal POST過來的數(shù)據(jù);

      3.IPN Handel IPN Handel只需接收POST來的參數(shù)就可以了,下面列舉一些重要的參數(shù):

      payment_status:顯示交易的狀態(tài),有Completed, Pending, Failed等幾種狀態(tài),一般買家通過PAY按鈕付款之后處于Pending狀態(tài),確認(rèn)付款之后處于Completed狀態(tài),放棄付款處于Failed狀態(tài)

      item_name:貨物的名稱 item_number:貨物的編號(hào) mc_gross:支付的金額

      可以在http://paypaltech.com中找到IPN Handel的示例代碼 下面截取一個(gè)IPN Handel的代碼參考

      <%@LANGUAGE=“VBScript”%> <% ' dim some variables Dim Item_name, Item_number, Payment_status, Payment_amount Dim Txn_id, Receiver_email, Payer_email Dim objHttp, str

      'begin IPN handling ' read post from PayPal system and add 'cmd' str = Request.Form & “&cmd=_notify-validate” ' post back to PayPal system to validate set objHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP”)' set objHttp = Server.CreateObject(“Msxml2.ServerXMLHTTP.4.0”)' set objHttp = Server.CreateObject(“Microsoft.XMLHTTP”)objHttp.open “POST”, “http://004km.cn/cgi-bin/webscr”, false objHttp.setRequestHeader “Content-type”, “application/x-004km.cnpleted”)then pay_status=1 ' completed else if(trim(payment_status)=“Pending”)then pay_status=0 ' pending else if(trim(payment_status=“Failed”))then pay_status=2 'failed else

      pay_status=-1 ' unknown status end if end if end if

      ' order id order_id=trim(payment_date)response.Write(mc_gross&“fsafaffas”)money=CDbl(mc_gross)

      'get account information set rsAccount = server.CreateObject(“ADODB.Recordset”)

      sql = “select * from cleanpick_account where login_id = ” & login_id rsAccount.Open sql, objConn, 3, 1 if rsAccount.EOF then Pbalance = 0 'delete redundance objConn.execute(“delete from cleanpick_account where login_id=”&login_id)

      'if we can not find the account information from database create one 'Default account's balance is 0 dollor sql=“insert into cleanpick_account(login_id, balance, description, searches, deals)values”_

      & “(”&login_id&“,0,'New User', 0, 0)”

      objConn.execute(sql)else Pbalance = rsAccount(“balance”)end if rsAccount.close()

      if(pay_status=1)then Pbalance2 = Pbalance+money else Pbalance2 = Pbalance end if

      if(pay_status<>-1)then 'delete redundancy sql=“DELETE FROM cleanpick_deposithistory where login_id=” & login_id & _

      “ and deposit_money=” & money & “ and order_id='” & order_id & “'” objConn.execute(sql)

      sql=“insert into cleanpick_deposithistory ”_

      &“(deal, login_id, deposit_money, balance_before, ”_

      &“balance_after, deposit_type, deposit_description, pay_status, order_id)values”_

      &“(0,”&login_id&“,”&money&“,”&Pbalance& “,” _

      &Pbalance2&“,1,'Store Money by PayPal',”&pay_status&“,'”&order_id&“')” objConn.execute(sql)

      'update account information sql=“update cleanpick_account set balance=” & Pbalance2 & “ where login_id=” & login_id objConn.execute(sql)end if

      'End Disposalink handling here

      ####

      elseif(objHttp.responseText = “INVALID”)then ' log for manual investigation ' add code to handle the INVALID scenario response.Write(“INVALID handle”)else ' error end if set objHttp = nothing %>

      第四篇:Android藍(lán)牙開發(fā)小結(jié)

      學(xué)習(xí)之前先了解兩個(gè)基本概念:

      一、RFCOMM協(xié)議:

      一個(gè)基于歐洲電信標(biāo)準(zhǔn)協(xié)會(huì)ETSI07.10規(guī)程的串行線性仿真協(xié)議。此協(xié)議提供RS232控制和狀態(tài)信號(hào),如基帶上的損壞,CTS以及數(shù)據(jù)信號(hào)等,為上層業(yè)務(wù)(如傳統(tǒng)的串行線纜應(yīng)用)提供了傳送能力。

      RFCOMM是一個(gè)簡(jiǎn)單傳輸協(xié)議,其目的是針對(duì)如何在兩個(gè)不同設(shè)備上的應(yīng)用之間保證一條完整的通信路徑,并在它們之間保持一通信段。

      RFCOMM是為了兼容傳統(tǒng)的串口應(yīng)用,同時(shí)取代有線的通信方式,藍(lán)牙協(xié)議棧需要提供與有線串口一致的通信接口而開發(fā)出的協(xié)議。RFCOMM協(xié)議提供對(duì)基于L2CAP協(xié)議的串口仿真,基于ETSI07.10??芍С衷趦蓚€(gè)BT設(shè)備之間同時(shí)保持高達(dá)60路的通信連接。

      RFCOMM只針對(duì)直接互連設(shè)備之間的連接,或者是設(shè)備與網(wǎng)絡(luò)接入設(shè)備之間的互連。通信兩端設(shè)備必須兼容于RFCOMM協(xié)議,有兩類設(shè)備:DTE(Data Terminal Endpoint,通信終端,如PC,PRINTER)和DCE(Data Circuit Endpoint,通信段的一部分,如Modem)。此兩類設(shè)備不作區(qū)分。

      二、MAC硬件地址

      MAC(Medium/MediaAccess Control, 介質(zhì)訪問控制)MAC地址是燒錄在NetworkInterfaceCard(網(wǎng)卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特長(zhǎng)(6字節(jié)),16進(jìn)制的數(shù)字組成.0-23位叫做組織唯一標(biāo)志符(organizationally unique,是識(shí)別LAN(局域網(wǎng))節(jié)點(diǎn)的標(biāo)識(shí).24-47位是由廠家自己分配。其中第40位是組播地址標(biāo)志位。網(wǎng)卡的物理地址通常是由網(wǎng)卡生產(chǎn)廠家燒入網(wǎng)卡的EPROM(一種閃存芯片,通??梢酝ㄟ^程序擦寫),它存儲(chǔ)的是傳輸數(shù)據(jù)時(shí)真正賴以標(biāo)識(shí)發(fā)出數(shù)據(jù)的電腦和接收數(shù)據(jù)的主機(jī)的地址。

      Android平臺(tái)提供的藍(lán)牙API去實(shí)現(xiàn)藍(lán)牙設(shè)備之間的通信,藍(lán)牙設(shè)備之間的通信主要包括了四個(gè)步驟:設(shè)置藍(lán)牙設(shè)備、尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備、連接設(shè)備和設(shè)備之間的數(shù)據(jù)傳輸。以下是建立藍(lán)牙連接的所需要的一些基本類:

      BluetoothAdapter類:代表了一個(gè)本地的藍(lán)牙適配器。它是所有藍(lán)牙交互的的入口點(diǎn)。利用它你可以發(fā)現(xiàn)其他藍(lán)牙設(shè)備,查詢綁定了的設(shè)備,使用已知的MAC地址實(shí)例化一個(gè)藍(lán)牙設(shè)備和建立一個(gè)BluetoothServerSocket(作為服務(wù)器端)來監(jiān)聽來自其他設(shè)備的連接。

      BluetoothDevice類:代表了一個(gè)遠(yuǎn)端的藍(lán)牙設(shè)備,使用它請(qǐng)求遠(yuǎn)端藍(lán)牙設(shè)備連接或者獲取遠(yuǎn)端藍(lán)牙設(shè)備的名稱、地址、種類和綁定狀態(tài)。(其信息是封裝在bluetoothsocket中)。

      Bluetoothsocket類:代表了一個(gè)藍(lán)牙套接字的接口(類似于tcp中的套接字),它是應(yīng)用程序通過輸入、輸出流與其他藍(lán)牙設(shè)備通信的連接點(diǎn)。

      Blueboothserversocket類:代表打開服務(wù)連接來監(jiān)聽可能到來的連接請(qǐng)求(屬于server端),為了連接兩個(gè)藍(lán)牙設(shè)備必須有一個(gè)設(shè)備作為服務(wù)器打開一個(gè)服務(wù)套接字。當(dāng)遠(yuǎn)端設(shè)備發(fā)起連接連接請(qǐng)求的時(shí)候,并且已經(jīng)連接到了的時(shí)候,Blueboothserversocket類將會(huì)返回一個(gè)bluetoothsocket。

      Bluetoothclass類:描述了一個(gè)藍(lán)牙設(shè)備的一般特點(diǎn)和能力。它的只讀屬性集定義了設(shè)備的主、次設(shè)備類和一些相關(guān)服務(wù)。然而,它并沒有準(zhǔn)確地描述所有該設(shè)備所支持的藍(lán)牙文件和服務(wù),而是作為對(duì)設(shè)備種類來說的一個(gè)小小暗示。下面說說具體的編程實(shí)現(xiàn) 1.啟動(dòng)藍(lán)牙功能:

      首先通過調(diào)用靜態(tài)方法getDefaultAdapter()獲取藍(lán)牙適配器BluetoothAdapter,以后你就可以使用該對(duì)象了。如果返回為空,the story is over。例如:

      BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if(mBluetoothAdapter == null){ // Device does not support Bluetooth } 其次,調(diào)用isEnabled()來查詢當(dāng)前藍(lán)牙設(shè)備的狀態(tài),如果返回為false,則表示藍(lán)牙設(shè)備沒有開啟,接下來你需要封裝一個(gè)ACTION_REQUEST_ENABLE請(qǐng)求到intent里面,調(diào)用startActivityForResult()方法使能藍(lán)牙設(shè)備,例如:

      if(!mBluetoothAdapter.isEnabled()){ Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);}

      2.查找設(shè)備:

      使用BluetoothAdapter類里的方法,你可以查找遠(yuǎn)端設(shè)備(大概十米以內(nèi))或者查詢?cè)谀闶謾C(jī)上已經(jīng)匹配(或者說綁定)的其他手機(jī)了。當(dāng)然需要確定對(duì)方藍(lán)牙設(shè)備已經(jīng)開啟或者已經(jīng)開啟了“被發(fā)現(xiàn)使能”功能(對(duì)方設(shè)備是可以被發(fā)現(xiàn)的是你能夠發(fā)起連接的前提條件)。如果該設(shè)備是可以被發(fā)現(xiàn)的,會(huì)反饋回來一些對(duì)方的設(shè)備信息,比如名字、MAC地址等,利用這些信息,你的設(shè)備就可以選擇去向?qū)Ψ匠跏蓟粋€(gè)連接。

      如果你是第一次與該設(shè)備連接,那么一個(gè)配對(duì)的請(qǐng)求就會(huì)自動(dòng)的顯示給用戶。當(dāng)設(shè)備配對(duì)好之后,他的一些基本信息(主要是名字和MAC)被保存下來并可以使用藍(lán)牙的API來讀取。使用已知的MAC地址就可以對(duì)遠(yuǎn)端的藍(lán)牙設(shè)備發(fā)起連接請(qǐng)求。

      匹配好的設(shè)備和連接上的設(shè)備的不同點(diǎn):匹配好只是說明對(duì)方設(shè)備發(fā)現(xiàn)了你的存在,并擁有一個(gè)共同的識(shí)別碼,并且可以連接。連接上:表示當(dāng)前設(shè)備共享一個(gè)RFCOMM信道并且兩者之間可以交換數(shù)據(jù)。也就是是說藍(lán)牙設(shè)備在建立RFCOMM信道之前,必須是已經(jīng)配對(duì)好了的。

      3.查詢匹配好的設(shè)備:

      在建立連接之前你必須先查詢配對(duì)好了的藍(lán)牙設(shè)備集(你周圍的藍(lán)牙設(shè)備可能不止一個(gè)),以便你選取哪一個(gè)設(shè)備進(jìn)行通信,例如你可以你可以查詢所有配對(duì)的藍(lán)牙設(shè)備,并使用一個(gè)數(shù)組適配器將其打印顯示出來:

      Set pairedDevices = mBluetoothAdapter.getBondedDevices();// If there are paired devices if(pairedDevices.size()> 0){ //Loop through paired devices for(BluetoothDevice device : pairedDevices){ // Add the name and address to an array adapter to show in a ListView mArrayAdapter.add(device.getName()+ “n” + device.getAddress());} 建立一個(gè)藍(lán)牙連接只需要MAC地址就已經(jīng)足夠了。

      4.掃描設(shè)備:

      掃描設(shè)備,只需要簡(jiǎn)單的調(diào)用startDiscovery()方法,這個(gè)掃描的過程大概持續(xù)是12秒,應(yīng)用程序?yàn)榱薃CTION_FOUND動(dòng)作需要注冊(cè)一個(gè)BroadcastReceiver來接受設(shè)備掃描到的信息。對(duì)于每一個(gè)設(shè)備,系統(tǒng)都會(huì)廣播ACTION_FOUND動(dòng)作。例如: // Create a BroadcastReceiver for ACTION_FOUND private final BroadcastReceiver mReceiver = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent){ String action = intent.getAction();// When discovery finds a device if(BluetoothDevice.ACTION_FOUND.equals(action)){ // Get the BluetoothDevice object from the Intent BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);// Add the name and address to an array adapter to show in a ListView mArrayAdapter.add(device.getName()+ “n” + device.getAddress());} } };// Register the BroadcastReceiver IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(mReceiver, filter);// Don't forget to unregister during onDestroy 注意:掃描的過程是一個(gè)很耗費(fèi)資源的過程,一旦你找到你需要的設(shè)備之后,在發(fā)起連接請(qǐng)求之前,確保你的程序調(diào)用cancelDiscovery()方法停止掃描。顯然,如果你已經(jīng)連接上一個(gè)設(shè)備,啟動(dòng)掃描會(huì)減少你的通信帶寬。

      5.使能被發(fā)現(xiàn):Enabling discoverability 如果你想使你的設(shè)備能夠被其他設(shè)備發(fā)現(xiàn),將ACTION_REQUEST_DISCOVERABLE動(dòng)作封裝在intent中并調(diào)用startActivityForResult(Intent, int)方法就可以了。他將在不使你應(yīng)用程序退出的情況下使你的設(shè)備能夠被發(fā)現(xiàn)。缺省情況下的使能時(shí)間是120秒,當(dāng)然你可以可以通過添加EXTRA_DISCOVERABLE_DURATION字段來改變使能時(shí)間(最大不超過300秒,這是出于對(duì)你設(shè)備上的信息安全考慮)。例如: Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);startActivity(discoverableIntent);運(yùn)行該段代碼之后,系統(tǒng)會(huì)彈出一個(gè)對(duì)話框來提示你啟動(dòng)設(shè)備使能被發(fā)現(xiàn)(此過程中如果你的藍(lán)牙功能沒有開啟,系統(tǒng)會(huì)幫你開啟),并且如果你準(zhǔn)備對(duì)該遠(yuǎn)端設(shè)備發(fā)現(xiàn)一個(gè)連接,你不需要開啟使能設(shè)備被發(fā)現(xiàn)功能,因?yàn)樵摴δ苤皇窃谀愕膽?yīng)用程序作為服務(wù)器端的時(shí)候才需要。

      6.連接設(shè)備:

      在應(yīng)用程序中,想建立兩個(gè)藍(lán)牙設(shè)備之間的連接,必須實(shí)現(xiàn)客戶端和服務(wù)器端的代碼(因?yàn)槿魏我粋€(gè)設(shè)備都必須可以作為服務(wù)端或者客戶端)。一個(gè)開啟服務(wù)來監(jiān)聽,一個(gè)發(fā)起連接請(qǐng)求(使用服務(wù)器端設(shè)備的MAC地址)。當(dāng)他們都擁有一個(gè)藍(lán)牙套接字在同一RFECOMM信道上的時(shí)候,可以認(rèn)為他們之間已經(jīng)連接上了。服務(wù)端和客戶端通過不同的方式或其他們的藍(lán)牙套接字。當(dāng)一個(gè)連接監(jiān)聽到的時(shí)候,服務(wù)端獲取到藍(lán)牙套接字。當(dāng)客戶可打開一個(gè)FRCOMM信道給服務(wù)器端的時(shí)候,客戶端獲取到藍(lán)牙套接字。

      注意:在此過程中,如果兩個(gè)藍(lán)牙設(shè)備還沒有配對(duì)好的,android系統(tǒng)會(huì)通過一個(gè)通知或者對(duì)話框的形式來通知用戶。RFCOMM連接請(qǐng)求會(huì)在用戶選擇之前阻塞。如下圖:

      7.服務(wù)端的連接:

      當(dāng)你想要連接兩臺(tái)設(shè)備時(shí),一個(gè)必須作為服務(wù)端(通過持有一個(gè)打開的BluetoothServerSocket),目的是監(jiān)聽外來連接請(qǐng)求,當(dāng)監(jiān)聽到以后提供一個(gè)連接上的BluetoothSocket給客戶端,當(dāng)客戶端從BluetoothServerSocket得到BluetoothSocket以后就可以銷毀BluetoothServerSocket,除非你還想監(jiān)聽更多的連接請(qǐng)求。

      建立服務(wù)套接字和監(jiān)聽連接的基本步驟:

      首先通過調(diào)用listenUsingRfcommWithServiceRecord(String, UUID)方法來獲取BluetoothServerSocket對(duì)象,參數(shù)String代表了該服務(wù)的名稱,UUID代表了和客戶端連接的一個(gè)標(biāo)識(shí)(128位格式的字符串ID,相當(dāng)于PIN碼),UUID必須雙方匹配才可以建立連接。其次調(diào)用accept()方法來監(jiān)聽可能到來的連接請(qǐng)求,當(dāng)監(jiān)聽到以后,返回一個(gè)連接上的藍(lán)牙套接字BluetoothSocket。最后,在監(jiān)聽到一個(gè)連接以后,需要調(diào)用close()方法來關(guān)閉監(jiān)聽程序。(一般藍(lán)牙設(shè)備之間是點(diǎn)對(duì)點(diǎn)的傳輸)

      注意:accept()方法不應(yīng)該放在主Acitvity里面,因?yàn)樗且环N阻塞調(diào)用(在沒有監(jiān)聽到連接請(qǐng)求之前程序就一直停在那里)。解決方法是新建一個(gè)線程來管理。例如: private class AcceptThread extends Thread { private final BluetoothServerSocket mmServerSocket;public AcceptThread(){ // Use a temporary object that is later assigned to mmServerSocket, // because mmServerSocket is final BluetoothServerSocket tmp = null;try { // MY_UUID is the app's UUID string, also used by theclient code tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME, MY_UUID);} catch(IOException e){ } mmServerSocket = tmp;} public void run(){ BluetoothSocket socket = null;// Keep listening until exception occurs or a socket is returned while(true){ try { socket = mmServerSocket.accept();} catch(IOException e){ break;} // If a connection was accepted if(socket!= null){ // Do work to manage the connection(in a separate thread)manageConnectedSocket(socket);mmServerSocket.close();break;} } } /** Will cancel the listening socket, and cause the thread to finish */ public void cancel(){ try { mmServerSocket.close();} catch(IOException e){ } } }

      8.客戶端的連接:

      為了初始化一個(gè)與遠(yuǎn)端設(shè)備的連接,需要先獲取代表該設(shè)備的一個(gè)BluetoothDevice對(duì)象。通過BluetoothDevice對(duì)象來獲取BluetoothSocket并初始化連接,具體步驟:

      使用BluetoothDevice對(duì)象里的方法createRfcommSocketToServiceRecord(UUID)來獲取BluetoothSocket。UUID就是匹配碼。然后,調(diào)用connect()方法來。如果遠(yuǎn)端設(shè)備接收了該連接,他們將在通信過程中共享RFFCOMM信道,并且connect()方法返回。例如: private class ConnectThread extends Thread { private final BluetoothSocket mmSocket;private final BluetoothDevice mmDevice;public ConnectThread(BluetoothDevice device){ // Use a temporary object that is later assigned to mmSocket, // because mmSocket is final BluetoothSocket tmp = null;mmDevice = device;// Get a BluetoothSocket to connect with the given BluetoothDevice try { // MY_UUID is the app's UUID string, also used by the server code tmp = device.createRfcommSocketToServiceRecord(MY_UUID);} catch(IOException e){ } mmSocket = tmp;}

      public void run(){ // Cancel discovery because it will slow down the connection mAdapter.cancelDiscovery();try { // Connect the device through the socket.This will block // until it succeeds or throws an exception mmSocket.connect();} catch(IOException connectException){ // Unable to connect;close the socket and get out try { mmSocket.close();} catch(IOException closeException){ } return;} // Do work to manage the connection(in a separate thread)manageConnectedSocket(mmSocket);}

      注意:conncet()方法也是阻塞調(diào)用,一般建立一個(gè)獨(dú)立的線程中來調(diào)用該方法。在設(shè)備discover過程中不應(yīng)該發(fā)起連接connect(),這樣會(huì)明顯減慢速度以至于連接失敗。且數(shù)據(jù)傳輸完成只有調(diào)用close()方法來關(guān)閉連接,這樣可以節(jié)省系統(tǒng)內(nèi)部資源。

      9.管理連接(主要涉及數(shù)據(jù)的傳輸):

      當(dāng)設(shè)備連接上以后,每個(gè)設(shè)備都擁有各自的BluetoothSocket?,F(xiàn)在你就可以實(shí)現(xiàn)設(shè)備之間數(shù)據(jù)的共享了。

      1> 首先通過調(diào)用getInputStream()和getOutputStream()方法來獲取輸入輸出流。然后通過調(diào)用read(byte[])和write(byte[]).方法來讀取或者寫數(shù)據(jù)。

      2> 實(shí)現(xiàn)細(xì)節(jié):以為讀取和寫操作都是阻塞調(diào)用,需要建立一個(gè)專用現(xiàn)成來管理。3>

      private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket;private final InputStream mmInStream;private final OutputStream mmOutStream;public ConnectedThread(BluetoothSocket socket){ mmSocket = socket;InputStream tmpIn = null;OutputStream tmpOut = null;// Get the input and output streams, using temp objects because // member streams are final try { tmpIn = socket.getInputStream();tmpOut = socket.getOutputStream();} catch(IOException e){ } mmInStream = tmpIn;mmOutStream = tmpOut;} public void run(){ byte[] buffer = new byte[1024];// buffer store for the stream int bytes;// bytes returned from read()// Keep listening to the InputStream until an exception occurs while(true){ try { // Read from the InputStream bytes = mmInStream.read(buffer);// Send the obtained bytes to the UI Activity mHandler.obtainMessage(MESSAGE_READ, bytes,-1, buffer).sendToTarget();} catch(IOException e){ break;} } } /* Call this from the main Activity to send data to the remote device */ public void write(byte[] bytes){ try { mmOutStream.write(bytes);} catch(IOException e){ } } /* Call this from the main Activity to shutdown the connection */ public void cancel(){ try { mmSocket.close();} catch(IOException e){ } } }

      第五篇:wireshark插件開發(fā)小結(jié)

      wireshark插件開發(fā)小結(jié)

      關(guān)鍵字:wireshark, plugin, lua,protocol 概述wireshark是非常流行的網(wǎng)絡(luò)封包分析軟件,功能十分強(qiáng)大??梢宰ト「鞣N網(wǎng)絡(luò)包,并顯示網(wǎng)絡(luò)包的詳細(xì)信息。為什么使用wiresharkTroubleshoot network problems

      定位網(wǎng)絡(luò)問題Debug protocol implementations 調(diào)試自己實(shí)現(xiàn)的協(xié)議Learn network protocol internals 分析協(xié)議內(nèi)部實(shí)現(xiàn)分析網(wǎng)絡(luò)性能網(wǎng)絡(luò)端點(diǎn),統(tǒng)計(jì)每個(gè)端點(diǎn)的地址、發(fā)送或收到的數(shù)據(jù)包的數(shù)量和字節(jié)數(shù)。

      網(wǎng)絡(luò)會(huì)話,統(tǒng)計(jì)地址A 和地址B 端點(diǎn)間會(huì)話的發(fā)送或收到的數(shù)據(jù)包的數(shù)量和字節(jié)數(shù)。協(xié)議分層,可查看各種協(xié)議的分布統(tǒng)計(jì)情況。數(shù)據(jù)包長(zhǎng)度分析。架構(gòu)Wireshark是分析網(wǎng)絡(luò)數(shù)據(jù)的利器,也是掌握計(jì)算機(jī)網(wǎng)絡(luò)的工具。wireshark用C語言開發(fā),架構(gòu)合理。wireshark從網(wǎng)絡(luò)協(xié)議??截惥W(wǎng)絡(luò)包,可以保存為pcap文件。wireshark 內(nèi)部實(shí)現(xiàn)

      Plugin dissectorDecodes protocols that are newly added.解析新的網(wǎng)絡(luò)協(xié)議Faster rebuilds and bug correction.(Due to stand alone librariesgenerated for each plugin dissector)? 每個(gè)插件是單獨(dú)的dll文件,這樣可以快速替換插件,加快插件開發(fā)速度。插件文件路徑 : 安裝目錄/plugins/ Wiretapused to read/write capture files

      pcap文件讀寫 winpcap

      (windows packet capture)是windows平臺(tái)下一個(gè)免費(fèi),公共的網(wǎng)絡(luò)訪問系統(tǒng)。winpcap這個(gè)項(xiàng)目的目的在于為win32應(yīng)用程序提供訪問網(wǎng)絡(luò)底層的能力。它用于windows系統(tǒng)下的直接的網(wǎng)絡(luò)編程。插件(plugin)Wireshark使用C語言編寫而成,它支持動(dòng)態(tài)鏈接庫形式的插件擴(kuò)展。除此之外,wireshark內(nèi)置了Lua腳本引擎,可以使用Lua腳本語言編寫dissector插件。Wireshark lua proto APIfunctiondescriptionProto.new(name, desc)Creates a new protocolproto.dissectorThe protocol's dissectorproto.fieldsThe Fields Table of this dissectorproto.prefsThe preferences of this dissectorproto.prefs_changedThe preferences changed routine of this dissectorproto.initThe init routine of this dissectorproto.nameThe name given to this dissectorproto.descriptionThe description given to this dissector

      下載hr開發(fā)小結(jié)word格式文檔
      下載hr開發(fā)小結(jié).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        落實(shí)以人為本科學(xué)觀做好HR開發(fā)工作

        落實(shí)以人為本的科學(xué)觀 做好人力資源開發(fā)工作 8月26日,由中國(guó)社會(huì)科學(xué)院人力資源研究中心主辦的“2006中國(guó)杰出人力資源管理者年會(huì)”在人民大會(huì)堂召開,年會(huì)旨在為人力資源部......

        校本課程開發(fā)階段小結(jié)

        積極開發(fā)校本課程大力推進(jìn)課改實(shí)驗(yàn) ——屈原鎮(zhèn)校本課程開發(fā)與實(shí)施階段性小結(jié) 理性思考 教育部在《基礎(chǔ)教育課程改革綱要》中明確指出,學(xué)校在執(zhí)行國(guó)家課程和地方課程的同時(shí),應(yīng)......

        勘探開發(fā)研究院實(shí)習(xí)小結(jié)

        勘探開發(fā)研究院實(shí)習(xí)小結(jié) 在過去的一個(gè)月的時(shí)間,我們完成了在勘探開發(fā)研究院的實(shí)習(xí)。在這短暫的過程,通過各位領(lǐng)導(dǎo)及師傅的言傳身教,了解到了勘探開發(fā)研究院如何對(duì)玉門油田的發(fā)......

        校本課程開發(fā)階段小結(jié)

        雙泉小學(xué) 校本課程開發(fā)階段總結(jié) (2011-2012學(xué)年下期) 2012.6 雙泉小學(xué) 校本課程開發(fā)階段總結(jié) 經(jīng)過了一個(gè)學(xué)期的努力工作,已初步完成了本階段的計(jì)劃,學(xué)生在學(xué)習(xí)《雕版印刷》......

        異地跨團(tuán)隊(duì)開發(fā)小結(jié)

        異地跨團(tuán)隊(duì)開發(fā)小結(jié) 對(duì)開發(fā)中遇到的問題進(jìn)行小結(jié): 1計(jì)劃很重要 包括項(xiàng)目完整流程的計(jì)劃,各階段各方面各部門各環(huán)境的計(jì)劃與協(xié)調(diào)。計(jì)劃時(shí)有留下余地時(shí)間,計(jì)劃制定要從粗到細(xì),具......

        化工開發(fā)與設(shè)計(jì)小結(jié)范文

        第一章小結(jié) 1、實(shí)驗(yàn)室研究的結(jié)果是確定一種有希望的反應(yīng)方法;化工過程開發(fā)的結(jié)果是實(shí)現(xiàn)工業(yè)化。 2、化工過程研究與開發(fā)的基本方法有實(shí)驗(yàn)研究方法和數(shù)學(xué)模型方法,數(shù)學(xué)模型方法......

        開發(fā)區(qū)黨委副書記個(gè)人思想工作小結(jié)

        開發(fā)區(qū)黨委副書記個(gè)人思想工作小結(jié) 開發(fā)區(qū)XX年5月成立時(shí),我在五呂鎮(zhèn)擔(dān)任黨委副書記,隨鎮(zhèn)成建制劃入開發(fā)區(qū)而成為一名開發(fā)區(qū)人,XX年2月調(diào)區(qū)農(nóng)辦任副主任、同年8月調(diào)區(qū)黨政辦任副......

        HR專題:職業(yè)規(guī)劃

        HR專題:職業(yè)規(guī)劃一、【職業(yè)生涯四階段】1)起步:畢業(yè)后5~6年,了解社會(huì)及學(xué)習(xí)工作的方法,雄心勃勃、自信。需踏實(shí)學(xué)習(xí)實(shí)踐知識(shí),找出優(yōu)勢(shì),挖掘潛力;2)成長(zhǎng):5~7年,熟悉某領(lǐng)域,有專業(yè)水準(zhǔn)。需......