📄 windowsce_net 420串口驱动分析(1)--jesse.htm
字号:
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">DSR</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">数据装置准备好(</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">Data
set ready)</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">用于表明</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">MODEM</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">处于可以使用的状态。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">DTR</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">数据终端准备好</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">(Data
terminal ready)</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">表明数据终端可以使用。这两个信号用于检查</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">Modem</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">是否连接。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">DELL</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">脚当有电话拨入时</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">Modem</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">将会设置这个引脚。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">DCD</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">信号是当</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">Modem</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">接收到数字载波信号的时候被设置,用于了解</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE">Modem</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE">接收信号的情况。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE"><O:P></O:P></SPAN>
</P>
<P style="MARGIN: 0cm 0cm 0pt 42pt"><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE"><O:P> </O:P></SPAN>
</P>
<P class=MsoBodyText><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">至于剩下的奇偶效验和停止位设置就只是需要针对寄存器设置无需软件干涉就可以完成了。下面我们来看具体的驱动程序。</SPAN>
</P>
<P class=MsoBodyText><SPAN lang=EN-US><O:P> </O:P></SPAN>
</P>
<P><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: HE; mso-fareast-font-family: 宋体; mso-fareast-language: ZH-CN; mso-ansi-language: EN-US"><BR></SPAN> </P>
<P class=MsoBodyText><O:P> </O:P> </P>
<P>
<TABLE class=MsoNormalTable
style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #0c0c0c; MARGIN-LEFT: 45.4pt; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext"
cellSpacing=0 cellPadding=0 border=1>
<TBODY>
<TR
style="HEIGHT: 15.75pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD
style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 285pt; COLOR: #ffffff; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15.75pt; mso-border-alt: solid windowtext .5pt"
vAlign=top width=380>
<P class=MsoBodyText style="MARGIN-LEFT: 2pt"
align=left><B style="mso-bidi-font-weight: normal"><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">架构</SPAN><SPAN
lang=EN-US><O:P></O:P></SPAN></B>
</P></TD></TR></TBODY></TABLE></P>
<P class=MsoBodyText><SPAN
lang=EN-US><O:P> </O:P></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</SPAN><SPAN
lang=EN-US>wince</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中串口的驱动实现是有固定模型的,</SPAN><SPAN
lang=EN-US>ce</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的串口模型遵循</SPAN><SPAN
lang=EN-US>ISO/OSI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络通讯模型</SPAN><SPAN
lang=EN-US>(7</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">层</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,就是说串口属于</SPAN><SPAN
lang=EN-US>CE</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络模块的一个部分。其中</SPAN><SPAN
lang=EN-US>rs232</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">界面</SPAN><SPAN
lang=EN-US>(</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或其它的物理介质</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现网络的物理层,而驱动和</SPAN><SPAN
lang=EN-US>serialAPI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">共同组成数据链路层,其它部分都没有做定义。在典型的应用中</SPAN><SPAN
lang=EN-US>,serialAPI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与间接通过</SPAN><SPAN
lang=EN-US>TAPI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或直接与</SPAN><SPAN
lang=EN-US>ActiveSync</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">交互,组成</SPAN><SPAN
lang=EN-US>CE</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">网络的一部分。而红外本身的协议就相对复杂的多,它有专门的一套模型来描述其使用规则,对红外设备本身了解不多也就不能深入下去。在串口的这一侧,整个驱动模型也是相当的复杂的,但所幸的是驱动仅仅使用到</SPAN><SPAN
lang=EN-US>SerialAPI</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这一层,在这个层次上串口的行为还是相对简单的。</SPAN>
</P>
<P class=MsoBodyText
style="MARGIN-LEFT: 42pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.1; mso-para-margin-left: 4.2gd"
align=left><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes">
<IMG height=300
src="windowsCE_net 420串口驱动分析(1)--jesse.files/o_Image2.jpg"
width=300 align=left><IMG height=300
src="windowsCE_net 420串口驱动分析(1)--jesse.files/o_Image3.jpg"
width=300 align=left>
<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR></SPAN></SPAN></P><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<P class=MsoBodyText
style="MARGIN-LEFT: 42pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0; mso-para-margin-left: 4.2gd"><BR><BR>我们这里仅仅涉及上面所提到的<SPAN
lang=EN-US>Serial/irda Driver</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这部分</SPAN><SPAN
lang=EN-US>(</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">绿色部分</SPAN><SPAN
lang=EN-US>)</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。在</SPAN><SPAN
lang=EN-US>wince</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的驱动例程中串口</SPAN><SPAN
lang=EN-US>/</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">红外驱动采用分层结构设计,</SPAN><SPAN
lang=EN-US>MDD</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供框架性的实现,负责提供</SPAN><SPAN
lang=EN-US>OS</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所需的基本实现,并将代码设计与具体的硬件设计无关。而</SPAN><SPAN
lang=EN-US>PDD</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供了对硬件操作相应的代码。这些代码通过结构</SPAN><SPAN
lang=EN-US>HWOBJ</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来相互联系。对于</SPAN><SPAN
lang=EN-US>MDD+PDD</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的整体驱动来看,串口驱动模型是作为</SPAN><SPAN
lang=EN-US>Stream</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实现的。</SPAN>
</P></SPAN>
<P class=MsoBodyText
style="MARGIN-LEFT: 42pt; TEXT-INDENT: 10pt; mso-char-indent-count: 1.0; mso-para-margin-left: 4.2gd"><SPAN
style
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -