前言
如今智能信息時(shí)代發(fā)展迅猛,年輕一代享受著時(shí)代紅利,而上了年紀(jì)的長輩卻越來越迷茫,對(duì)于智能手機(jī)根本搞不清使用方法,很多老人只能退而求其次,使用老人機(jī)滿足打電話這樣的就基本需求,同時(shí)老人機(jī)存在很多局限:有時(shí)老人家會(huì)因?yàn)樾耐措娫捹M(fèi)刻意控制時(shí)長;大多數(shù)老人機(jī)只能打電話,不能視頻通話。如今網(wǎng)絡(luò)如此發(fā)達(dá),微信作為全球統(tǒng)一的及時(shí)通訊軟件,不但通話免費(fèi),還能打視頻電話,為何不開發(fā)針對(duì)老人的微信版本呢?只知道兒童智能手表可以打微信電話,但還是無法滿足所有痛點(diǎn),開造:
項(xiàng)目說明
思路:基于STM32 的USB鼠標(biāo)控制手機(jī)完成自動(dòng)化控制操作,一般的手機(jī)都支持USB OTG功能。但OTG功能 存在一個(gè)很大的弊端,就是無法邊充電邊使用,本文設(shè)計(jì)功能切換電路解決了這一問題,可閑時(shí)給手機(jī)充電 。制作此項(xiàng)目需要參考我的前兩篇博文。
STM32CUBEMX簡單幾步,DIY基于STM32的可編程USB鼠標(biāo),硬件自動(dòng)化助手 -https://blog.csdn.net/xhl9434826546/article/details/122391238 STM32CUBEMX配置實(shí)現(xiàn)STM32F103C8T6矩陣鍵盤掃描 https://blog.csdn.net/xhl9434826546/article/details/122725117
所需材料
舊安卓智能手機(jī) 5pin的MicroUSB接頭 矩陣鍵盤 STM32F103C8T6最小系統(tǒng)板 手機(jī)支架 mos管或繼電器
一、先看成果
123A 選擇聯(lián)系人1 選擇聯(lián)系人2 選擇聯(lián)系人3 解鎖 4 5 6 B 選擇聯(lián)系人4 選擇聯(lián)系人5 選擇聯(lián)系人6 進(jìn)入微信 7 8 9 C 選擇聯(lián)系人7 選擇聯(lián)系人8 選擇聯(lián)系人9 開始呼叫 * 0 # D 解鎖并進(jìn)入微信 選擇聯(lián)系人0 開始呼叫 結(jié)束通話
#mermaid-svg-uaF1ym8rykXelxAG .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-uaF1ym8rykXelxAG .label text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .node rect,#mermaid-svg-uaF1ym8rykXelxAG .node circle,#mermaid-svg-uaF1ym8rykXelxAG .node ellipse,#mermaid-svg-uaF1ym8rykXelxAG .node polygon,#mermaid-svg-uaF1ym8rykXelxAG .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-uaF1ym8rykXelxAG .node .label{text-align:center;fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .node.clickable{cursor:pointer}#mermaid-svg-uaF1ym8rykXelxAG .arrowheadPath{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-uaF1ym8rykXelxAG .flowchart-link{stroke:#333;fill:none}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel rect{opacity:0.9}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel span{color:#333}#mermaid-svg-uaF1ym8rykXelxAG .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-uaF1ym8rykXelxAG .cluster text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-uaF1ym8rykXelxAG .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-uaF1ym8rykXelxAG text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .actor-line{stroke:grey}#mermaid-svg-uaF1ym8rykXelxAG .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .sequenceNumber{fill:#fff}#mermaid-svg-uaF1ym8rykXelxAG #sequencenumber{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG #crosshead path{fill:#333;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .messageText{fill:#333;stroke:#333}#mermaid-svg-uaF1ym8rykXelxAG .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-uaF1ym8rykXelxAG .labelText,#mermaid-svg-uaF1ym8rykXelxAG .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .loopText,#mermaid-svg-uaF1ym8rykXelxAG .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-uaF1ym8rykXelxAG .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-uaF1ym8rykXelxAG .noteText,#mermaid-svg-uaF1ym8rykXelxAG .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-uaF1ym8rykXelxAG .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-uaF1ym8rykXelxAG .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-uaF1ym8rykXelxAG .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-uaF1ym8rykXelxAG .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .section{stroke:none;opacity:0.2}#mermaid-svg-uaF1ym8rykXelxAG .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-uaF1ym8rykXelxAG .section2{fill:#fff400}#mermaid-svg-uaF1ym8rykXelxAG .section1,#mermaid-svg-uaF1ym8rykXelxAG .section3{fill:#fff;opacity:0.2}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle0{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle1{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle2{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle3{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-uaF1ym8rykXelxAG .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .grid path{stroke-width:0}#mermaid-svg-uaF1ym8rykXelxAG .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-uaF1ym8rykXelxAG .task{stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .taskText:not([font-size]){font-size:11px}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-uaF1ym8rykXelxAG .task.clickable{cursor:pointer}#mermaid-svg-uaF1ym8rykXelxAG .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-uaF1ym8rykXelxAG .taskText0,#mermaid-svg-uaF1ym8rykXelxAG .taskText1,#mermaid-svg-uaF1ym8rykXelxAG .taskText2,#mermaid-svg-uaF1ym8rykXelxAG .taskText3{fill:#fff}#mermaid-svg-uaF1ym8rykXelxAG .task0,#mermaid-svg-uaF1ym8rykXelxAG .task1,#mermaid-svg-uaF1ym8rykXelxAG .task2,#mermaid-svg-uaF1ym8rykXelxAG .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside0,#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside2{fill:#000}#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside1,#mermaid-svg-uaF1ym8rykXelxAG .taskTextOutside3{fill:#000}#mermaid-svg-uaF1ym8rykXelxAG .active0,#mermaid-svg-uaF1ym8rykXelxAG .active1,#mermaid-svg-uaF1ym8rykXelxAG .active2,#mermaid-svg-uaF1ym8rykXelxAG .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-uaF1ym8rykXelxAG .activeText0,#mermaid-svg-uaF1ym8rykXelxAG .activeText1,#mermaid-svg-uaF1ym8rykXelxAG .activeText2,#mermaid-svg-uaF1ym8rykXelxAG .activeText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .done0,#mermaid-svg-uaF1ym8rykXelxAG .done1,#mermaid-svg-uaF1ym8rykXelxAG .done2,#mermaid-svg-uaF1ym8rykXelxAG .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .doneText0,#mermaid-svg-uaF1ym8rykXelxAG .doneText1,#mermaid-svg-uaF1ym8rykXelxAG .doneText2,#mermaid-svg-uaF1ym8rykXelxAG .doneText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .crit0,#mermaid-svg-uaF1ym8rykXelxAG .crit1,#mermaid-svg-uaF1ym8rykXelxAG .crit2,#mermaid-svg-uaF1ym8rykXelxAG .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .activeCrit0,#mermaid-svg-uaF1ym8rykXelxAG .activeCrit1,#mermaid-svg-uaF1ym8rykXelxAG .activeCrit2,#mermaid-svg-uaF1ym8rykXelxAG .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-uaF1ym8rykXelxAG .doneCrit0,#mermaid-svg-uaF1ym8rykXelxAG .doneCrit1,#mermaid-svg-uaF1ym8rykXelxAG .doneCrit2,#mermaid-svg-uaF1ym8rykXelxAG .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-uaF1ym8rykXelxAG .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-uaF1ym8rykXelxAG .milestoneText{font-style:italic}#mermaid-svg-uaF1ym8rykXelxAG .doneCritText0,#mermaid-svg-uaF1ym8rykXelxAG .doneCritText1,#mermaid-svg-uaF1ym8rykXelxAG .doneCritText2,#mermaid-svg-uaF1ym8rykXelxAG .doneCritText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .activeCritText0,#mermaid-svg-uaF1ym8rykXelxAG .activeCritText1,#mermaid-svg-uaF1ym8rykXelxAG .activeCritText2,#mermaid-svg-uaF1ym8rykXelxAG .activeCritText3{fill:#000 !important}#mermaid-svg-uaF1ym8rykXelxAG .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup text .title{font-weight:bolder}#mermaid-svg-uaF1ym8rykXelxAG g.clickable{cursor:pointer}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-uaF1ym8rykXelxAG g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-uaF1ym8rykXelxAG .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-uaF1ym8rykXelxAG .dashed-line{stroke-dasharray:3}#mermaid-svg-uaF1ym8rykXelxAG #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG .commit-id,#mermaid-svg-uaF1ym8rykXelxAG .commit-msg,#mermaid-svg-uaF1ym8rykXelxAG .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-uaF1ym8rykXelxAG g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-uaF1ym8rykXelxAG .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-uaF1ym8rykXelxAG .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-uaF1ym8rykXelxAG .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-uaF1ym8rykXelxAG .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-uaF1ym8rykXelxAG .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-uaF1ym8rykXelxAG .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-uaF1ym8rykXelxAG .edgeLabel text{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-uaF1ym8rykXelxAG .node circle.state-start{fill:black;stroke:black}#mermaid-svg-uaF1ym8rykXelxAG .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-uaF1ym8rykXelxAG #statediagram-barbEnd{fill:#9370db}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state .divider{stroke:#9370db}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-uaF1ym8rykXelxAG .note-edge{stroke-dasharray:5}#mermaid-svg-uaF1ym8rykXelxAG .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-uaF1ym8rykXelxAG .error-icon{fill:#522}#mermaid-svg-uaF1ym8rykXelxAG .error-text{fill:#522;stroke:#522}#mermaid-svg-uaF1ym8rykXelxAG .edge-thickness-normal{stroke-width:2px}#mermaid-svg-uaF1ym8rykXelxAG .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-uaF1ym8rykXelxAG .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-uaF1ym8rykXelxAG .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-uaF1ym8rykXelxAG .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-uaF1ym8rykXelxAG .marker{fill:#333}#mermaid-svg-uaF1ym8rykXelxAG .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-uaF1ym8rykXelxAG {color: rgba(0, 0, 0, 0.75);font: ;}
解鎖進(jìn)入微信選擇聯(lián)系人開始呼叫結(jié)束通話
二、硬件設(shè)計(jì)
1 接線示意圖
1.1 矩陣鍵盤
矩陣鍵盤內(nèi)部接線示意圖如下:
1.2 MicroUSB OTG接口功能切換電路
MicroUSB有5個(gè)引腳,其中兩個(gè)用來供電(VCC、GND),兩個(gè)用來傳輸數(shù)據(jù)(D+、D-),還有一個(gè)ID引腳是用來選擇OTG功能的。當(dāng)ID接地時(shí),手機(jī)會(huì)啟用OTG功能,當(dāng)ID懸空時(shí)為普通數(shù)據(jù)線功能。經(jīng)過反復(fù)實(shí)驗(yàn),發(fā)現(xiàn)手機(jī)在MicroUSB剛插入時(shí)才檢測是否開啟OTG功能,為了**模擬插入和拔出的操作,用MOS管來斷電,用單片機(jī)控制ID引腳的電平,實(shí)現(xiàn)功能切換,達(dá)到空閑時(shí)充電的目的。**手頭只要一顆IRF540N的N型MOS管,只能用如下電路控制。
根據(jù)數(shù)據(jù)手冊(cè),此MOS管過于大材小用,VDSS = 100V RDS(on) = 44m? ID = 33A。 同時(shí)VGSth在2-4V之間,而單片機(jī)IO在輸出電壓為3.3V,雖然在這個(gè)范圍內(nèi),但為了使MOS能夠完全導(dǎo)通,利用開漏輸出功能配合上拉電阻可將IO口輸出電壓提高到5V。
2 焊接
為了省去焊接的麻煩,畫了一個(gè)PCB板,第一板存在一些小問題(沒有畫入MOS管,加入了音頻功放功能作為拓展可以忽略),以上述接線圖為準(zhǔn)。
三、軟件設(shè)計(jì)
根據(jù)此文章配置好USB鼠標(biāo)程序框架
STM32CUBEMX簡單幾步,DIY基于STM32的可編程USB鼠標(biāo),硬件自動(dòng)化助手 -https://blog.csdn.net/xhl9434826546/article/details/122391238
結(jié)合此文章添加矩陣鍵盤功能
STM32CUBEMX配置實(shí)現(xiàn)STM32F103C8T6矩陣鍵盤掃描 https://blog.csdn.net/xhl9434826546/article/details/122725117
1 引腳配置
根據(jù)以上配置好USB鼠標(biāo)后配置鍵盤引腳和USB OTG功能切換控制引腳。 將鍵盤的8個(gè)引腳全部配置為上拉模式,其中4個(gè)為輸出口、4個(gè)為輸入口 將USB OTG控制的兩個(gè)引腳配置為開漏輸出,可修改名稱方便閱讀
2.1 修改usb_device.c文件
在編寫鼠標(biāo)控制程序時(shí)發(fā)現(xiàn)鼠標(biāo)只能相對(duì)移動(dòng),無法移動(dòng)絕對(duì)位置,而點(diǎn)擊屏幕最重要的時(shí)移動(dòng)到屏幕指定位置。為了解決這一問題,本文采用的方案為:
#mermaid-svg-VcJs76U9MF3lhkR0 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .label text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .node rect,#mermaid-svg-VcJs76U9MF3lhkR0 .node circle,#mermaid-svg-VcJs76U9MF3lhkR0 .node ellipse,#mermaid-svg-VcJs76U9MF3lhkR0 .node polygon,#mermaid-svg-VcJs76U9MF3lhkR0 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .node .label{text-align:center;fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .node.clickable{cursor:pointer}#mermaid-svg-VcJs76U9MF3lhkR0 .arrowheadPath{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-VcJs76U9MF3lhkR0 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel rect{opacity:0.9}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel span{color:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .cluster text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-VcJs76U9MF3lhkR0 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-VcJs76U9MF3lhkR0 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .actor-line{stroke:grey}#mermaid-svg-VcJs76U9MF3lhkR0 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sequenceNumber{fill:#fff}#mermaid-svg-VcJs76U9MF3lhkR0 #sequencenumber{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .messageText{fill:#333;stroke:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-VcJs76U9MF3lhkR0 .labelText,#mermaid-svg-VcJs76U9MF3lhkR0 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .loopText,#mermaid-svg-VcJs76U9MF3lhkR0 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-VcJs76U9MF3lhkR0 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-VcJs76U9MF3lhkR0 .noteText,#mermaid-svg-VcJs76U9MF3lhkR0 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-VcJs76U9MF3lhkR0 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-VcJs76U9MF3lhkR0 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-VcJs76U9MF3lhkR0 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-VcJs76U9MF3lhkR0 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .section{stroke:none;opacity:0.2}#mermaid-svg-VcJs76U9MF3lhkR0 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-VcJs76U9MF3lhkR0 .section2{fill:#fff400}#mermaid-svg-VcJs76U9MF3lhkR0 .section1,#mermaid-svg-VcJs76U9MF3lhkR0 .section3{fill:#fff;opacity:0.2}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle0{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle1{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle2{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle3{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-VcJs76U9MF3lhkR0 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .grid path{stroke-width:0}#mermaid-svg-VcJs76U9MF3lhkR0 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-VcJs76U9MF3lhkR0 .task{stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText:not([font-size]){font-size:11px}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-VcJs76U9MF3lhkR0 .task.clickable{cursor:pointer}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-VcJs76U9MF3lhkR0 .taskText0,#mermaid-svg-VcJs76U9MF3lhkR0 .taskText1,#mermaid-svg-VcJs76U9MF3lhkR0 .taskText2,#mermaid-svg-VcJs76U9MF3lhkR0 .taskText3{fill:#fff}#mermaid-svg-VcJs76U9MF3lhkR0 .task0,#mermaid-svg-VcJs76U9MF3lhkR0 .task1,#mermaid-svg-VcJs76U9MF3lhkR0 .task2,#mermaid-svg-VcJs76U9MF3lhkR0 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside0,#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside2{fill:#000}#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside1,#mermaid-svg-VcJs76U9MF3lhkR0 .taskTextOutside3{fill:#000}#mermaid-svg-VcJs76U9MF3lhkR0 .active0,#mermaid-svg-VcJs76U9MF3lhkR0 .active1,#mermaid-svg-VcJs76U9MF3lhkR0 .active2,#mermaid-svg-VcJs76U9MF3lhkR0 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-VcJs76U9MF3lhkR0 .activeText0,#mermaid-svg-VcJs76U9MF3lhkR0 .activeText1,#mermaid-svg-VcJs76U9MF3lhkR0 .activeText2,#mermaid-svg-VcJs76U9MF3lhkR0 .activeText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .done0,#mermaid-svg-VcJs76U9MF3lhkR0 .done1,#mermaid-svg-VcJs76U9MF3lhkR0 .done2,#mermaid-svg-VcJs76U9MF3lhkR0 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .doneText0,#mermaid-svg-VcJs76U9MF3lhkR0 .doneText1,#mermaid-svg-VcJs76U9MF3lhkR0 .doneText2,#mermaid-svg-VcJs76U9MF3lhkR0 .doneText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .crit0,#mermaid-svg-VcJs76U9MF3lhkR0 .crit1,#mermaid-svg-VcJs76U9MF3lhkR0 .crit2,#mermaid-svg-VcJs76U9MF3lhkR0 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit0,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit1,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit2,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit0,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit1,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit2,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-VcJs76U9MF3lhkR0 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-VcJs76U9MF3lhkR0 .milestoneText{font-style:italic}#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText0,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText1,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText2,#mermaid-svg-VcJs76U9MF3lhkR0 .doneCritText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText0,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText1,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText2,#mermaid-svg-VcJs76U9MF3lhkR0 .activeCritText3{fill:#000 !important}#mermaid-svg-VcJs76U9MF3lhkR0 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup text .title{font-weight:bolder}#mermaid-svg-VcJs76U9MF3lhkR0 g.clickable{cursor:pointer}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-VcJs76U9MF3lhkR0 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-VcJs76U9MF3lhkR0 .dashed-line{stroke-dasharray:3}#mermaid-svg-VcJs76U9MF3lhkR0 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 .commit-id,#mermaid-svg-VcJs76U9MF3lhkR0 .commit-msg,#mermaid-svg-VcJs76U9MF3lhkR0 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-VcJs76U9MF3lhkR0 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-VcJs76U9MF3lhkR0 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-VcJs76U9MF3lhkR0 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-VcJs76U9MF3lhkR0 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-VcJs76U9MF3lhkR0 .edgeLabel text{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-VcJs76U9MF3lhkR0 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-VcJs76U9MF3lhkR0 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-VcJs76U9MF3lhkR0 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-VcJs76U9MF3lhkR0 .note-edge{stroke-dasharray:5}#mermaid-svg-VcJs76U9MF3lhkR0 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-VcJs76U9MF3lhkR0 .error-icon{fill:#522}#mermaid-svg-VcJs76U9MF3lhkR0 .error-text{fill:#522;stroke:#522}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-VcJs76U9MF3lhkR0 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-VcJs76U9MF3lhkR0 .marker{fill:#333}#mermaid-svg-VcJs76U9MF3lhkR0 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-VcJs76U9MF3lhkR0 {color: rgba(0, 0, 0, 0.75);font: ;}
一直移動(dòng)到最左上角設(shè)為原點(diǎn)相對(duì)移動(dòng)計(jì)算絕對(duì)位置
添加靜態(tài)變量
static int16_t Px
= 0 , Py
= 0 ;
static uint8_t L
= 0 , R
= 0 , M
= 0 ;
添加鼠標(biāo)基本控制函數(shù)
void Set_Mouse ( int8_t x
, int8_t y
, int8_t z
, uint8_t l
, uint8_t r
, uint8_t m
)
{ uint8_t buf
[ 4 ] = { 0 , 0 , 0 , 0 } ; L
= l
; R
= r
; M
= m
; buf
[ 0 ] = L
+ R
* 2 + M
* 4 ; buf
[ 1 ] = x
; buf
[ 2 ] = y
; buf
[ 3 ] = z
; USBD_HID_SendReport ( & hUsbDeviceFS
, buf
, 4 ) ; HAL_Delay ( 100 ) ;
}
void Scroll ( int8_t z
)
{ Set_Mouse ( 0 , 0 , z
, L
, R
, M
) ;
}
void Move ( int8_t x
, int8_t y
)
{ Px
+= x
; Py
+= y
; if ( Px
< 0 ) Px
= 0 ; if ( Py
< 0 ) Py
= 0 ; if ( Px
>= PX_MAX
- 1 ) Px
= PX_MAX
- 1 ; if ( Py
>= PY_MAX
- 1 ) Py
= PY_MAX
- 1 ; Set_Mouse ( x
, y
, 0 , L
, R
, M
) ;
}
void Move_Reset ( void )
{ uint8_t i
= 16 ; while ( i
-- ) Move ( - 120 , - 120 ) ; Px
= Py
= 0 ;
}
void Move_To ( int16_t x
, int16_t y
)
{ x
-= Px
; y
-= Py
; if ( x
> 0 ) { while ( x
>= 100 ) x
-= 100 , Move ( 100 , 0 ) ; } else { while ( x
<= - 100 ) x
+= 100 , Move ( - 100 , 0 ) ; } Move ( x
, 0 ) ; if ( y
> 0 ) { while ( y
>= 100 ) y
-= 100 , Move ( 0 , 100 ) ; } else { while ( y
<= - 100 ) y
+= 100 , Move ( 0 , - 100 ) ; } Move ( 0 , y
) ;
}
void Click_L ( void )
{ Set_Mouse ( 0 , 0 , 0 , 1 , 0 , 0 ) ; Set_Mouse ( 0 , 0 , 0 , 0 , 0 , 0 ) ;
}
void Click_R ( void )
{ Set_Mouse ( 0 , 0 , 0 , 0 , 1 , 0 ) ; Set_Mouse ( 0 , 0 , 0 , 0 , 0 , 0 ) ;
}
void Click_M ( void )
{ Set_Mouse ( 0 , 0 , 0 , 0 , 0 , 1 ) ; Set_Mouse ( 0 , 0 , 0 , 0 , 0 , 0 ) ;
}
void Move_To_Click ( int16_t x
, int16_t y
)
{ Move_To ( x
, y
) ; Click_L ( ) ;
}
添加自動(dòng)化程序,需要將手機(jī)開發(fā)者選項(xiàng)打開,顯示指針位置,方便確定每個(gè)步驟點(diǎn)擊屏幕的具體位置。本文使用的安卓手機(jī)屏幕分辨率為1080x1920. 手機(jī)解鎖程序:滑動(dòng)解鎖
#mermaid-svg-tfu8CgtGtQrLRhfw .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .label text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .node rect,#mermaid-svg-tfu8CgtGtQrLRhfw .node circle,#mermaid-svg-tfu8CgtGtQrLRhfw .node ellipse,#mermaid-svg-tfu8CgtGtQrLRhfw .node polygon,#mermaid-svg-tfu8CgtGtQrLRhfw .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .node .label{text-align:center;fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .node.clickable{cursor:pointer}#mermaid-svg-tfu8CgtGtQrLRhfw .arrowheadPath{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-tfu8CgtGtQrLRhfw .flowchart-link{stroke:#333;fill:none}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel rect{opacity:0.9}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel span{color:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .cluster text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-tfu8CgtGtQrLRhfw .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-tfu8CgtGtQrLRhfw text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .actor-line{stroke:grey}#mermaid-svg-tfu8CgtGtQrLRhfw .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sequenceNumber{fill:#fff}#mermaid-svg-tfu8CgtGtQrLRhfw #sequencenumber{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw #crosshead path{fill:#333;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .messageText{fill:#333;stroke:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-tfu8CgtGtQrLRhfw .labelText,#mermaid-svg-tfu8CgtGtQrLRhfw .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .loopText,#mermaid-svg-tfu8CgtGtQrLRhfw .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-tfu8CgtGtQrLRhfw .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-tfu8CgtGtQrLRhfw .noteText,#mermaid-svg-tfu8CgtGtQrLRhfw .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-tfu8CgtGtQrLRhfw .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-tfu8CgtGtQrLRhfw .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-tfu8CgtGtQrLRhfw .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-tfu8CgtGtQrLRhfw .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .section{stroke:none;opacity:0.2}#mermaid-svg-tfu8CgtGtQrLRhfw .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-tfu8CgtGtQrLRhfw .section2{fill:#fff400}#mermaid-svg-tfu8CgtGtQrLRhfw .section1,#mermaid-svg-tfu8CgtGtQrLRhfw .section3{fill:#fff;opacity:0.2}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle0{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle1{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle2{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle3{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-tfu8CgtGtQrLRhfw .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .grid path{stroke-width:0}#mermaid-svg-tfu8CgtGtQrLRhfw .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-tfu8CgtGtQrLRhfw .task{stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText:not([font-size]){font-size:11px}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-tfu8CgtGtQrLRhfw .task.clickable{cursor:pointer}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-tfu8CgtGtQrLRhfw .taskText0,#mermaid-svg-tfu8CgtGtQrLRhfw .taskText1,#mermaid-svg-tfu8CgtGtQrLRhfw .taskText2,#mermaid-svg-tfu8CgtGtQrLRhfw .taskText3{fill:#fff}#mermaid-svg-tfu8CgtGtQrLRhfw .task0,#mermaid-svg-tfu8CgtGtQrLRhfw .task1,#mermaid-svg-tfu8CgtGtQrLRhfw .task2,#mermaid-svg-tfu8CgtGtQrLRhfw .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside0,#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside2{fill:#000}#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside1,#mermaid-svg-tfu8CgtGtQrLRhfw .taskTextOutside3{fill:#000}#mermaid-svg-tfu8CgtGtQrLRhfw .active0,#mermaid-svg-tfu8CgtGtQrLRhfw .active1,#mermaid-svg-tfu8CgtGtQrLRhfw .active2,#mermaid-svg-tfu8CgtGtQrLRhfw .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-tfu8CgtGtQrLRhfw .activeText0,#mermaid-svg-tfu8CgtGtQrLRhfw .activeText1,#mermaid-svg-tfu8CgtGtQrLRhfw .activeText2,#mermaid-svg-tfu8CgtGtQrLRhfw .activeText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .done0,#mermaid-svg-tfu8CgtGtQrLRhfw .done1,#mermaid-svg-tfu8CgtGtQrLRhfw .done2,#mermaid-svg-tfu8CgtGtQrLRhfw .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .doneText0,#mermaid-svg-tfu8CgtGtQrLRhfw .doneText1,#mermaid-svg-tfu8CgtGtQrLRhfw .doneText2,#mermaid-svg-tfu8CgtGtQrLRhfw .doneText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .crit0,#mermaid-svg-tfu8CgtGtQrLRhfw .crit1,#mermaid-svg-tfu8CgtGtQrLRhfw .crit2,#mermaid-svg-tfu8CgtGtQrLRhfw .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit0,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit1,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit2,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit0,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit1,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit2,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-tfu8CgtGtQrLRhfw .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-tfu8CgtGtQrLRhfw .milestoneText{font-style:italic}#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText0,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText1,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText2,#mermaid-svg-tfu8CgtGtQrLRhfw .doneCritText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText0,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText1,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText2,#mermaid-svg-tfu8CgtGtQrLRhfw .activeCritText3{fill:#000 !important}#mermaid-svg-tfu8CgtGtQrLRhfw .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup text .title{font-weight:bolder}#mermaid-svg-tfu8CgtGtQrLRhfw g.clickable{cursor:pointer}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-tfu8CgtGtQrLRhfw .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-tfu8CgtGtQrLRhfw .dashed-line{stroke-dasharray:3}#mermaid-svg-tfu8CgtGtQrLRhfw #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw .commit-id,#mermaid-svg-tfu8CgtGtQrLRhfw .commit-msg,#mermaid-svg-tfu8CgtGtQrLRhfw .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-tfu8CgtGtQrLRhfw .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-tfu8CgtGtQrLRhfw .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-tfu8CgtGtQrLRhfw .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-tfu8CgtGtQrLRhfw .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-tfu8CgtGtQrLRhfw .edgeLabel text{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-tfu8CgtGtQrLRhfw .node circle.state-start{fill:black;stroke:black}#mermaid-svg-tfu8CgtGtQrLRhfw .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-tfu8CgtGtQrLRhfw #statediagram-barbEnd{fill:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state .divider{stroke:#9370db}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-tfu8CgtGtQrLRhfw .note-edge{stroke-dasharray:5}#mermaid-svg-tfu8CgtGtQrLRhfw .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-tfu8CgtGtQrLRhfw .error-icon{fill:#522}#mermaid-svg-tfu8CgtGtQrLRhfw .error-text{fill:#522;stroke:#522}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-thickness-normal{stroke-width:2px}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-tfu8CgtGtQrLRhfw .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-tfu8CgtGtQrLRhfw .marker{fill:#333}#mermaid-svg-tfu8CgtGtQrLRhfw .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-tfu8CgtGtQrLRhfw {color: rgba(0, 0, 0, 0.75);font: ;}
移動(dòng)到中下位置按下左鍵向上移動(dòng)松開左鍵
void Unlock ( void )
{ Move_To_Click ( 550 , 1890 ) ; HAL_Delay ( 1000 ) ; Move_To ( 600 , 1400 ) ; Set_Mouse ( 0 , 0 , 0 , 1 , 0 , 0 ) ; Move_To ( 600 , 1000 ) ; Set_Mouse ( 0 , 0 , 0 , 0 , 0 , 0 ) ;
}
打開微信 先將微信圖標(biāo)放在桌面第2頁特定位置,方便點(diǎn)擊
#mermaid-svg-4Xevs19vOzQfZ2ve .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .label text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .node rect,#mermaid-svg-4Xevs19vOzQfZ2ve .node circle,#mermaid-svg-4Xevs19vOzQfZ2ve .node ellipse,#mermaid-svg-4Xevs19vOzQfZ2ve .node polygon,#mermaid-svg-4Xevs19vOzQfZ2ve .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .node .label{text-align:center;fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .node.clickable{cursor:pointer}#mermaid-svg-4Xevs19vOzQfZ2ve .arrowheadPath{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-4Xevs19vOzQfZ2ve .flowchart-link{stroke:#333;fill:none}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel rect{opacity:0.9}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel span{color:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .cluster text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-4Xevs19vOzQfZ2ve .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-4Xevs19vOzQfZ2ve text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .actor-line{stroke:grey}#mermaid-svg-4Xevs19vOzQfZ2ve .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sequenceNumber{fill:#fff}#mermaid-svg-4Xevs19vOzQfZ2ve #sequencenumber{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve #crosshead path{fill:#333;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .messageText{fill:#333;stroke:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-4Xevs19vOzQfZ2ve .labelText,#mermaid-svg-4Xevs19vOzQfZ2ve .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .loopText,#mermaid-svg-4Xevs19vOzQfZ2ve .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-4Xevs19vOzQfZ2ve .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-4Xevs19vOzQfZ2ve .noteText,#mermaid-svg-4Xevs19vOzQfZ2ve .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-4Xevs19vOzQfZ2ve .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-4Xevs19vOzQfZ2ve .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-4Xevs19vOzQfZ2ve .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-4Xevs19vOzQfZ2ve .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .section{stroke:none;opacity:0.2}#mermaid-svg-4Xevs19vOzQfZ2ve .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-4Xevs19vOzQfZ2ve .section2{fill:#fff400}#mermaid-svg-4Xevs19vOzQfZ2ve .section1,#mermaid-svg-4Xevs19vOzQfZ2ve .section3{fill:#fff;opacity:0.2}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle0{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle1{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle2{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle3{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-4Xevs19vOzQfZ2ve .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .grid path{stroke-width:0}#mermaid-svg-4Xevs19vOzQfZ2ve .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-4Xevs19vOzQfZ2ve .task{stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText:not([font-size]){font-size:11px}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-4Xevs19vOzQfZ2ve .task.clickable{cursor:pointer}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-4Xevs19vOzQfZ2ve .taskText0,#mermaid-svg-4Xevs19vOzQfZ2ve .taskText1,#mermaid-svg-4Xevs19vOzQfZ2ve .taskText2,#mermaid-svg-4Xevs19vOzQfZ2ve .taskText3{fill:#fff}#mermaid-svg-4Xevs19vOzQfZ2ve .task0,#mermaid-svg-4Xevs19vOzQfZ2ve .task1,#mermaid-svg-4Xevs19vOzQfZ2ve .task2,#mermaid-svg-4Xevs19vOzQfZ2ve .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside0,#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside2{fill:#000}#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside1,#mermaid-svg-4Xevs19vOzQfZ2ve .taskTextOutside3{fill:#000}#mermaid-svg-4Xevs19vOzQfZ2ve .active0,#mermaid-svg-4Xevs19vOzQfZ2ve .active1,#mermaid-svg-4Xevs19vOzQfZ2ve .active2,#mermaid-svg-4Xevs19vOzQfZ2ve .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-4Xevs19vOzQfZ2ve .activeText0,#mermaid-svg-4Xevs19vOzQfZ2ve .activeText1,#mermaid-svg-4Xevs19vOzQfZ2ve .activeText2,#mermaid-svg-4Xevs19vOzQfZ2ve .activeText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .done0,#mermaid-svg-4Xevs19vOzQfZ2ve .done1,#mermaid-svg-4Xevs19vOzQfZ2ve .done2,#mermaid-svg-4Xevs19vOzQfZ2ve .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .doneText0,#mermaid-svg-4Xevs19vOzQfZ2ve .doneText1,#mermaid-svg-4Xevs19vOzQfZ2ve .doneText2,#mermaid-svg-4Xevs19vOzQfZ2ve .doneText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .crit0,#mermaid-svg-4Xevs19vOzQfZ2ve .crit1,#mermaid-svg-4Xevs19vOzQfZ2ve .crit2,#mermaid-svg-4Xevs19vOzQfZ2ve .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit0,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit1,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit2,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit0,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit1,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit2,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-4Xevs19vOzQfZ2ve .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-4Xevs19vOzQfZ2ve .milestoneText{font-style:italic}#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText0,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText1,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText2,#mermaid-svg-4Xevs19vOzQfZ2ve .doneCritText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText0,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText1,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText2,#mermaid-svg-4Xevs19vOzQfZ2ve .activeCritText3{fill:#000 !important}#mermaid-svg-4Xevs19vOzQfZ2ve .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup text .title{font-weight:bolder}#mermaid-svg-4Xevs19vOzQfZ2ve g.clickable{cursor:pointer}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-4Xevs19vOzQfZ2ve .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-4Xevs19vOzQfZ2ve .dashed-line{stroke-dasharray:3}#mermaid-svg-4Xevs19vOzQfZ2ve #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve .commit-id,#mermaid-svg-4Xevs19vOzQfZ2ve .commit-msg,#mermaid-svg-4Xevs19vOzQfZ2ve .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-4Xevs19vOzQfZ2ve .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-4Xevs19vOzQfZ2ve .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-4Xevs19vOzQfZ2ve .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-4Xevs19vOzQfZ2ve .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-4Xevs19vOzQfZ2ve .edgeLabel text{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-4Xevs19vOzQfZ2ve .node circle.state-start{fill:black;stroke:black}#mermaid-svg-4Xevs19vOzQfZ2ve .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-4Xevs19vOzQfZ2ve #statediagram-barbEnd{fill:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state .divider{stroke:#9370db}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-4Xevs19vOzQfZ2ve .note-edge{stroke-dasharray:5}#mermaid-svg-4Xevs19vOzQfZ2ve .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-4Xevs19vOzQfZ2ve .error-icon{fill:#522}#mermaid-svg-4Xevs19vOzQfZ2ve .error-text{fill:#522;stroke:#522}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-thickness-normal{stroke-width:2px}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-4Xevs19vOzQfZ2ve .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-4Xevs19vOzQfZ2ve .marker{fill:#333}#mermaid-svg-4Xevs19vOzQfZ2ve .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-4Xevs19vOzQfZ2ve {color: rgba(0, 0, 0, 0.75);font: ;}
移動(dòng)到中下位置滾輪翻頁點(diǎn)擊微信圖標(biāo)
void Open_Wechat ( void )
{ Move_To_Click ( 550 , 1890 ) ; HAL_Delay ( 1000 ) ; Move_To ( 550 , 1000 ) ; Scroll ( - 100 ) ; Move_To_Click ( 150 , 150 ) ; HAL_Delay ( 1000 ) ; Move_To_Click ( 400 , 1740 ) ;
}
選擇聯(lián)系人 先將微信中聯(lián)系人的備注添加前綴,這樣就能進(jìn)行排序。本文將常用的10個(gè)聯(lián)系人備注分別加上 A0、A1、A2、A3、A4、A5、A6、A7、A8、A9。這樣就可以精確定位聯(lián)系人了。
#mermaid-svg-Zweev9V959Z9dLtm .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Zweev9V959Z9dLtm .label text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .node rect,#mermaid-svg-Zweev9V959Z9dLtm .node circle,#mermaid-svg-Zweev9V959Z9dLtm .node ellipse,#mermaid-svg-Zweev9V959Z9dLtm .node polygon,#mermaid-svg-Zweev9V959Z9dLtm .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Zweev9V959Z9dLtm .node .label{text-align:center;fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .node.clickable{cursor:pointer}#mermaid-svg-Zweev9V959Z9dLtm .arrowheadPath{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-Zweev9V959Z9dLtm .flowchart-link{stroke:#333;fill:none}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel rect{opacity:0.9}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel span{color:#333}#mermaid-svg-Zweev9V959Z9dLtm .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-Zweev9V959Z9dLtm .cluster text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-Zweev9V959Z9dLtm .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Zweev9V959Z9dLtm text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .actor-line{stroke:grey}#mermaid-svg-Zweev9V959Z9dLtm .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .sequenceNumber{fill:#fff}#mermaid-svg-Zweev9V959Z9dLtm #sequencenumber{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm #crosshead path{fill:#333;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .messageText{fill:#333;stroke:#333}#mermaid-svg-Zweev9V959Z9dLtm .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Zweev9V959Z9dLtm .labelText,#mermaid-svg-Zweev9V959Z9dLtm .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .loopText,#mermaid-svg-Zweev9V959Z9dLtm .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-Zweev9V959Z9dLtm .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Zweev9V959Z9dLtm .noteText,#mermaid-svg-Zweev9V959Z9dLtm .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-Zweev9V959Z9dLtm .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-Zweev9V959Z9dLtm .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-Zweev9V959Z9dLtm .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-Zweev9V959Z9dLtm .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .section{stroke:none;opacity:0.2}#mermaid-svg-Zweev9V959Z9dLtm .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-Zweev9V959Z9dLtm .section2{fill:#fff400}#mermaid-svg-Zweev9V959Z9dLtm .section1,#mermaid-svg-Zweev9V959Z9dLtm .section3{fill:#fff;opacity:0.2}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle0{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle1{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle2{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle3{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-Zweev9V959Z9dLtm .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .grid path{stroke-width:0}#mermaid-svg-Zweev9V959Z9dLtm .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-Zweev9V959Z9dLtm .task{stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .taskText:not([font-size]){font-size:11px}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-Zweev9V959Z9dLtm .task.clickable{cursor:pointer}#mermaid-svg-Zweev9V959Z9dLtm .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Zweev9V959Z9dLtm .taskText0,#mermaid-svg-Zweev9V959Z9dLtm .taskText1,#mermaid-svg-Zweev9V959Z9dLtm .taskText2,#mermaid-svg-Zweev9V959Z9dLtm .taskText3{fill:#fff}#mermaid-svg-Zweev9V959Z9dLtm .task0,#mermaid-svg-Zweev9V959Z9dLtm .task1,#mermaid-svg-Zweev9V959Z9dLtm .task2,#mermaid-svg-Zweev9V959Z9dLtm .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside0,#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside2{fill:#000}#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside1,#mermaid-svg-Zweev9V959Z9dLtm .taskTextOutside3{fill:#000}#mermaid-svg-Zweev9V959Z9dLtm .active0,#mermaid-svg-Zweev9V959Z9dLtm .active1,#mermaid-svg-Zweev9V959Z9dLtm .active2,#mermaid-svg-Zweev9V959Z9dLtm .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-Zweev9V959Z9dLtm .activeText0,#mermaid-svg-Zweev9V959Z9dLtm .activeText1,#mermaid-svg-Zweev9V959Z9dLtm .activeText2,#mermaid-svg-Zweev9V959Z9dLtm .activeText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .done0,#mermaid-svg-Zweev9V959Z9dLtm .done1,#mermaid-svg-Zweev9V959Z9dLtm .done2,#mermaid-svg-Zweev9V959Z9dLtm .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .doneText0,#mermaid-svg-Zweev9V959Z9dLtm .doneText1,#mermaid-svg-Zweev9V959Z9dLtm .doneText2,#mermaid-svg-Zweev9V959Z9dLtm .doneText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .crit0,#mermaid-svg-Zweev9V959Z9dLtm .crit1,#mermaid-svg-Zweev9V959Z9dLtm .crit2,#mermaid-svg-Zweev9V959Z9dLtm .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .activeCrit0,#mermaid-svg-Zweev9V959Z9dLtm .activeCrit1,#mermaid-svg-Zweev9V959Z9dLtm .activeCrit2,#mermaid-svg-Zweev9V959Z9dLtm .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-Zweev9V959Z9dLtm .doneCrit0,#mermaid-svg-Zweev9V959Z9dLtm .doneCrit1,#mermaid-svg-Zweev9V959Z9dLtm .doneCrit2,#mermaid-svg-Zweev9V959Z9dLtm .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-Zweev9V959Z9dLtm .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-Zweev9V959Z9dLtm .milestoneText{font-style:italic}#mermaid-svg-Zweev9V959Z9dLtm .doneCritText0,#mermaid-svg-Zweev9V959Z9dLtm .doneCritText1,#mermaid-svg-Zweev9V959Z9dLtm .doneCritText2,#mermaid-svg-Zweev9V959Z9dLtm .doneCritText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .activeCritText0,#mermaid-svg-Zweev9V959Z9dLtm .activeCritText1,#mermaid-svg-Zweev9V959Z9dLtm .activeCritText2,#mermaid-svg-Zweev9V959Z9dLtm .activeCritText3{fill:#000 !important}#mermaid-svg-Zweev9V959Z9dLtm .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup text .title{font-weight:bolder}#mermaid-svg-Zweev9V959Z9dLtm g.clickable{cursor:pointer}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Zweev9V959Z9dLtm g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-Zweev9V959Z9dLtm .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Zweev9V959Z9dLtm .dashed-line{stroke-dasharray:3}#mermaid-svg-Zweev9V959Z9dLtm #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm .commit-id,#mermaid-svg-Zweev9V959Z9dLtm .commit-msg,#mermaid-svg-Zweev9V959Z9dLtm .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Zweev9V959Z9dLtm g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Zweev9V959Z9dLtm .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Zweev9V959Z9dLtm .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-Zweev9V959Z9dLtm .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-Zweev9V959Z9dLtm .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Zweev9V959Z9dLtm .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-Zweev9V959Z9dLtm .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-Zweev9V959Z9dLtm .edgeLabel text{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Zweev9V959Z9dLtm .node circle.state-start{fill:black;stroke:black}#mermaid-svg-Zweev9V959Z9dLtm .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-Zweev9V959Z9dLtm #statediagram-barbEnd{fill:#9370db}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state .divider{stroke:#9370db}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-Zweev9V959Z9dLtm .note-edge{stroke-dasharray:5}#mermaid-svg-Zweev9V959Z9dLtm .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-Zweev9V959Z9dLtm .error-icon{fill:#522}#mermaid-svg-Zweev9V959Z9dLtm .error-text{fill:#522;stroke:#522}#mermaid-svg-Zweev9V959Z9dLtm .edge-thickness-normal{stroke-width:2px}#mermaid-svg-Zweev9V959Z9dLtm .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-Zweev9V959Z9dLtm .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-Zweev9V959Z9dLtm .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-Zweev9V959Z9dLtm .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-Zweev9V959Z9dLtm .marker{fill:#333}#mermaid-svg-Zweev9V959Z9dLtm .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-Zweev9V959Z9dLtm {color: rgba(0, 0, 0, 0.75);font: ;}
回到微信主頁點(diǎn)擊通訊錄點(diǎn)擊字母A點(diǎn)擊A分組下的聯(lián)系人
void Choose_Name ( int8_t num
)
{ Move_To_Click ( 40 , 100 ) ; Move_To_Click ( 40 , 100 ) ; Move_To_Click ( 40 , 100 ) ; Move_To_Click ( 40 , 100 ) ; Move_To_Click ( 40 , 100 ) ; Move_To_Click ( 400 , 1740 ) ; HAL_Delay ( 1000 ) ; Move_To_Click ( 1050 , 410 ) ; HAL_Delay ( 1000 ) ; Move_To_Click ( 200 , num
* 133 + 350 ) ;
}
開始呼叫 這一步較簡單。
#mermaid-svg-rG3OHrUrFxPvYlny .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-rG3OHrUrFxPvYlny .label text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .node rect,#mermaid-svg-rG3OHrUrFxPvYlny .node circle,#mermaid-svg-rG3OHrUrFxPvYlny .node ellipse,#mermaid-svg-rG3OHrUrFxPvYlny .node polygon,#mermaid-svg-rG3OHrUrFxPvYlny .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-rG3OHrUrFxPvYlny .node .label{text-align:center;fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .node.clickable{cursor:pointer}#mermaid-svg-rG3OHrUrFxPvYlny .arrowheadPath{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-rG3OHrUrFxPvYlny .flowchart-link{stroke:#333;fill:none}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel rect{opacity:0.9}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel span{color:#333}#mermaid-svg-rG3OHrUrFxPvYlny .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-rG3OHrUrFxPvYlny .cluster text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-rG3OHrUrFxPvYlny .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-rG3OHrUrFxPvYlny text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .actor-line{stroke:grey}#mermaid-svg-rG3OHrUrFxPvYlny .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sequenceNumber{fill:#fff}#mermaid-svg-rG3OHrUrFxPvYlny #sequencenumber{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny #crosshead path{fill:#333;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .messageText{fill:#333;stroke:#333}#mermaid-svg-rG3OHrUrFxPvYlny .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-rG3OHrUrFxPvYlny .labelText,#mermaid-svg-rG3OHrUrFxPvYlny .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .loopText,#mermaid-svg-rG3OHrUrFxPvYlny .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-rG3OHrUrFxPvYlny .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-rG3OHrUrFxPvYlny .noteText,#mermaid-svg-rG3OHrUrFxPvYlny .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-rG3OHrUrFxPvYlny .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-rG3OHrUrFxPvYlny .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-rG3OHrUrFxPvYlny .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-rG3OHrUrFxPvYlny .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .section{stroke:none;opacity:0.2}#mermaid-svg-rG3OHrUrFxPvYlny .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-rG3OHrUrFxPvYlny .section2{fill:#fff400}#mermaid-svg-rG3OHrUrFxPvYlny .section1,#mermaid-svg-rG3OHrUrFxPvYlny .section3{fill:#fff;opacity:0.2}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle0{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle1{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle2{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle3{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-rG3OHrUrFxPvYlny .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .grid path{stroke-width:0}#mermaid-svg-rG3OHrUrFxPvYlny .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-rG3OHrUrFxPvYlny .task{stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .taskText:not([font-size]){font-size:11px}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-rG3OHrUrFxPvYlny .task.clickable{cursor:pointer}#mermaid-svg-rG3OHrUrFxPvYlny .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-rG3OHrUrFxPvYlny .taskText0,#mermaid-svg-rG3OHrUrFxPvYlny .taskText1,#mermaid-svg-rG3OHrUrFxPvYlny .taskText2,#mermaid-svg-rG3OHrUrFxPvYlny .taskText3{fill:#fff}#mermaid-svg-rG3OHrUrFxPvYlny .task0,#mermaid-svg-rG3OHrUrFxPvYlny .task1,#mermaid-svg-rG3OHrUrFxPvYlny .task2,#mermaid-svg-rG3OHrUrFxPvYlny .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside0,#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside2{fill:#000}#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside1,#mermaid-svg-rG3OHrUrFxPvYlny .taskTextOutside3{fill:#000}#mermaid-svg-rG3OHrUrFxPvYlny .active0,#mermaid-svg-rG3OHrUrFxPvYlny .active1,#mermaid-svg-rG3OHrUrFxPvYlny .active2,#mermaid-svg-rG3OHrUrFxPvYlny .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-rG3OHrUrFxPvYlny .activeText0,#mermaid-svg-rG3OHrUrFxPvYlny .activeText1,#mermaid-svg-rG3OHrUrFxPvYlny .activeText2,#mermaid-svg-rG3OHrUrFxPvYlny .activeText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .done0,#mermaid-svg-rG3OHrUrFxPvYlny .done1,#mermaid-svg-rG3OHrUrFxPvYlny .done2,#mermaid-svg-rG3OHrUrFxPvYlny .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .doneText0,#mermaid-svg-rG3OHrUrFxPvYlny .doneText1,#mermaid-svg-rG3OHrUrFxPvYlny .doneText2,#mermaid-svg-rG3OHrUrFxPvYlny .doneText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .crit0,#mermaid-svg-rG3OHrUrFxPvYlny .crit1,#mermaid-svg-rG3OHrUrFxPvYlny .crit2,#mermaid-svg-rG3OHrUrFxPvYlny .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit0,#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit1,#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit2,#mermaid-svg-rG3OHrUrFxPvYlny .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit0,#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit1,#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit2,#mermaid-svg-rG3OHrUrFxPvYlny .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-rG3OHrUrFxPvYlny .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-rG3OHrUrFxPvYlny .milestoneText{font-style:italic}#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText0,#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText1,#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText2,#mermaid-svg-rG3OHrUrFxPvYlny .doneCritText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText0,#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText1,#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText2,#mermaid-svg-rG3OHrUrFxPvYlny .activeCritText3{fill:#000 !important}#mermaid-svg-rG3OHrUrFxPvYlny .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup text .title{font-weight:bolder}#mermaid-svg-rG3OHrUrFxPvYlny g.clickable{cursor:pointer}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-rG3OHrUrFxPvYlny .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-rG3OHrUrFxPvYlny .dashed-line{stroke-dasharray:3}#mermaid-svg-rG3OHrUrFxPvYlny #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny .commit-id,#mermaid-svg-rG3OHrUrFxPvYlny .commit-msg,#mermaid-svg-rG3OHrUrFxPvYlny .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-rG3OHrUrFxPvYlny .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-rG3OHrUrFxPvYlny .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-rG3OHrUrFxPvYlny .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-rG3OHrUrFxPvYlny .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-rG3OHrUrFxPvYlny .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-rG3OHrUrFxPvYlny .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-rG3OHrUrFxPvYlny .edgeLabel text{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-rG3OHrUrFxPvYlny .node circle.state-start{fill:black;stroke:black}#mermaid-svg-rG3OHrUrFxPvYlny .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-rG3OHrUrFxPvYlny #statediagram-barbEnd{fill:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state .divider{stroke:#9370db}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-rG3OHrUrFxPvYlny .note-edge{stroke-dasharray:5}#mermaid-svg-rG3OHrUrFxPvYlny .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-rG3OHrUrFxPvYlny .error-icon{fill:#522}#mermaid-svg-rG3OHrUrFxPvYlny .error-text{fill:#522;stroke:#522}#mermaid-svg-rG3OHrUrFxPvYlny .edge-thickness-normal{stroke-width:2px}#mermaid-svg-rG3OHrUrFxPvYlny .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-rG3OHrUrFxPvYlny .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-rG3OHrUrFxPvYlny .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-rG3OHrUrFxPvYlny .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-rG3OHrUrFxPvYlny .marker{fill:#333}#mermaid-svg-rG3OHrUrFxPvYlny .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-rG3OHrUrFxPvYlny {color: rgba(0, 0, 0, 0.75);font: ;}
點(diǎn)擊音視頻通話點(diǎn)擊視頻通話
void Start_Call ( )
{ Move_To_Click ( 550 , 1400 ) ; HAL_Delay ( 2000 ) ; Move_To_Click ( 550 , 1460 ) ;
}
結(jié)束通話
void Stop_Call ( void )
{ Move_To_Click ( 550 , 1600 ) ; HAL_Delay ( 1000 ) ; Move_To_Click ( 550 , 1600 ) ; Move_To_Click ( 350 , 1600 ) ;
}
2.2 修改usb_device.h文件
對(duì)屏幕分辨率添加宏定義
# define PX_MAX 1080
# define PY_MAX 1920
對(duì)以上函數(shù)添加聲明
void Set_Mouse ( int8_t x
, int8_t y
, int8_t z
, uint8_t L
, uint8_t R
, uint8_t M
) ;
void Scroll ( int8_t z
) ;
void Move ( int8_t x
, int8_t y
) ;
void Move_Reset ( void ) ;
void Move_To ( int16_t x
, int16_t y
) ;
void Click_L ( void ) ;
void Click_R ( void ) ;
void Click_M ( void ) ;
void Move_To_Click ( int16_t x
, int16_t y
) ; void Unlock ( void ) ;
void Open_Wechat ( void ) ;
void Start_Call ( void ) ;
void Choose_Name ( int8_t num
) ;
void Stop_Call ( void ) ;
3 修改main.c文件
添加矩陣鍵盤掃描函數(shù)
uint8_t Key_Scan ( void )
{ GPIO_InitTypeDef GPIO_InitStruct
= { 0 } ; HAL_GPIO_WritePin ( GPIOB
, GPIO_PIN_3
| GPIO_PIN_4
| GPIO_PIN_5
| GPIO_PIN_6
, GPIO_PIN_RESET
) ; GPIO_InitStruct
. Pin
= GPIO_PIN_3
| GPIO_PIN_4
| GPIO_PIN_5
| GPIO_PIN_6
; GPIO_InitStruct
. Mode
= GPIO_MODE_OUTPUT_PP
; GPIO_InitStruct
. Pull
= GPIO_NOPULL
; GPIO_InitStruct
. Speed
= GPIO_SPEED_FREQ_LOW
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; GPIO_InitStruct
. Pin
= GPIO_PIN_12
| GPIO_PIN_13
| GPIO_PIN_14
| GPIO_PIN_15
; GPIO_InitStruct
. Mode
= GPIO_MODE_INPUT
; GPIO_InitStruct
. Pull
= GPIO_PULLUP
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; HAL_Delay ( 10 ) ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_15
) == GPIO_PIN_RESET
) { HAL_GPIO_WritePin ( GPIOB
, GPIO_PIN_12
| GPIO_PIN_13
| GPIO_PIN_14
| GPIO_PIN_15
, GPIO_PIN_RESET
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_OUTPUT_PP
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_INPUT
; GPIO_InitStruct
. Pull
= GPIO_PULLUP
; GPIO_InitStruct
. Pin
= GPIO_PIN_3
| GPIO_PIN_4
| GPIO_PIN_5
| GPIO_PIN_6
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; HAL_Delay ( 10 ) ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_3
) == GPIO_PIN_RESET
) return 'A' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_4
) == GPIO_PIN_RESET
) return '3' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_5
) == GPIO_PIN_RESET
) return '2' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_6
) == GPIO_PIN_RESET
) return '1' ; } if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_14
) == GPIO_PIN_RESET
) { HAL_GPIO_WritePin ( GPIOB
, GPIO_PIN_12
| GPIO_PIN_13
| GPIO_PIN_14
| GPIO_PIN_15
, GPIO_PIN_RESET
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_OUTPUT_PP
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_INPUT
; GPIO_InitStruct
. Pull
= GPIO_PULLUP
; GPIO_InitStruct
. Pin
= GPIO_PIN_3
| GPIO_PIN_4
| GPIO_PIN_5
| GPIO_PIN_6
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; HAL_Delay ( 10 ) ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_3
) == GPIO_PIN_RESET
) return 'B' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_4
) == GPIO_PIN_RESET
) return '6' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_5
) == GPIO_PIN_RESET
) return '5' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_6
) == GPIO_PIN_RESET
) return '4' ; } if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_13
) == GPIO_PIN_RESET
) { HAL_GPIO_WritePin ( GPIOB
, GPIO_PIN_12
| GPIO_PIN_13
| GPIO_PIN_14
| GPIO_PIN_15
, GPIO_PIN_RESET
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_OUTPUT_PP
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_INPUT
; GPIO_InitStruct
. Pull
= GPIO_PULLUP
; GPIO_InitStruct
. Pin
= GPIO_PIN_3
| GPIO_PIN_4
| GPIO_PIN_5
| GPIO_PIN_6
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; HAL_Delay ( 10 ) ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_3
) == GPIO_PIN_RESET
) return 'C' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_4
) == GPIO_PIN_RESET
) return '9' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_5
) == GPIO_PIN_RESET
) return '8' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_6
) == GPIO_PIN_RESET
) return '7' ; } if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_12
) == GPIO_PIN_RESET
) { HAL_GPIO_WritePin ( GPIOB
, GPIO_PIN_12
| GPIO_PIN_13
| GPIO_PIN_14
| GPIO_PIN_15
, GPIO_PIN_RESET
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_OUTPUT_PP
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; GPIO_InitStruct
. Mode
= GPIO_MODE_INPUT
; GPIO_InitStruct
. Pull
= GPIO_PULLUP
; GPIO_InitStruct
. Pin
= GPIO_PIN_3
| GPIO_PIN_4
| GPIO_PIN_5
| GPIO_PIN_6
; HAL_GPIO_Init ( GPIOB
, & GPIO_InitStruct
) ; HAL_Delay ( 10 ) ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_3
) == GPIO_PIN_RESET
) return 'D' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_4
) == GPIO_PIN_RESET
) return '#' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_5
) == GPIO_PIN_RESET
) return '0' ; if ( HAL_GPIO_ReadPin ( GPIOB
, GPIO_PIN_6
) == GPIO_PIN_RESET
) return '*' ; } return 0 ;
}
添加USB OTG功能切換函數(shù)
static void USB_OTG_ON ( void )
{ USB_OTG_FLAG
= 1 ; HAL_GPIO_WritePin ( USB_ID_GPIO_Port
, USB_ID_Pin
, GPIO_PIN_SET
) ; HAL_Delay ( 100 ) ; HAL_GPIO_WritePin ( GPIOA
, USB_VCC_Pin
, GPIO_PIN_RESET
) ; HAL_Delay ( 1000 ) ; HAL_GPIO_WritePin ( USB_ID_GPIO_Port
, USB_ID_Pin
, GPIO_PIN_RESET
) ; HAL_GPIO_WritePin ( GPIOA
, USB_VCC_Pin
, GPIO_PIN_SET
) ; HAL_Delay ( 1000 ) ; Move_Reset ( ) ;
} static void USB_OTG_OFF ( void )
{ USB_OTG_FLAG
= 0 ; HAL_GPIO_WritePin ( USB_ID_GPIO_Port
, USB_ID_Pin
, GPIO_PIN_SET
) ; HAL_Delay ( 100 ) ; HAL_GPIO_WritePin ( GPIOA
, USB_VCC_Pin
, GPIO_PIN_RESET
) ; HAL_Delay ( 1000 ) ; HAL_GPIO_WritePin ( USB_ID_GPIO_Port
, USB_ID_Pin
, GPIO_PIN_SET
) ; HAL_GPIO_WritePin ( GPIOA
, USB_VCC_Pin
, GPIO_PIN_SET
) ;
}
聲明USB OTG狀態(tài)標(biāo)志位變量
static uint8_t USB_OTG_FLAG
= 0 ;
聲明以上三個(gè)函數(shù)
static void USB_OTG_ON ( void ) ;
static void USB_OTG_OFF ( void ) ;
uint8_t Key_Scan ( void ) ;
編寫主函數(shù)程序
int main ( void )
{ uint8_t key
; uint16_t timeout_10ms
; HAL_Init ( ) ; SystemClock_Config ( ) ; MX_GPIO_Init ( ) ; MX_USB_DEVICE_Init ( ) ; USB_OTG_OFF ( ) ; while ( 1 ) { key
= Key_Scan ( ) ; if ( key
) { if ( USB_OTG_FLAG
== 0 ) USB_OTG_ON ( ) , timeout_10ms
= 6000 ; switch ( key
) { case 'A' : Unlock ( ) ; break ; case 'B' : Open_Wechat ( ) ; break ; case 'C' : Start_Call ( ) ; break ; case 'D' : Stop_Call ( ) ; break ; case '0' : Choose_Name ( 0 ) ; break ; case '1' : Choose_Name ( 1 ) ; break ; case '2' : Choose_Name ( 2 ) ; break ; case '3' : Choose_Name ( 3 ) ; break ; case '4' : Choose_Name ( 4 ) ; break ; case '5' : Choose_Name ( 5 ) ; break ; case '6' : Choose_Name ( 6 ) ; break ; case '7' : Choose_Name ( 7 ) ; break ; case '8' : Choose_Name ( 8 ) ; break ; case '9' : Choose_Name ( 9 ) ; break ; case '*' : Unlock ( ) ; HAL_Delay ( 1000 ) ; Open_Wechat ( ) ; break ; case '#' : Start_Call ( ) ; break ; } } if ( USB_OTG_FLAG
) { if ( timeout_10ms
-- ) HAL_Delay ( 10 ) ; else USB_OTG_OFF ( ) ; } }
}
四、結(jié)語
可編程鼠標(biāo)的應(yīng)用范圍遠(yuǎn)不止此,還有許多實(shí)用場景,比如電視盒子一鍵收看節(jié)目、代替手機(jī)腳本完成自動(dòng)化操作,將手機(jī)作為小電視一鍵收看等等,整個(gè)制作流程并不復(fù)雜,卻開了先河。如有錯(cuò)誤望批評(píng)指正,因春運(yùn)期間快遞停運(yùn)沒有接插件,只能焊接,外觀不佳。更多場景和功能等待各位開發(fā)者們探索。
總結(jié)
以上是生活随笔 為你收集整理的基于STM32的微信视频电话机,让家里的老人也能轻松使用微信视频电话 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。