From 478bda1a988026beca81242cd693c7d5a8825ab1 Mon Sep 17 00:00:00 2001 From: Grey <1014792665@qq.com> Date: Wed, 15 Sep 2021 09:54:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=89=E5=8F=96=E9=87=8D=E6=96=B0=E6=8F=90?= =?UTF-8?q?=E4=BA=A4,=20=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9=E5=8C=85?= =?UTF-8?q?=E6=8B=AC:=201.=20Socket=202.=20SPI=203.=20LED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zh/QuecPythonBus/LED.md | 129 ++++++++++++++++++ .../zh/QuecPythonBus/code/code_LED.py | 80 +++++++++++ .../zh/QuecPythonBus/media/media_PIN_1.jpg | Bin 0 -> 41971 bytes .../zh/QuecPythonBus/media/media_PIN_2.jpg | Bin 0 -> 3778 bytes .../zh/QuecPythonBus/media/media_PIN_3.jpg | Bin 0 -> 15127 bytes .../zh/QuecPythonBus/media/media_PIN_4.jpg | Bin 0 -> 16626 bytes docs/Quick_start/zh/socket.md | 10 +- docs/sbs/zh/BSP/SPI.md | 4 +- .../zh/BSP/code/{media_SPI.py => code_SPI.py} | 0 9 files changed, 216 insertions(+), 7 deletions(-) create mode 100644 docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py create mode 100644 docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_1.jpg create mode 100644 docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_2.jpg create mode 100644 docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_3.jpg create mode 100644 docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_4.jpg rename docs/sbs/zh/BSP/code/{media_SPI.py => code_SPI.py} (100%) diff --git a/docs/Advanced_development/zh/QuecPythonBus/LED.md b/docs/Advanced_development/zh/QuecPythonBus/LED.md index e69de29..0bc7b3d 100644 --- a/docs/Advanced_development/zh/QuecPythonBus/LED.md +++ b/docs/Advanced_development/zh/QuecPythonBus/LED.md @@ -0,0 +1,129 @@ +# 跑马灯实验 + +## 修订历史 + +| 版本 | 日期 | 作者 | 变更表述 | +| ---- | ---------- | ---- | -------- | +| 1.0 | 2021-09-15 | Grey | 初版 | + +文档主要介绍如何实现 GPIO控制外部器件,从硬件设计和软件设计两方面讲解,通过阅读本文,您将学会查看硬件连接关系、代码编写思路和验证实验理论。 + +有关API详解请参考 [QuecPython-machine - PIN](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pin) + + + +## 硬件描述 + +GPIO是最常用的外设之一,可以输出高电平和低电平,以便控制外部的器件。如下图标有GPIO 的 Pin 就是我们想要找的引脚。 + +![media_PIN_1](media/media_PIN_1.jpg) + + + +## 软件设计 + +首先确定要控制硬件的哪个引脚,然后通过官网的 API 类库找到对应的 GPIO编号 。详解请参考 [QuecPython-machine - PIN](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pin) + +例: ![media_PIN_2](media/media_PIN_2.jpg)EC600S/N的引脚10为GPIO1。 + +开始编写代码,在.py 文件里加入下面代码,用于对 GPIO 读写: + +```python +IOdictRead = {} # 记录已经初始化的 GPIO 口 +IOdictWrite = {} # 记录已经初始化的 GPIO 口 +def GPIO_Read(gpioX, Pull=Pin.PULL_DISABLE, level=1): + if IOdictWrite.get(gpioX, None): + del IOdictWrite[gpioX] + gpioIO = IOdictRead.get(gpioX, None) + if gpioIO: + return gpioIO.read() + else: + IOdictRead[gpioX] = (Pin(gpioX, Pin.IN, Pull, level)) + gpioIO = IOdictRead.get(gpioX, None) + return gpioIO.read() +def GPIO_Write(gpioX, level, Pull=Pin.PULL_DISABLE): + if IOdictRead.get(gpioX, None): + del IOdictRead[gpioX] + gpioIO = IOdictWrite.get(gpioX, None) + if gpioIO: + gpioIO.write(level) + else: + IOdictWrite[gpioX] = (Pin(gpioX, Pin.OUT, Pull, level)) + gpioIO = IOdictWrite.get(gpioX, None) + gpioIO.write(level) +``` + +定义需要控制的 GPIO 别名: + +```python +from machine import Pin + +LED1 = Pin.GPIO1 # 定义LED引脚 +LED2 = Pin.GPIO2 # 定义LED引脚 +LED3 = Pin.GPIO3 # 定义LED引脚 +LED4 = Pin.GPIO4 # 定义LED引脚 +LED5 = Pin.GPIO5 # 定义LED引脚 +``` + +对某一个引脚实现控制: + +```python +def IO_On(gpioX): # 某个引脚置 0 + GPIO_Write(gpioX, 0) # 调用写函数 +def IO_Off(gpioX): # 某个引脚置 1 + GPIO_Write(gpioX, 1) # 调用写函数 + +``` + +对全部引脚实现控制: + +```python +def IO_All_Off(): # 全部引脚置 1 + IO_Off(LED1) + IO_Off(LED2) + IO_Off(LED3) + IO_Off(LED4) + IO_Off(LED5) + +``` + +完成上面的代码后,我们可以编写主程序 +main(),主要实现思路,亮-灭-亮-灭,如此循环;仅点亮 LED1,延时 200 毫秒,看到LED1 亮,LED1 灭;仅点亮 LED2,延时 200 毫秒,LED2 灭;仅点亮 LED3,延时200 毫秒,LED3 灭;这样就能看到 LED 轮流点亮的效果。 + +```python +import utime + +def main(): + while True: + IO_All_Off() # 灭 IO_On(LED1) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED2) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED3) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED4) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 IO_On(LED5) # 亮 + utime.sleep_ms(200) # 延时 +``` + +接下来就可以下载验证了,python 代码不需要编译,直接通过 QPYcom 工具把.py文件下载到模块中运行。 + + + +## 下载验证 + +下载.py 文件到模组运行: + +![media_PIN_3](media/media_PIN_3.jpg) + +下载之后,看到 LED 逐个点亮,有流水灯的效果: + +![media_PIN_4](media/media_PIN_4.jpg) + + + +## 配套代码 + + +下载代码 \ No newline at end of file diff --git a/docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py b/docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py new file mode 100644 index 0000000..80821f9 --- /dev/null +++ b/docs/Advanced_development/zh/QuecPythonBus/code/code_LED.py @@ -0,0 +1,80 @@ +# 实验1: 跑马灯 +# API资料参考连接: https://python.quectel.com/wiki/#/zh-cn/api/?id=pin + + +from machine import Pin +import utime + + +IOdictRead = {} # 记录已经初始化的GPIO口 +IOdictWrite = {} # 记录已经初始化的GPIO口 + + +def GPIO_Read(gpioX, Pull=Pin.PULL_DISABLE, level=1): + if IOdictWrite.get(gpioX, None): + del IOdictWrite[gpioX] + gpioIO = IOdictRead.get(gpioX, None) + if gpioIO: + return gpioIO.read() + else: + IOdictRead[gpioX] = (Pin(gpioX, Pin.IN, Pull, level)) + gpioIO = IOdictRead.get(gpioX, None) + return gpioIO.read() + + +def GPIO_Write(gpioX, level, Pull=Pin.PULL_DISABLE): + if IOdictRead.get(gpioX, None): + del IOdictRead[gpioX] + gpioIO = IOdictWrite.get(gpioX, None) + if gpioIO: + gpioIO.write(level) + else: + IOdictWrite[gpioX] = (Pin(gpioX, Pin.OUT, Pull, level)) + gpioIO = IOdictWrite.get(gpioX, None) + gpioIO.write(level) + + +LED1 = Pin.GPIO1 # 定义LED引脚 +LED2 = Pin.GPIO2 # 定义LED引脚 +LED3 = Pin.GPIO3 # 定义LED引脚 +LED4 = Pin.GPIO4 # 定义LED引脚 +LED5 = Pin.GPIO5 # 定义LED引脚 + + +def IO_On(gpioX): # 某个引脚置0 + GPIO_Write(gpioX, 0) # 调用写函数 + + +def IO_Off(gpioX): # 某个引脚置1 + GPIO_Write(gpioX, 1) # 调用写函数 + + +def IO_All_Off(): # 全部引脚置1 + IO_Off(LED1) + IO_Off(LED2) + IO_Off(LED3) + IO_Off(LED4) + IO_Off(LED5) + + +def main(): + while True: + IO_All_Off() # 灭 + IO_On(LED1) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED2) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED3) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED4) # 亮 + utime.sleep_ms(200) # 延时 + IO_All_Off() # 灭 + IO_On(LED5) # 亮 + utime.sleep_ms(200) # 延时 + + +if __name__ == "__main__": + main() diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_1.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f159f0398ba8ea94182d672a232a7edac832a75 GIT binary patch literal 41971 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 kV$R2@lQ z6fd)1`STpb4AmT|G|9}G^P_g3hP6-p7ENfT>|%S#Z201NS~(H51%+wH)wZs}K2uIC zYVI&e<(8nN^2~w3`BCWqLG#q6j2JAroofHWc^(()~x4kbE)&6cPT&4w`;di@= zUW~}O26%ZG$cuNys<|k=Vehk(#yf1Nfs9}rv3EfIiwqWc0Ap(HOsV?yr1oxQZ^V>~ zZk~oXm7kFI`Haz?_<-e1E*1aIjS7>Hs>Bgia|8>lfM~Kej?AJnIp}oQ;e0EDy=}X_ z;#bkLe6W@Z%0GIpNK!&n6wyg1bhJir#=lK-P@)7blca5*(U+*W@l#!b+!Em>8}ZHy>0Jn zXkJ2-Z0kj zs+o)o7}u7Ca_^|{T4k(pC})a#;?>2?sJ9C(eYJS&3kqI4(<+5*?0%N*>(v3wM~+b( zJmd7vzqx}$OU+@^Kgl&%redF9&Ej7(o+bmceilbm4uQ2ButnVkR|q=>o<-=<*-pu7 zSl{^2+Lb?#1k+)PU-Twec*{K1E1L~Tzp^4vYZ~EqUYtdkJ0cgJ;nh}#`D~sYsM+@N zcJ~%u70^Udbcm3MZ22EIIS=u~gPEpOd|!miUyV5<%g10*ka-T@1S3D{4?dE?(e+H( zRkuv=e5C~!0_yE>?9(Z@VQvI&ae~%;MZxww?B?=Rvpdp1;Ka=bwO63f3b=$ygYTZc z;?sh$iqGlk=akDRl}oDNO#iM)TztYTy^1lr5kqGtCggSlctCPu;I&hF< z#X%e&XWrwqyhBfoeZw|S?<8QaLNn8Mty>e>39Kz5M#>V2 zgl)1t531AI7_o%4s8lnF;_qH-*_eiH$hSD>k3`=F`+V#BRt=6Yh4!kQj@g!G7!j3N zre6kumDcpN08gk(rI()JC0m>lC@nanBVW??h@40_b4*e{v$tOR)jIceOQZj2D_Dys zD}l%T+o+E#i^dLUt@TMes9^4Wl(40aUwN`faygQ!lGGZA30d~#d#dayt*YI5RWl>> zO8s*r-{$ut4=vxNrRKc9#7t8!z5k-I3=j%6^-+aUl1igDe~XD3`F6a`aDd)dp+B6C zVuShTMOY2%H^pC)#mq}S>M~6oAmKM`utSD5lJ1DsTaNKUS zam47{K1bChR29>3Y?OsegbZPBYIY>c8{C!hWgMNRcxY8jHnerCB6OCJ9XDZvoqDdSqxvJn$m*Rt{lSRc$F5uTD3-;WPXo6O%O)l zpI&XMIHN6Jhl2IgIQCxeWqgEF4pf=la}mvwbV)1sso#4K3h~Y`F$Kw=y|Z!~;$0Xq z(l}K*1kx3GO2YemvJYy{tTj<|Hf=kM065vR(BW3Q10J@zPYfmEUMVW+dF=yt|C9lE zXy)x&&#&0Kwy?mP?=Ij|p96JE-9H&q;Z>n6JT-~d*7;Ia=X{oh>&VJyWRM(qQ zgr*GNdfEKZ>H)qOrCAQbAURv&%kO4%{!g}qhVRl<7Y9fu+azLmaQ z(bcbU>3Kyak?$4eu1kESTV5Lp)bI9lWzW5_@dG_c6Q71F4f74dsuy+cK^g+5vU@a{ zw^N+Kc#jqj9y^^`;>}d-x;hjYycxUgTxe$(?@&5KSNC0C^`oqcb*obIeZ|u4#G3i* zR<@jy%O%zp z7;s23`LeE`?o^zw@B4xC%vz0w-(ePeoPgVJ&hy!|E=^cp%5!nbVd1nYg)8M!h9`~O zivT-IvVVar?_mu?0n>en*`PuE&^nYbY+r135$DVB+ChrtpS4q6RDY1kbV+zY@#_7ro6YMlle}SpnsaREYv1v z!-(5|%QWP>82+&m3O`a5tN_hi5mx7XaKfLS^Cn2v94!E8o#mGeHb`WK< zk$8m*y|fW$x?pMJQ}^=O*(fbBkb|FJ`5(0A#&~bpyNO*bke&8qUJcKBl&1Doi#i{& zs7*?O^lhgLpXEuJzgiv9>0_)hik(D4R$t2AZtx=^`VTsz+^&UJ5`_C<%UVRIK3A3{ zKF(KVITn9nhSzvY;wLIcGhl)oP&nTTs;~h#x`?%`XS12++^*RI6)f^@%h8DmvRRCI z5yEP_+%p*IjN32lZ1xzPM~T>Wk{ZsK>R;Thxow^F`7$FL>z51B?GhHV2A<Nuh3G zi%X&pJ%6YfUAm;qDLSXr@$U%Hm6I&@O;hqUk5oB%SGgJ!JmNLi!cV2Z(CK=GUobFi zS?4@{C-@ehZ5Vy6)3x7|4*<8{t)1)jno0w6oMhXuVgGP#^HFemhIQ$Q;)_ucI<5GL zOOk?#%oX^=iA4Y8&rZn+w~q27Ms};dh*_(2h1xdb9ahxfg(=DN&Blk~q#xeRM?x%m z7A0Ye_G7tx6iP+&6wOE zH_$0eUN@%6i-!#q(SAaFM`XIB-wiv7#Su0m=3ntbZVbBk!}h-1u!Ogi9{53C0WP`~J_GQ$p zgx~ESZ~07YS36S!A{XEk##3)8i@_xzF?v8p&u$t4G$ejY7#oH{cyYuCGOCtO3t0zU zs_fq)ST_7*zrOH`?x+cU*qh&=_w~c(J#aqRb=qa*)#28))-XbW%aE2*JrNtxIHj%k zPKG06>9u+4xKaD2iSqsilpsix0IES0uyZXe@kZkx}A<-w~@e7?doCOYQdB z;Dh#>bRoXpF$(dclo1k1ZMBl2skN|PvW3l`({*HB603SjjrL9R$GdJ44( zbo*-T?8xo@9i{mzoX)eP2l^@$qr3}3P=>TqxrM9hPq*h04 z)Fql0qRlWN+$Ov5R@AX|IhbUhX{}*}y%FkgG(BkxZB>4q8cB|e0SLnWdS~tf?!CK~ zmX+2iZi2eTAynrzd)8*4kU=e9ZdXcxgdd{-voI!-LWc-a8pS(XkIgcR^#yPX0t)Xi zKh?yylAj?GWt7q*VYXr~(EaQQm?P6KzVTc?KO##A*w7~C!NvFsm;gl4I8r~jOR_u< zkAPNMP`AqXf|K_8jx4ZW#lnO4`8-6E{#iOHOyC9%m znAHBBWf5~^qe+DGijgtEc()9=%ed;vf$e+Mq$X^)Id;0ybjI+RW=_!Zjv zNSZC0VwE`&G{HiF$?!B6aa>Ee)>GhLQE$p`<#hD&4I>62H!IAe&M6s}!gP#sz8v!Q zcMmnL4pug4*G-S9kMT;TEyc1;X(CNQwTY_{N-<#*uU74qLCcpzUJZJ_nY|RyVE)#Q z4~7UcjAi{}>SpJ!IVt8%{OGFt1PT~kz)jo>pbJn=jl^Dxemg$RVWpn%`LHe7M494@ zXUQBes9tCh_N-QOqF|j5We329t7iD}LfMapn_JNJA&8moqsf+yO=0#96?{^-M1FGW z_^>eBRg_Lk9l}%B>z9QJcztv4Bjfr#*X0?)Vn9xnJH58O7nfs!*tNI#G(tW!+jUp; z6QAdy0)|Le;MGiupt0+~_shPlc}@%b@^5xQ6G~dniQdVvbBk%Gv#?C1QWNlMjuMb2UYR=Z)>p`T(Mh{gv zltIx8(K;ErQOET)zeB@9#=AR~4#Qj`zP6wR;a}x`W|?RZNt_o#5``Bk!|Yn}(&KrK zw;uZ`;|XYK^@nYFy;M~ps34($+#Orz$I}yF$kc*4#Wj9Nipkfebre;$LRk!6p`~TG zA_JyLBW?Tashods$!(oUtt=R{n0jQYpnP=6D8FLYtq zXHWSq)q^$-bXF0MM=SVIO6;=b{!VyO!i0vTp|RsePdH!Gc54_$fc(1z8(DF zP1+X7?54n|ZYl=EQ=kiB$&T^Xy;dw zX8IhXmG2R46~cSLT3@^&MpETfAmi1B)Nb2v52%@su+u1Aq^0$6Q(*lyR1a!92zDZ7 z)f$$O2Sn4|CWuS+R3E?aR(pJ7pITE1+qyhRqJ4*8Q`i1ifVhA#+6?U=Z-2;8z&pEn z#t`^E=IB22+5>@>?nLqTuNQG^)~W>GFN&I1B&jaOERRw}?U|!PiuVFBemMx%Rzsh; zBwZvn?Q+uE;x~md)y|1l=JY|7(zaaQ_xuqs)!^YNXyI!=nuQ^Xn*@GpHyuhELt5aP zwb#NeDGBg4dJaRj0gib&Uz)MXTPH;1kO6y&11fQ1EeKm;2_@|nq}}3U$~Ee)In9+< zQ;@#exAO8D$EtW1?#7#LyC~Ggki-`2CrZO=0wL{M+9B(B5ur3Mov1|Pd9Ct&FbRD9 z!YXiny?y=Ryd7$)exl$b?w4*#izC`v_#jetTs$6d1*y-AZfV^rxA?S0aMmB}!V0s} zhue}f$}VB;0@nBoNJ+TObuB%P1HJ*ZG|SwZ$Zah|&J>2$7;U8`Z!a6Wm??w4a{5sxUdPVCr7uM3 zdY^3ka-A%wkGp*=jzM1zzP9Ij?`D`(D6(A8rzc)yx2CP9C4U_WAEL_FGly?qjkLFF zH~Dt{l=C*olJNKy=9-$^%~xy_2vjjRZrC^P=Rr9y3U21Paro9$2<1U$N7qlVHr-uX z1aaq|@bC^{a^F&zpoYDCy`D!tyB=n!xYYg~QLQ#7;wP@TR&i-__Y?m*1(Vwmu8(@e zWZgdm8hwHQERaEF!%bfu&T%^%Os#hU*U-`cUPxd<+`Kxvy|yP&DSvCOn>n(U5LEH)*<95N2aJKn45^5;DL4Oho0lNTnzbE1 zvy??q?iMy@c-id&712@CL7;{yx{A!D*St_Q>eDmD+}!S*KG|IQzANW!(H3-7{XqZhwF2dp;vRZeKsr(KYPe9 z9x@qI$Z41Dbi4Msf2={<;eF(!D+G7`H1)0j=7Zr2u`fsPsR{V)LS|^~@4w3Uxs*YQ z-6j0md+Ka#iPwVs)I8J}_-dI!ol6e2%(ex`NbPVnDjuvp~sna(TpV(h^=saNyOeWCvFS)?mNubFpX<&{=Sli(O?)w!1`^d00t#!Hp= zIOuhSB-C41vkoSSV;6l-=o{x+1mEWdi9f6R{Kj}$Af&xd7HIpYJkvnMXYN=xr0F8H_SF4gdkqm2E1A`JiZ_N>m0~9ElHqqF3nT5u3>D$vSe{+k21s+iO2+xTve@Iih9>g{o^$Y!q+QW)E*E>b(dM z?TF@r<y(Vyi;U9mOij<-yezBw%MO*FgI06$8-qUjQ4 zY=ZGsF%{g=dda>a3wJZ-72?s8C2;lsB&;1BjNnE z=aPK=f)2Mjh6k$%(Av~ZK_$-aark%KG<`F>f!&~rVDx^}p9R;xJ7mQJRul{Yat_$> zhOM8wG6zip_e*vdLUh`Z;mF$WPiMevkV)G{vil&+`yt0MtAncXZpL;oP(8V+=arjS@he z#FLr*wMCebv%^r!KS$8|0t`Sm)rLJk6tVFvJ2^NE0z$dfAJ+Kt3Esc@`sBQPbt|5M zwl+Bz6qvaWt;AtO?-$qLA42YBS;^ zUd>dBK-)PkDH#UOs~%h^?FA!AlZjz4`v` zQw93!H$uWRxYYz4&QdmY)Ajk6$hui39bYBDW8bTsjiu|epUeDbM^7iW36qi~X` zKSjA15OIGV08B6gT(`#wviPTxW;Yp*{vC%2E%S{w*#yr05T?xPI<*b_DD|i@<(v2E{g?=n%nePwgfgXlgL_Vk~|M(=6*?gOo1}KI0W&Jzw z#sHfjikpCrrJ=r06b6}VtN?@{V^H%%uW=reGM>c6Dq}%u<{m+4ZTqaMuLhMVXlrOe8rA~hTzZ;vRCW|}Hw=bx808w-`Q(H%$8+DMli5fR{1aC|j6YP{wgE|r<`sCZ;6 zb?7Yl`sC}hOGzBm-;yeJPW!8YNEQLBhTrCH!Gihozu<+xzv~QwJr0kflDGOcl&DWj zjga~0IDXUvF|1UC+EXD>5kte_&)!H#Jz@00d>;b5Gk^7P|7Q2*cF`a%_9n4o626TaVg*v2^1U3soJP+`kMNn&?H6JX}9`z0vjooE|Yp4(qpj1NxzG91o zfB#Mnpioafh2JfwT~`=j!oELN%{=RWYk0C2XQNL^y8XGwV9~Md{*(RwzTOR#&fUA+ zu$J8>k+0q&EX1rCSf~Z-a+56r052orM@@1wcR3WbMA6nrrJ>d>H0tV=V_~#?en(w<>6H?3zsZjR;e{<6=4bNc z8z#3MVQkRarT}Ox5Ujw~ZpVK2Gw3pgjD{x2Ctxlzd=U6y5CKSv2jw73r1D?-hcYX+ zE`6ecn%IQIs=b6O=ZR;%z6~kqw)?=?#>!2}$OOvj$4%(WWWjA*)V(GE_@K;o@eO(V z*J!K=1lD$a(Futifg9hph%hRPPIi7C#~_&{ktaUBNfB%A#!@80S{Q!BX2#RJn;H+^3CAJ1R5Op& z0>c&R937Y&fa?_-QScj3L?*|YZml-9Y6lbOQtEoO$`LnSo3R}dtI-NxBX3gQ0u!p|{A~!!Vb?6j z{@6iFeS#rXoE@1e9ZNl>zQY#^;#k@}^vM-dNLrpoSw%?!rO?yIY~!OS$I?lw!(aOOysj;7GSO@Z2q$SEhz`RKjBT z9gS={Ug-WJ7Gl??{77vBxWtxg^KL(9Au{o783X_#yk0F|os?~^y-+IIsu6tY*O2(x5 ztmYA@87mhM?EEDnz} zJ>6qjh#omw^mQU^@D^#*4{CJ4F?MjU{&M;cVGq;}JVraJYx3~(! zJ*UseH<4(ukVaE{7FFfvm<*JhHha3;lFxf(jR}CdkK2ob@8=xuy?#0~So6Z&=?|q= zChqxNbeer1=@#&PJD^7_IB~r->xeXXq8iDsFw@V1I1}m-<)ADBM=*St-+A2Sh4Gld z>5iN9BakjMVgdCPuaMB#i!IhgFDK5_ChA9im?Q1Rn{*}fte^K1 zn^?sC*Uhir-td|13(@5)Vv@Ruh+`=BiOU}|m1c4`Rt2qYCfnA<^J~qUZ7A|FlVRc2 z-VqTt;F`7_?Gm$HGo(~IZQC*piwx7x_x0e3=#dunV16Y{H7zF{hyy!$bKG9itgY|! zoWF8z;g{^S8`HDzmnypdQc)EvxyJLeV9xc?RaCvbg0WSu!0iWXFr9RAH8uZ2n0QBVG16cR%Ir5>fj2HBw$raO3cg8l z7s&VV0`l9GEdtuL*6zNcM2AQTYmvpinx;jiFoMo#b8qH%Sio`dlVA0f!h&-&)(U^l z^2p4&ppo;NsOaq>b~}2ELFxSqZaJhs+0>e3!MhOj;-pUqz0%h07T+Tjn%v6BWLA)? z!2ZC(Jk*|Z0U1t0>uYCEeqx+@zx3gCou!jwZoSPIj=Z;h$_pPlkCrP0;4#{t95*%X zoVqvCN4*XF+{EUX(m7bp)=2jg7Vhz>E}ji;dl1?YVH^`~Jsc1elswCJs;~0#c=Jg{ zY`farVyXHKMD@(gZGw??voOIMBvlRy5E`R;*T{;ziF4f0#rTK^*a{?5YrgWSVMI#& z!UazNE%+@wq#`@k)mnyKJWWx}x8(x>^S@K4 z5qrUci9EG@P##TfJue`RL7Q)Zz0e~vFr~x~rTcONFj4g1-JMK27dGkIDKz+2_1q;n zA~8|<{p`*#V%*6yd$jafeVdP~u$TxwCie@}N#HD$yU%F8QDhJYO#Rdj0GVKn%kj{Z zGI%l|P4H|}BrkI0T)ZMP9Z^coBU!jGc3zbntDH1osq)Y}xc=S%%YU-o+tn(_Q`OoG zmfDmI$y7}~pQOHxob9R(M&&Kg2}4h;;?|2&KB(3d`F;5>zK5dXY!!U zeMTtwax)CPn4#2C$%pZg_&>>X=ccUinNfOxP4A4E=6K|Ndb?Do94UV#3q|#)6scrm zC3ilIAmJhYLipbXEnScvCx3f{|uL- zA1T-9%3l*-Un8J4r}>|&t$F52;UbUKGim8CbpG3LbFLn*`r1!(V6pJu0VEzNN+_yY z4+5LY5mjUT=MNegC0P{f8l3hveQ=Ol7C5( ze~WGZrI{&(6zYzg_5WWA%?`OHuL0!WBKN;wv!>5uh*3=laA@+s7Y^Y-A@i3~K=I-K z#iV^AFCanN0}Sf_*PzgV9OVCA^be}{-!A_H{ryi9|6%3*x1axikhUZWi<2)V`?OM$ zpPLfnyXh%RW8|J}#UgD@?R{qw5-1nExLVg9-~AoLCu&%_PqffIEcZu3U<{G-GHC`W9B5ur6_=>3G6t%s(OrD=2-9@XPEv}`PkY~*~Z z9w|FW!qt+bJfHV0+h}3rlKY11ZfNq~0)3SH`QU{3cwK)BdeU@tdgf6GZa+tV;Fax< zhX)^@Ez0aB%3e9i{CU`Tv?FBQ&R9LxH_yn2=+YWsaOG->sm~?SPcV7tWu}I68qa?IN{nHG7&|qJ5Tuqa<;Kvj}^JjfFLwvXNH2+6M zLMy`*BK6zLe{(l-ydf>u^*Pptm^VR(wY|Kg(18#S#^2F>$Kw!jzso87zATX{8Yt<_ zYXUGEV_u2&h7AfCo5H-a87fDxq?|VE$<#SE7Mi1mX#T1gaHFQpX@u--q|OPmW{Drw zDE`!LOofS&VQn;f53N}M_s`bMdQmw`Qx5L9JbmrjjzRgH8#t{hwInDy>^h6J?&|wJ z!ZzbI{BR|`e#Eb&Y!TBcp9|I;<$cJV5@a*RYzJ5hwD~~d2{byKftmVE_QLtJ=()m^ zG5cT_+TRbH;hxZ{6YR{liZYolDN!Ea9oIc(bz2-(&8oqsd!ju0l6)`v`@8!TNMGT+ zi><*miuP;hud6co|JwS}a46sR{jrnmglv^WF|r#8qm;5!S;L1Z`&f%GV@uWSN8F{nL!L-LGJwM*jc;FdEfR>j#5SMInui)6y- zx^-h;+IUvimS+9*kn*BJ80Nm`?vI@aJa3U~dF`r6g&Cesk@Zy_b*5z=E3YpWT z0UShla924*oc%S}LvbOg;@D=C&3bWP>+TAiMSRrFr(>~ftw?Ao#q zlKReS=6R9Lt8uv=BK8tX3~0=els>}A;4S3QkO$g z_4E80*N4Ne6&yv~ymU}11njtiZDEwIn`rRWm@jz`ZG;}hCj9xNLr3M{^dex#PNmvN0yO@a)nC`qe8OkHz01HBL_|OuECQ%p!nxgp`0U z0(1=lcB~c0`<*A)(B2#zx2>!Eq4FG6+9 zWcM5SoE7QZ?WQ!*buEElPCU8dHZvO^7nRJZb24S?Ei=WerO_W))6(nxqd!u%6eaBh zR!RWsM2h+_5tq@JG3JTGR<4KzD9vEE4OV#`dL zzDvb2v}c0452UHiHoN#^?Wq}G-7RIH>%6J>x&1s%JEpxY+;+(yUY5A-V~Fp*y;*&IX{pjAD)@txejJgOrBl;lz9q|b~JtYaFa_Cyw_Rf8oiQg!fiTvRSE0E`bu_D z@=GgaINREv1SG!)9@-92G1oTMQLXxno9@^7ISW;64rj_-P`GicDFx@>@4{Z)RPtxM zJQJ<+@50*jC3TFFQE>dTrdGJ$}al|c$+-4o9bJd7R*7^@R$^&=}?{!s0 zUd&1@8Ij(Yui(ZP5GKK#S zvSUQO{I*I{C6G216TGZAd|^1&jzj4!GQ17D9KI%;YaOUUrI5LXyEFd!gsR^q*P|0= z)ZWq4^Q|rNEv`{%O#90a> z=n|dB>4F4d`>kvO`Q%(vj@}C~Mnmeu-Z-n-TaD?RjdyLw5k*3h*K)0Ad1xqpH)AGw zWFl`f1KsVCzKGNA_WUA%`X|trv+y94MI=T@y-lJaB0J+-%{o@&gxT5KtTW?%V+z(SUU_j>l&25&06Dp;*)Ug~&59FRbG zVGPLgWHhgE)g!*Z#HF-r^9^0p|5lS94baLs9!s*vaa7rPK!4?v5DrbLB+@+|i8yuI^PPNzMrn$<|b+Z1-6&E>{ zSRzeaXtkJv*G-U~w}tTK0$Hfc{9mJSWQIsX+q<@i0FGbybxNgK=emH7&Gyjlu1n)v zix!7Sr+RyqNy#X%$#uU>Yr8G`qkQQ0H5YEf6l&m z+0-arS}<{d?3=60cjL%0tN~1d^WS?ch~>ko1Dntw7UGE6M_txKrCVx7%j$nNQoerG zL&x!QrCa6f(eMC`{E!5Xa=WNgO%TVV&bGUF(}O+%rI6`L^@xp@2?_^h)@3_bM)@mi zJ8Atm)bzcBXzxL+loK=QP6*)_y`w^k^a9gvyqDywqxfjYaW%;g11vLHGFJl2gMQQe z#(&FM;;(^=&ml^CZZEyaH3iL62J7+u?TU*1NihjQgxE~V^NGEBkNglcw{(%)gTMOa zpvpDM_WAL2d>>pJnyY^6U+EAm1}KP!U8a6l_v2TAI99f>@q*jpI8Q*EJwZ%?Do+q3 zeU|4h&l`vVy1=iw93G)m-jj8NO07Ezb2=ctsne12(nkrCAnLOXFYZlF957&*aDU@Z z+^s7!hXq(Mg^{hcFYuuyqUg?aPBJa z+LrY=pR;(6wC8;H$9DIYLR)O=)@$@Dc$4Dj(Z@;(dcd0qsHURtZ+0`|4yM1^xe+Yxg9tr^&zO zYF}!Jbmtj8NF!}2CFvbo@s`zWgo0#ogY5RoVd}-LzuLQ$2Ax5t=O_mMxnFtf9PsKT zD{^})aNy`~tpY5<@5}Z{lZ0v<>7dDRvf!qLZ6QOctaq>7q(BzGFsT)zVb)$m0R^39 z4OW+Sgj|bllJAIx4qSk(Rj`@|7V?(t5wM>7cFja45Z&1}%=LycD9xEC=29KW$b!xB z_vF4=QrR&e$GOh}1-$|H8`1^)W_K#^LoWRtc#~~#I??fNmCr5uy-Ro7toc-nNy~T| zXg&Z>+jVn|vh=E)fheB3p7!NRkcL1nGc^8p%-d&I1le~Utc@1Zhc`!h zus+F)UWezj#$Hz$EGcNR2f0(zzv$O{-`=~p{=Qf@01j&pEk~NlbEQoKrD0GR&08%A z5JU6r8TQ^`^<&5F8v7wW`z+qHWAouf(AE6|=xPFzFJ4Eh zC76QPL&iH8*<6c3oH9ym4x^hN1Vd#EJxXVV+*rphXxzYnu2LUEu5(t`P#SbDY|1V} z=lKyQJl4!6!r#OCvehpO@8j--rip{z=ww5W+92zf7=E`YeM2A}vAofOu*#Z7VX|i= zA04!m^$2;nrH3o%&i~LatWYX|ezorBALe>P0U8EU#!v9I1y#`PRwdeVOlLO)WD9{1 z`^zvv;{Wihd*HNZWhK(Fw{`Sgs{~%o*fJ(bTDU&ccdY{>PnznGUbNY)*Uf_!r1fb_ zb=|1q0^LKB++IvL6@1@PS8MFLR$kngnxPDOqu~K4t<%tpz9NMkX1@3fi_HlTh;jE_ z>139h>+2XiEopqI3>^N2jpm=!HhX2$Ro_>rf@}fU;gk?+QR}|9kS1MI>G*RSLcPOJ zAx8TTuc^*EO)fnpD1Bo zuvi5?yN@I24$$`XZ@gTqk|?JD9vy2--z$4l0UUmay6Mk^U^;_7l|X&{3S|_n^KVd zboJD4j3!LdB_*it5l(aC3V8$b=!->x@i3`RacKB=7^~Jv`=E#1;wNTeC~59(tHTbZ z+mq?)1uybyZqG(|yvtp;Mj2dH%l?w-J+9Y!pE|TA2MBl*zkRZZ9O1`C5nXEeOxDcW zR8qj7?MJCo^Hrqm>X~&v+ZhxYSSeL#4TQU$q!ae zC+;byKMN*{0-yWhyyVWZ1EF?kQv+n`-tE{ zpypnsibRtWcA7|fuw_Ej359MAW~y!?W%o+&kq2Oz*?C-v)|oIbYI6f+vfAe2ro9`V z_MXmp5Ey*}kbawI`N8?Wp}K9dTsW(%Ia%c)bJyDbEH`yt#!$_EO9Kl zF?Rzgu9E5(IPQHVDuS>s*^|tYls{fLDQJ}b+Svq#^vH3qkmtiSo!;O>q|5oIOx_5` zaU{e8QLidQQt7;vFgvu|P?)gUs%)j*RAgt{UF|4Wghvx+^8RMq{H^YspVwY)P_7*+ zVH`7;E`_Eksr83GQo!7+RYA&lM*8#1S!a*+?`R$X%9M0|ZjX66sGvV>&%JPTyuQ{A z__5&E8#xkYV!U<~aGuBpFvpU!WVfj>!G7X@_e-%Wee~-s>^(nK+fCRK?S#Cwfy*Tw zL}BU)&&Zajd%&0PqpUES_4R5RW5mL%t7_Z@xb#$|oOyBbf=?xM%U!;Qk=@~)mig|? z$nZ4hl=1LNs8xBX*3KFwyuW%uh5R3jcq9ITeg8sMQG)9=YQK9)#{d&OaYmpfB$6Wg zIfkZI#Erd-87r1{^V(PV_XE*6ayRFP%9;Jx5uX-jzSw_rs-KRzM}qj93S3aJD#xRA z%T|=m^ZIU0TI`|s}E>^I4RFBHM1W&*%(BM(BKi-4IO!+F{I zCM*Gv^0m?h-fQibJNqU+I+5JT2itAmHVbpgX(xNKg9|T*@MVox&f3}jY9%VDtI+J8gahTjx%oXKt_&)^%|FXM zJ%5EMoOk)wMnl}y>dB&7@SytsHmENfogr^LYsAl;HF${MPdRk} zOOhgw!tQhk&nwkwe@Ao&yjtK95j`)f_(?@fArA8UDatNdTIl)7O3Mg+s+Sh7MNR0q zLH4bu1`b_?1L$|y=ffkM%f`fEU27u&4t#tfl<|kd3WuhV=%ZYm!B(J^hKje2bv7S? zn4JU|qE7Ecv3yAd0MwmoiaB?hTiaLN{u8(q;Qy6+Bo;|ow)w(_uPt^LWG%G5N2h#qaKbc`zPBTX7>dZLHzMhK3W2_Kct&Vqb!fg1lP7{(Jo{U1Ts4Ltdd`Czg2@X`p6$x zfy1)9La^~yS30hYJWP1JgN4}A-_Hhj3;NV4ZK2V9H%TG$kihyzk>rb~@z5Q{leMGD z2S2C?;aV$4%9{s;ne`1hr&+WdVN-5?RSfJ3Wq2_WP8`+Sa9Hr6pad^joXDd|kJ6yQ zR?466Rzt_YAADH^?!~5Lscb#CYn^fr?WYqH*TDn|ztJBYArMu@EdvRPV!zMxI5|DE zIaV3>*sv!z-(kBq@z7ft5AcPHtsT|^H#JLKTNqyq{b?L-+DIghc1&`#yQGukdjuZb zty-k6O;4Pu%LmU824bVp3H8Ded(X?AUbtQK*wK4doL+S-izN5DIJy4;2Ptk6zg04B z4N1eO)@ya!x44n_Q7Zjzi=PTbu80=ldpG-n(GL|c)VGB6v{FQ-1t^0OHI=R}CVzVJ z&S4TsFx-N_p?A}3I3cr;=l1Iy7tkhy{qOeWvzYg>Gok}W)3YBFxJG5`__RCvb2VM_ zs#s>bIXA<7ZUxWO5e!pr1i-bvZuDSMof>P?$m`xY;C`<1)eTp<)iBwWn$a)_06((c z`Lmp;Y;cfKl`om*rlY_9O>~d6_MAwH78?2?e}8r!;-~c;zXL`+hc_Ug@$TP{!fd#Zvgp()1*6IgwQKHmT7W7Y zf4XUbkYNXjFEoij6velvz(qCr$~cA4Cc@TdMc=k){-1E5AWIj!#^BmLz*Cdn9|6Zs zV7h{#RY-n|&dTU4`#rW$j;%6AK#wkc*W`;^{e{@{L|jy#uYjBhZ-cQ_ c8R|rcp%W4&)?6V40zMD#>1h<-`7h-E09ZTB3jhEB literal 0 HcmV?d00001 diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_2.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f7d9a8fdcc6186a90a06efeaced6fcf0e872fe4 GIT binary patch literal 3778 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 literal 0 HcmV?d00001 diff --git a/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_4.jpg b/docs/Advanced_development/zh/QuecPythonBus/media/media_PIN_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a553cc0beac6a4a072b8ab18b5de88c16c4ab451 GIT binary patch literal 16626 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 literal 0 HcmV?d00001 diff --git a/docs/Quick_start/zh/socket.md b/docs/Quick_start/zh/socket.md index b386607..9321c58 100644 --- a/docs/Quick_start/zh/socket.md +++ b/docs/Quick_start/zh/socket.md @@ -18,24 +18,24 @@ ### Socket介绍 -所谓Socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个Socket就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,Socket上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。 +​ 所谓Socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个Socket就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,Socket上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。 -Socket可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个Socket都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的Socket中,使对方能够接收到这段信息。Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。 +​ Socket可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个Socket都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的Socket中,使对方能够接收到这段信息。Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。 -Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 +​ Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 ![Quectel_sbs_Socket_relation](media/Quectel_sbs_Socket_relation.png) ### Socket过程 -Socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开(open)→ +​ Socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开(open)→ 读写(write/read)→关闭(close)”模式来操作。在实现过程中服务端可以看作是web服务器,客户端可以看作是要访问web服务器的浏览器,访问过程就可以和打开→读写→关闭一一对应。 ![Quectel_sbs_Socket_course](media/Quectel_sbs_Socket_course.png) ### **Socket的应用** -Socket可以使一个应用从网络中读取和写入数据,不同计算机上的两个应用可以通过连接发送和接受字节流,注意,当发送消息时,需要知道对方的IP和端口。在日常生活中有很多应用场景,当你浏览网页时,浏览器进程怎么与web服务器进程通信;当你用QQ聊天时,QQ进程怎么与服务器或好友所在的QQ进程通信,这些都是通过socket来实现的。 +​ Socket可以使一个应用从网络中读取和写入数据,不同计算机上的两个应用可以通过连接发送和接受字节流,注意,当发送消息时,需要知道对方的IP和端口。在日常生活中有很多应用场景,当你浏览网页时,浏览器进程怎么与web服务器进程通信;当你用QQ聊天时,QQ进程怎么与服务器或好友所在的QQ进程通信,这些都是通过socket来实现的。 diff --git a/docs/sbs/zh/BSP/SPI.md b/docs/sbs/zh/BSP/SPI.md index 94294f8..74f170d 100644 --- a/docs/sbs/zh/BSP/SPI.md +++ b/docs/sbs/zh/BSP/SPI.md @@ -103,5 +103,5 @@ while count: ## 配套代码 - - 下载代码 \ No newline at end of file + + 下载代码 \ No newline at end of file diff --git a/docs/sbs/zh/BSP/code/media_SPI.py b/docs/sbs/zh/BSP/code/code_SPI.py similarity index 100% rename from docs/sbs/zh/BSP/code/media_SPI.py rename to docs/sbs/zh/BSP/code/code_SPI.py -- Gitee