<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[Lance's Blog]]></title>
  <subtitle type="html"><![CDATA[[   工作就像轮奸，你不上他们上；生活就像强奸，与其反抗不如享受！]]]></subtitle>
  <id>http://www.LanceJi.com/</id> 
  <link rel="alternate" type="text/html" href="http://www.LanceJi.com/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.LanceJi.com/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2008-11-13T18:15:07+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[将Visual Studio 恢复到初始状态]]></title>
	  <author>
		 <name>Lance</name>
		 <uri>http://www.LanceJi.com/</uri>
		 <email>Lance.Ji@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.LanceJi.com/default.asp?cateID=5" label=".Net" /> 
	  <updated>2008-11-13T18:15:07+08:00</updated>
	  <published>2008-11-13T18:15:07+08:00</published>
		  <summary type="html"><![CDATA[<h2>/resetuserdata 参数</h2>
<p>我要与大家分享的最后一个技巧与 /resetuserdata 参数有关。如果 Visual Studio 在运行时被损坏，且无法从损坏状态进行恢复，您可以使用此参数将 Visual Studio 重置到其使用之初的状态。这些问题的例子可能包括：窗口布局文件被破坏、菜单自定义文件被破坏，或者键盘快捷方式文件被破坏。免责声明：如果使用此参数，您将丢失所有的环境设置和自定义设置。出于这个原因，Microsoft 不公开支持使用此参数，而且也没有将这个参数公之于众（如果在命令提示行中键入 devenv.exe /?，您不会看到显示此参数）。如果遇到环境方面的问题，应该将这个方法作为不得已而为之的办法，并且确保在使用此参数前，已通过导出环境设置对其进行了备份。</p>
<p>要使用此参数，请执行以下操作：</p>
<p>
<table cellspacing="0" cellpadding="0" border="0" class="numberedList">
    <tbody>
        <tr valign="top">
            <td class="listNumber" nowrap="nowrap" align="right">
            <p>1.</p>
            </td>
            <td>
            <p>关闭所有 Visual Studio 2005 实例。 </p>
            </td>
        </tr>
        <tr valign="top">
            <td class="listNumber" nowrap="nowrap" align="right">
            <p>2.</p>
            </td>
            <td>
            <p>单击&ldquo;开始&rdquo;，选择&ldquo;运行...&rdquo;。 </p>
            </td>
        </tr>
        <tr valign="top">
            <td class="listNumber" nowrap="nowrap" align="right">
            <p>3.</p>
            </td>
            <td>
            <p>键入&ldquo;devenv.exe /resetuserdata&rdquo;。</p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>此命令会运行几分钟时间，与此同时，Visual Studio 清除设置并将其自身重置到其最初的状态。此时，您可以打开&ldquo;任务管理器&rdquo;来检查 devenv.exe 进程是否仍在运行。在结束运行后，可以重新启动 Visual Studio。此时会再次出现首次启动对话框，就像在计算机上第一次运行 Visual Studio 一样。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.LanceJi.com/default.asp?id=124" /> 
	  <id>http://www.LanceJi.com/default.asp?id=124</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[inner join on, left join on, right join on讲解]]></title>
	  <author>
		 <name>Lance</name>
		 <uri>http://www.LanceJi.com/</uri>
		 <email>Lance.Ji@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.LanceJi.com/default.asp?cateID=5" label=".Net" /> 
	  <updated>2008-11-04T16:48:51+08:00</updated>
	  <published>2008-11-04T16:48:51+08:00</published>
		  <summary type="html"><![CDATA[<p>表A记录如下：<br />aID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aNum<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050111<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050112<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050113<br />4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050114<br />5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050115</p>
<p>表B记录如下:<br />bID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bName<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032401<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032402<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032403<br />4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032404<br />8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032408</p>
<p><br /><strong>实验如下:<br />1.left join</strong></p>
<p>sql语句如下: <br />select * from A<br />left join B <br />on A.aID = B.bID</p>
<p>结果如下:<br />aID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aNum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bName<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032401<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032402<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032403<br />4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032404<br />5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050115&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL<br />（所影响的行数为 5 行）</p>
<p><strong>结果说明</strong>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.<br />换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).<br />B表记录不足的地方均为NULL.</p>
<p><strong>2.right join<br /></strong>sql语句如下: <br />select * from A<br />right join B <br />on A.aID = B.bID<br />结果如下:<br />aID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aNum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bName<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032401<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032402<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032403<br />4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032404<br />NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032408<br />（所影响的行数为 5 行）<br /><strong>结果说明</strong>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.</p>
<p><br /><strong>3.inner join<br /></strong>sql语句如下: <br />select * from A<br />innerjoin B <br />on A.aID = B.bID</p>
<p>结果如下:<br />aID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aNum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bName<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032401<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032402<br />3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032403<br />4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a20050114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2006032404</p>
<p><strong>结果说明</strong>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.&nbsp;&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.LanceJi.com/default.asp?id=123" /> 
	  <id>http://www.LanceJi.com/default.asp?id=123</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[用C＃读取GPS数据的基类，适用于wince操作系统。 适合自带GPS模块的PDA或智能手机的设备]]></title>
	  <author>
		 <name>Lance</name>
		 <uri>http://www.LanceJi.com/</uri>
		 <email>Lance.Ji@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.LanceJi.com/default.asp?cateID=12" label="GPS" /> 
	  <updated>2008-10-27T18:15:50+08:00</updated>
	  <published>2008-10-27T18:15:50+08:00</published>
		  <summary type="html"><![CDATA[using System;<br />using System.Runtime.InteropServices;<br />using System.Text;
<p>namespace BaseStationPDA <br />{<br />&nbsp;class GPS <br />&nbsp;{</p>
<p>&nbsp;&nbsp;public string PortNum; <br />&nbsp;&nbsp;public int BaudRate;<br />&nbsp;&nbsp;public byte ByteSize;<br />&nbsp;&nbsp;public byte Parity; // 0-4=no,odd,even,mark,space <br />&nbsp;&nbsp;public byte StopBits; // 0,1,2 = 1, 1.5, 2 <br />&nbsp;&nbsp;public int ReadTimeout;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;//comm port win32 file handle<br />&nbsp;&nbsp;private int hComm = -1;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;public bool Opened = false;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;//win32 api constants<br />&nbsp;&nbsp;private const uint GENERIC_READ = 0x80000000;<br />&nbsp;&nbsp;private const uint GENERIC_WRITE = 0x40000000;<br />&nbsp;&nbsp;private const int OPEN_EXISTING = 3;&nbsp;&nbsp;<br />&nbsp;&nbsp;private const int INVALID_HANDLE_VALUE = -1;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;[StructLayout(LayoutKind.Sequential)]<br />&nbsp;&nbsp;&nbsp;public struct DCB <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;//taken from c struct in platform sdk <br />&nbsp;&nbsp;&nbsp;public int DCBlength;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // sizeof(DCB) <br />&nbsp;&nbsp;&nbsp;public int BaudRate;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定当前波特率 current baud rate<br />&nbsp;&nbsp;&nbsp;// these are the c struct bit fields, bit twiddle flag to set<br />&nbsp;&nbsp;&nbsp;public int fBinary;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定是否允许二进制模式,在windows95中必须主TRUE binary mode, no EOF check <br />&nbsp;&nbsp;&nbsp;public int fParity;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定是否允许奇偶校验 enable parity checking <br />&nbsp;&nbsp;&nbsp;public int fOutxCtsFlow;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定CTS是否用于检测发送控制，当为TRUE是CTS为OFF，发送将被挂起。 CTS output flow control <br />&nbsp;&nbsp;&nbsp;public int fOutxDsrFlow;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定CTS是否用于检测发送控制 DSR output flow control <br />&nbsp;&nbsp;&nbsp;public int fDtrControl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // DTR_CONTROL_DISABLE值将DTR置为OFF, DTR_CONTROL_ENABLE值将DTR置为ON, DTR_CONTROL_HANDSHAKE允许DTR&quot;握手&quot; DTR flow control type <br />&nbsp;&nbsp;&nbsp;public int fDsrSensitivity;&nbsp;&nbsp; // 当该值为TRUE时DSR为OFF时接收的字节被忽略 DSR sensitivity <br />&nbsp;&nbsp;&nbsp;public int fTXContinueOnXoff; // 指定当接收缓冲区已满,并且驱动程序已经发送出XoffChar字符时发送是否停止。TRUE时，在接收缓冲区接收到缓冲区已满的字节XoffLim且驱动程序已经发送出XoffChar字符中止接收字节之后，发送继续进行。　FALSE时，在接收缓冲区接收到代表缓冲区已空的字节XonChar且驱动程序已经发送出恢复发送的XonChar之后，发送继续进行。XOFF continues Tx <br />&nbsp;&nbsp;&nbsp;public int fOutX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TRUE时，接收到XoffChar之后便停止发送接收到XonChar之后将重新开始 XON/XOFF out flow control <br />&nbsp;&nbsp;&nbsp;public int fInX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TRUE时，接收缓冲区接收到代表缓冲区满的XoffLim之后，XoffChar发送出去接收缓冲区接收到代表缓冲区空的XonLim之后，XonChar发送出去 XON/XOFF in flow control <br />&nbsp;&nbsp;&nbsp;public int fErrorChar;&nbsp;&nbsp;&nbsp;&nbsp; // 该值为TRUE且fParity为TRUE时，用ErrorChar 成员指定的字符代替奇偶校验错误的接收字符 enable error replacement <br />&nbsp;&nbsp;&nbsp;public int fNull;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // eTRUE时，接收时去掉空（0值）字节 enable null stripping <br />&nbsp;&nbsp;&nbsp;public int fRtsControl;&nbsp;&nbsp;&nbsp;&nbsp; // RTS flow control <br />&nbsp;&nbsp;&nbsp;/*RTS_CONTROL_DISABLE时,RTS置为OFF<br />&nbsp;&nbsp;&nbsp;　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTS_CONTROL_ENABLE时, RTS置为ON<br />　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTS_CONTROL_HANDSHAKE时,<br />　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当接收缓冲区小于半满时RTS为ON<br />　&nbsp;&nbsp;&nbsp;　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当接收缓冲区超过四分之三满时RTS为OFF<br />　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RTS_CONTROL_TOGGLE时,<br />　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当接收缓冲区仍有剩余字节时RTS为ON ,否则缺省为OFF*/</p>
<p>&nbsp;&nbsp;&nbsp;public int fAbortOnError;&nbsp;&nbsp; // TRUE时,有错误发生时中止读和写操作 abort on error <br />&nbsp;&nbsp;&nbsp;public int fDummy2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 未使用 reserved <br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;public uint flags;<br />&nbsp;&nbsp;&nbsp;public ushort wReserved;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 未使用,必须为0 not currently used <br />&nbsp;&nbsp;&nbsp;public ushort XonLim;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定在XON字符发送这前接收缓冲区中可允许的最小字节数 transmit XON threshold <br />&nbsp;&nbsp;&nbsp;public ushort XoffLim;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定在XOFF字符发送这前接收缓冲区中可允许的最小字节数 transmit XOFF threshold <br />&nbsp;&nbsp;&nbsp;public byte ByteSize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定端口当前使用的数据位&nbsp;number of bits/byte, 4-8 <br />&nbsp;&nbsp;&nbsp;public byte Parity;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定端口当前使用的奇偶校验方法,可能为:EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY&nbsp; 0-4=no,odd,even,mark,space <br />&nbsp;&nbsp;&nbsp;public byte StopBits;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定端口当前使用的停止位数,可能为:ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS&nbsp; 0,1,2 = 1, 1.5, 2 <br />&nbsp;&nbsp;&nbsp;public char XonChar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定用于发送和接收字符XON的值 Tx and Rx XON character <br />&nbsp;&nbsp;&nbsp;public char XoffChar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定用于发送和接收字符XOFF值 Tx and Rx XOFF character <br />&nbsp;&nbsp;&nbsp;public char ErrorChar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 本字符用来代替接收到的奇偶校验发生错误时的值 error replacement character <br />&nbsp;&nbsp;&nbsp;public char EofChar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 当没有使用二进制模式时,本字符可用来指示数据的结束 end of input character <br />&nbsp;&nbsp;&nbsp;public char EvtChar;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 当接收到此字符时,会产生一个事件 received event character <br />&nbsp;&nbsp;&nbsp;public ushort wReserved1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 未使用 reserved; do not use <br />&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;[StructLayout(LayoutKind.Sequential)]<br />&nbsp;&nbsp;&nbsp;private struct COMMTIMEOUTS <br />&nbsp;&nbsp;{&nbsp; <br />&nbsp;&nbsp;&nbsp;public int ReadIntervalTimeout; <br />&nbsp;&nbsp;&nbsp;public int ReadTotalTimeoutMultiplier; <br />&nbsp;&nbsp;&nbsp;public int ReadTotalTimeoutConstant; <br />&nbsp;&nbsp;&nbsp;public int WriteTotalTimeoutMultiplier; <br />&nbsp;&nbsp;&nbsp;public int WriteTotalTimeoutConstant; <br />&nbsp;&nbsp;} &nbsp;</p>
<p>&nbsp;&nbsp;[StructLayout(LayoutKind.Sequential)]&nbsp;<br />&nbsp;&nbsp;&nbsp;private struct OVERLAPPED <br />&nbsp;&nbsp;{ <br />&nbsp;&nbsp;&nbsp;public int&nbsp; Internal; <br />&nbsp;&nbsp;&nbsp;public int&nbsp; InternalHigh; <br />&nbsp;&nbsp;&nbsp;public int&nbsp; Offset; <br />&nbsp;&nbsp;&nbsp;public int&nbsp; OffsetHigh; <br />&nbsp;&nbsp;&nbsp;public int hEvent; <br />&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern int CreateFile(<br />&nbsp;&nbsp;&nbsp;string lpFileName,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 要打开的串口名称<br />&nbsp;&nbsp;&nbsp;uint dwDesiredAccess,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定串口的访问方式，一般设置为可读可写方式<br />&nbsp;&nbsp;&nbsp;int dwShareMode,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定串口的共享模式，串口不能共享，所以设置为0<br />&nbsp;&nbsp;&nbsp;int lpSecurityAttributes, // 设置串口的安全属性，WIN9X下不支持，应设为NULL<br />&nbsp;&nbsp;&nbsp;int dwCreationDisposition,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 对于串口通信，创建方式只能为OPEN_EXISTING<br />&nbsp;&nbsp;&nbsp;int dwFlagsAndAttributes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 指定串口属性与标志，设置为FILE_FLAG_OVERLAPPED(重叠I/O操作)，指定串口以异步方式通信<br />&nbsp;&nbsp;&nbsp;int hTemplateFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 对于串口通信必须设置为NULL<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern bool GetCommState(<br />&nbsp;&nbsp;&nbsp;int hFile,&nbsp; //通信设备句柄<br />&nbsp;&nbsp;&nbsp;ref DCB lpDCB&nbsp;&nbsp;&nbsp; // 设备控制块DCB<br />&nbsp;&nbsp;&nbsp;);&nbsp;<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern bool BuildCommDCB(<br />&nbsp;&nbsp;&nbsp;string lpDef,&nbsp; // 设备控制字符串<br />&nbsp;&nbsp;&nbsp;ref DCB lpDCB&nbsp;&nbsp;&nbsp;&nbsp; // 设备控制块<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern bool SetCommState(<br />&nbsp;&nbsp;&nbsp;int hFile,&nbsp; // 通信设备句柄<br />&nbsp;&nbsp;&nbsp;ref DCB lpDCB&nbsp;&nbsp;&nbsp; // 设备控制块<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern bool GetCommTimeouts(<br />&nbsp;&nbsp;&nbsp;int hFile,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 通信设备句柄 handle to comm device<br />&nbsp;&nbsp;&nbsp;ref COMMTIMEOUTS lpCommTimeouts&nbsp; // 超时时间 time-out values<br />&nbsp;&nbsp;&nbsp;);&nbsp;<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]&nbsp;<br />&nbsp;&nbsp;private static extern bool SetCommTimeouts(<br />&nbsp;&nbsp;&nbsp;int hFile,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 通信设备句柄 handle to comm device<br />&nbsp;&nbsp;&nbsp;ref COMMTIMEOUTS lpCommTimeouts&nbsp; // 超时时间 time-out values<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern bool ReadFile(<br />&nbsp;&nbsp;&nbsp;int hFile,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 通信设备句柄 handle to file<br />&nbsp;&nbsp;&nbsp;byte[] lpBuffer,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 数据缓冲区 data buffer<br />&nbsp;&nbsp;&nbsp;int nNumberOfBytesToRead,&nbsp; // 多少字节等待读取 number of bytes to read<br />&nbsp;&nbsp;&nbsp;ref int lpNumberOfBytesRead, // 读取多少字节 number of bytes read<br />&nbsp;&nbsp;&nbsp;ref OVERLAPPED lpOverlapped&nbsp;&nbsp;&nbsp; // 溢出缓冲区 overlapped buffer<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]&nbsp;<br />&nbsp;&nbsp;private static extern bool WriteFile(<br />&nbsp;&nbsp;&nbsp;int hFile,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 通信设备句柄 handle to file<br />&nbsp;&nbsp;&nbsp;byte[] lpBuffer,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 数据缓冲区 data buffer<br />&nbsp;&nbsp;&nbsp;int nNumberOfBytesToWrite,&nbsp;&nbsp;&nbsp;&nbsp; // 多少字节等待写入 number of bytes to write<br />&nbsp;&nbsp;&nbsp;ref int lpNumberOfBytesWritten,&nbsp; // 已经写入多少字节 number of bytes written<br />&nbsp;&nbsp;&nbsp;ref OVERLAPPED lpOverlapped&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 溢出缓冲区 overlapped buffer<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern bool CloseHandle(<br />&nbsp;&nbsp;&nbsp;int hObject&nbsp;&nbsp; // handle to object<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;[DllImport(&quot;coredll.dll&quot;)]<br />&nbsp;&nbsp;private static extern uint GetLastError();<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;public void Open()<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;DCB dcbCommPort = new DCB();<br />&nbsp;&nbsp;&nbsp;COMMTIMEOUTS ctoCommPort = new COMMTIMEOUTS();&nbsp;<br />&nbsp;&nbsp; &nbsp; <br />&nbsp;&nbsp;&nbsp;// 打开串口 OPEN THE COMM PORT.<br />&nbsp;&nbsp;&nbsp;hComm = CreateFile(PortNum ,GENERIC_READ | GENERIC_WRITE,0, 0,OPEN_EXISTING,0,0);<br />&nbsp;&nbsp;&nbsp;// 如果串口没有打开，就打开 IF THE PORT CANNOT BE OPENED, BAIL OUT.<br />&nbsp;&nbsp;&nbsp;if(hComm == INVALID_HANDLE_VALUE) <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;throw(new ApplicationException(&quot;非法操作，不能打开串口！&quot;));<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;// 设置通信超时时间 SET THE COMM TIMEOUTS.<br />&nbsp;&nbsp;&nbsp;GetCommTimeouts(hComm,ref ctoCommPort);<br />&nbsp;&nbsp;&nbsp;ctoCommPort.ReadTotalTimeoutConstant = ReadTimeout;<br />&nbsp;&nbsp;&nbsp;ctoCommPort.ReadTotalTimeoutMultiplier = 0;<br />&nbsp;&nbsp;&nbsp;ctoCommPort.WriteTotalTimeoutMultiplier = 0;<br />&nbsp;&nbsp;&nbsp;ctoCommPort.WriteTotalTimeoutConstant = 0;&nbsp; <br />&nbsp;&nbsp;&nbsp;SetCommTimeouts(hComm,ref ctoCommPort);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;// 设置串口 SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS.<br />&nbsp;&nbsp;&nbsp;GetCommState(hComm, ref dcbCommPort);<br />&nbsp;&nbsp;&nbsp;dcbCommPort.BaudRate=BaudRate;<br />&nbsp;&nbsp;&nbsp;dcbCommPort.flags=0;<br />&nbsp;&nbsp;&nbsp;//dcb.fBinary=1;<br />&nbsp;&nbsp;&nbsp;dcbCommPort.flags|=1;<br />&nbsp;&nbsp;&nbsp;if (Parity&gt;0)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//dcb.fParity=1<br />&nbsp;&nbsp;&nbsp;&nbsp;dcbCommPort.flags|=2;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;dcbCommPort.Parity=Parity;<br />&nbsp;&nbsp;&nbsp;dcbCommPort.ByteSize=ByteSize;<br />&nbsp;&nbsp;&nbsp;dcbCommPort.StopBits=StopBits;<br />&nbsp;&nbsp;&nbsp;if (!SetCommState(hComm, ref dcbCommPort))<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//uint ErrorNum=GetLastError();<br />&nbsp;&nbsp;&nbsp;&nbsp;throw(new ApplicationException(&quot;非法操作，不能打开串口！&quot;));<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;//unremark to see if setting took correctly<br />&nbsp;&nbsp;&nbsp;//DCB dcbCommPort2 = new DCB();<br />&nbsp;&nbsp;&nbsp;//GetCommState(hComm, ref dcbCommPort2);<br />&nbsp;&nbsp;&nbsp;Opened = true;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;public void Close() <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;if (hComm!=INVALID_HANDLE_VALUE) <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hComm);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;public byte[] Read(int NumBytes) <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;byte[] BufBytes;<br />&nbsp;&nbsp;&nbsp;byte[] OutBytes;<br />&nbsp;&nbsp;&nbsp;BufBytes = new byte[NumBytes];<br />&nbsp;&nbsp;&nbsp;if (hComm!=INVALID_HANDLE_VALUE) <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;OVERLAPPED ovlCommPort = new OVERLAPPED();<br />&nbsp;&nbsp;&nbsp;&nbsp;int BytesRead=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ReadFile(hComm,BufBytes,NumBytes,ref BytesRead,ref ovlCommPort);<br />&nbsp;&nbsp;&nbsp;&nbsp;try<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OutBytes = new byte[BytesRead];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.Copy(BufBytes,0,OutBytes,0,BytesRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;catch<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return BufBytes;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;else <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;throw(new ApplicationException(&quot;串口未打开！&quot;));<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;return OutBytes;<br />&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;return BufBytes;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;public void Write(byte[] WriteBytes) <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;if (hComm!=INVALID_HANDLE_VALUE) <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;OVERLAPPED ovlCommPort = new OVERLAPPED();<br />&nbsp;&nbsp;&nbsp;&nbsp;int BytesWritten = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteFile(hComm,WriteBytes,WriteBytes.Length,ref BytesWritten,ref ovlCommPort);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;else <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;throw(new ApplicationException(&quot;串口未打开！&quot;));<br />&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br />&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public string GetGPS(string strGPS,string strFind)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;///从GPS中读取的数据中,找出想要的数据<br />&nbsp;&nbsp;&nbsp;///GPSstring原始字符串，<br />&nbsp;&nbsp;&nbsp;///strFind要查找的内容,X:经度，Y：纬度，T：时间，V：速度，是数字从1开始，即以&ldquo;，&rdquo;分隔的位置<br />&nbsp;&nbsp;&nbsp;///返回查找到指定位置的字符串<br />&nbsp;&nbsp;&nbsp;string handerStr=&quot;$GPRMC&quot;;//GPS串头<br />&nbsp;&nbsp;&nbsp;int findHander=strGPS.IndexOf(handerStr);//看是否含有GPS串头<br />&nbsp;&nbsp;&nbsp;if (findHander&lt;0)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;return &quot;-1&quot;;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;strGPS=strGPS.Substring(findHander,strGPS.Length-findHander);<br />&nbsp;&nbsp;&nbsp;&nbsp;string[] ArryTmp=strGPS.Split(&quot;,&quot;.ToCharArray());<br />&nbsp;&nbsp;&nbsp;&nbsp;try<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ArryTmp[2]==&quot;V&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;V&quot;;//没有信号<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(strFind)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;X&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return DM2DD(ArryTmp[5]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;Y&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return DM2DD(ArryTmp[3]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;T&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return T2Time(ArryTmp[9],ArryTmp[1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;V&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return Convert.ToString(Convert.ToDouble(ArryTmp[7])* 1.852);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;V&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;catch<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;V&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public string T2Time(string strDate,string strTime)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;string dT=&quot;20&quot;+strDate.Substring(4,2)+&quot;-&quot;+strDate.Substring(2,2)+&quot;-&quot;+strDate.Substring(0,2);<br />&nbsp;&nbsp;&nbsp;string TT=Convert.ToString(Convert.ToInt32(strTime.Substring(0,2)))+&quot;:&quot;+strTime.Substring(2,2)+&quot;:&quot;+strTime.Substring(4,2);<br />&nbsp;&nbsp;&nbsp;DateTime T=Convert.ToDateTime(dT+&quot; &quot;+TT);<br />&nbsp;&nbsp;&nbsp;T=T.AddHours(8);<br />&nbsp;&nbsp;&nbsp;return T.ToString();<br />&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public string DM2DD(string DegreeMinutes)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;//转换NMEA协议的&ldquo;度分&rdquo;格式为十进制&ldquo;度度&rdquo;格式<br />&nbsp;&nbsp;&nbsp;string sDegree;<br />&nbsp;&nbsp;&nbsp;string sMinute;<br />&nbsp;&nbsp;&nbsp;string sReturn=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;if(DegreeMinutes.IndexOf(&quot;.&quot;)==4)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//DegreeMinutes = Replace(DegreeMinutes, &quot;.&quot;, &quot;&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;//DM2DD = CDbl(Left(DegreeMinutes, 2)) + CDbl(Left(CStr(CDbl(Right(DegreeMinutes, Len(DegreeMinutes) - 2)) / 60), 8)) / 10000<br />&nbsp;&nbsp;&nbsp;&nbsp;DegreeMinutes=DegreeMinutes.Replace(&quot;.&quot;,&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;double sDegree1=Convert.ToDouble(DegreeMinutes.Substring(0,2));<br />&nbsp;&nbsp;&nbsp;&nbsp;double sDegree2=Convert.ToDouble(DegreeMinutes.Substring(2,DegreeMinutes.Length-2));<br />&nbsp;&nbsp;&nbsp;&nbsp;string sTmp=Convert.ToString(sDegree2/60);<br />&nbsp;&nbsp;&nbsp;&nbsp;sDegree2=Convert.ToDouble(sTmp.Substring(0,sTmp.Length));<br />&nbsp;&nbsp;&nbsp;&nbsp;sDegree2=sDegree2/10000;<br />&nbsp;&nbsp;&nbsp;&nbsp;sDegree=Convert.ToString(sDegree1+sDegree2);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(sDegree.Length&gt;11)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sDegree=sDegree.Substring(0,11);<br />&nbsp;&nbsp;&nbsp;&nbsp;sReturn=sDegree;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;else if(DegreeMinutes.IndexOf(&quot;.&quot;)==5)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//DegreeMinutes = Replace(DegreeMinutes, &quot;.&quot;, &quot;&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;//DM2DD = CDbl(Left(DegreeMinutes, 2)) + CDbl(Left(CStr(CDbl(Right(DegreeMinutes, Len(DegreeMinutes) - 2)) / 60), 8)) / 10000<br />&nbsp;&nbsp;&nbsp;&nbsp;DegreeMinutes=DegreeMinutes.Replace(&quot;.&quot;,&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;double sMinute1=Convert.ToDouble(DegreeMinutes.Substring(0,3));<br />&nbsp;&nbsp;&nbsp;&nbsp;double sMinute2=Convert.ToDouble(DegreeMinutes.Substring(3,DegreeMinutes.Length-3));<br />&nbsp;&nbsp;&nbsp;&nbsp;string sTmp=Convert.ToString(sMinute2/60);<br />&nbsp;&nbsp;&nbsp;&nbsp;sMinute2=Convert.ToDouble(sTmp.Substring(0,sTmp.Length));<br />&nbsp;&nbsp;&nbsp;&nbsp;sMinute2=sMinute2/10000;<br />&nbsp;&nbsp;&nbsp;&nbsp;sMinute=Convert.ToString(sMinute1+sMinute2);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(sMinute.Length&gt;10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sMinute=sMinute.Substring(0,10);<br />&nbsp;&nbsp;&nbsp;&nbsp;sReturn=sMinute;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;return sReturn;<br />&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public bool ScanPort()<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;try<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if (Opened)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Open();//打开串口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;byte[] bytRead=Read(512);<br />&nbsp;&nbsp;&nbsp;&nbsp;Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;if(Encoding.ASCII.GetString(bytRead,0,bytRead.Length).IndexOf(&quot;$GP&quot;)&gt;=0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;catch<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;}<br />&nbsp;}</p>
<p>&nbsp;class HexCon <br />&nbsp;{<br />&nbsp;&nbsp;// 把十六进制字符串转换成字节型和把字节型转换成十六进制字符串 converter hex string to byte and byte to hex string<br />&nbsp;&nbsp;public static string ByteToString(byte[] InBytes) <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;string StringOut=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;foreach (byte InByte in InBytes) <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;StringOut=StringOut + String.Format(&quot;{0:X2} &quot;,InByte);<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;return StringOut; <br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;public static byte[] StringToByte(string InString) <br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;string[] ByteStrings;<br />&nbsp;&nbsp;&nbsp;ByteStrings = InString.Split(&quot; &quot;.ToCharArray());<br />&nbsp;&nbsp;&nbsp;byte[] ByteOut;<br />&nbsp;&nbsp;&nbsp;ByteOut = new byte[ByteStrings.Length-1];<br />&nbsp;&nbsp;&nbsp;for (int i = 0;i==ByteStrings.Length-1;i++) <br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;ByteOut[i] = Convert.ToByte((&quot;0x&quot; + ByteStrings[i]));<br />&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;return ByteOut;<br />&nbsp;&nbsp;}<br />&nbsp;}<br />}</p>
<p>在别的class中调用时如Frmlogoin(是通过一个时间控件来循环的)</p>
<p>public class Frmlogin : System.Windows.Forms.Form<br />&nbsp;{</p>
<p>private GPS ss_port=new GPS();</p>
<p>}</p>
<p>#region 读取GPS<br />&nbsp;&nbsp;private void opengps(string ComPoint)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;ss_port.PortNum = ComPoint;<br />&nbsp;&nbsp;&nbsp;ss_port.BaudRate = 4800;<br />&nbsp;&nbsp;&nbsp;ss_port.ByteSize = 8;<br />&nbsp;&nbsp;&nbsp;ss_port.Parity = 0;<br />&nbsp;&nbsp;&nbsp;ss_port.StopBits = 1;<br />&nbsp;&nbsp;&nbsp;ss_port.ReadTimeout = 1000;</p>
<p>&nbsp;&nbsp;&nbsp;try<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if (ss_port.Opened)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss_port.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss_port.Open();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer1.Enabled=true;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss_port.Open();//打开串口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer1.Enabled=true;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;catch<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;{<br />//&nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show(&quot;读取GPS错误!&quot; ,&quot;系统提示&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private void timer1_Tick(object sender, System.EventArgs e)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if (ss_port.Opened)<br />&nbsp;&nbsp;&nbsp;&nbsp;gpsread();<br />&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;ss_port.Open();//打开串口<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;private void gpsread()<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;byte[] aa=ss_port.Read(512);<br />&nbsp;&nbsp;&nbsp;string gpsinfo =System.Text.Encoding.ASCII.GetString(aa,0,aa.Length);<br />&nbsp;&nbsp;&nbsp;GetParam.GpsLongitude=ss_port.GetGPS(gpsinfo,&quot;X&quot;);<br />&nbsp;&nbsp;&nbsp;GetParam.GpsLatitude=ss_port.GetGPS(gpsinfo,&quot;Y&quot;);<br />&nbsp;&nbsp;&nbsp;GetParam.GpsSpeed=ss_port.GetGPS(gpsinfo,&quot;V&quot;);<br />&nbsp;&nbsp;&nbsp;GetParam.GpsTime=ss_port.GetGPS(gpsinfo,&quot;T&quot;);<br />&nbsp;&nbsp;&nbsp;if(GetParam.GpsLongitude==&quot;-1&quot;) <br />&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsState=&quot;0&quot;;<br />&nbsp;&nbsp;&nbsp;if(GetParam.GpsLongitude==&quot;V&quot; &amp;&amp; GetParam.GpsLatitude==&quot;V&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsState=&quot;0&quot;;<br />&nbsp;&nbsp;&nbsp;if(GetParam.GpsLongitude!=&quot;-1&quot; &amp;&amp; GetParam.GpsLongitude!=&quot;V&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsState=&quot;1&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsLongitude=(GetParam.GpsLongitude==&quot;V&quot;) ? &quot;0&quot; : GetParam.GpsLongitude;<br />&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsLatitude=(GetParam.GpsLatitude==&quot;V&quot;) ? &quot;0&quot; : GetParam.GpsLatitude;<br />&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsSpeed=(GetParam.GpsSpeed==&quot;V&quot;) ? &quot;0&quot; : GetParam.GpsSpeed;<br />&nbsp;&nbsp;&nbsp;&nbsp;GetParam.GpsTime=(GetParam.GpsTime==&quot;V&quot;) ? &quot;0&quot; :GetParam.GpsTime;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;private void GpsClose()<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;timer1.Enabled=false;<br />&nbsp;&nbsp;&nbsp;if (ss_port.Opened)<br />&nbsp;&nbsp;&nbsp;&nbsp;ss_port.Close();<br />&nbsp;&nbsp;}<br /></p>
<div class="itemdesc">&nbsp;</div>
<div class="block_footer">&nbsp;</div>
<h1 class="block_title">&nbsp;</h1>
<div class="block">
<div class="post">
<div class="posttitle"><a id="homepage1_HomePageDays_DaysList_ctl03_DayItem_DayList_ctl01_TitleUrl" href="http://www.cnblogs.com/yqy542006/archive/2007/09/03/880240.html"><font color="#366900" size="5">利用两点的经纬度来计算这两点之间的距离</font></a> </div>
<div class="postcontent">
<p>Imports System.Data<br />Imports System.Math<br />Imports System.Net<br />Imports System.IO<br />Imports System.Windows</p>
<p>'导入对应的名称空间<br />'数学的计算方法，<br />'程序的实现很简单<br /><br />Public Class Diss<br />&nbsp;&nbsp;&nbsp; Public Const Ea As Double = 6378137 '赤道半径<br />&nbsp;&nbsp;&nbsp; Public Const Eb As Double = 6356725 '极半径<br />&nbsp;&nbsp;&nbsp; Public Ec1 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Public Ed1 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private j1 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private w1 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private jd1 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private wd1 As Double = 0.0</p>
<p>&nbsp;&nbsp;&nbsp; Public Ec2 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Public Ed2 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private j2 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private w2 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private jd2 As Double = 0.0<br />&nbsp;&nbsp;&nbsp; Private wd2 As Double = 0.0</p>
<p>&nbsp;&nbsp;&nbsp; Private Sub BtnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalc.Click<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dx As Double = 0.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim dy As Double = 0.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim d As Double = 0.0</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jd1 = Me.TbJ1.Text.Trim.ToString()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wd1 = Me.TbW1.Text.Trim.ToString()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jd2 = Me.TbJ2.Text.Trim.ToString()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wd2 = Me.TbW2.Text.Trim.ToString()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j1 = jd1 * Math.PI / 180<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w1 = wd1 * Math.PI / 180<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ec1 = Eb + (Ea - Eb) * (90 - wd1) / 90<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ed1 = Ec1 * Math.Cos(w1)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j2 = jd2 * Math.PI / 180<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; w2 = wd2 * Math.PI / 180<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ec2 = Eb + (Ea - Eb) * (90 - wd2) / 90<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ed2 = Ec2 * Math.Cos(w2)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dx = (j2 - j1) * Ed1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dy = (w2 - w1) * Ec1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d = Math.Sqrt(dx * dx + dy * dy)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Me.TextBox5.Text = d.ToString()<br />&nbsp;End Sub</p>
<p>&nbsp;&nbsp;&nbsp; Private Sub BtnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnCancel.Click<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Me.Close()<br />&nbsp;&nbsp;&nbsp; End Sub<br />&nbsp;End Class</p>
</div>
<div class="itemdesc">&nbsp;</div>
</div>
<div class="seperator">&nbsp;</div>
<div class="post">
<div class="posttitle"><a id="homepage1_HomePageDays_DaysList_ctl03_DayItem_DayList_ctl03_TitleUrl" href="http://www.cnblogs.com/yqy542006/archive/2007/09/03/880223.html"><font color="#366900" size="5">对GPS全球定位系统定位信息的接收以及对各定位参数数据的提取方法(VC++)</font></a> </div>
<div class="postcontent">&nbsp;此文为网上收集而来， 在研究完原理后打算用C#或VB.net改写， 同时也方便大家学习.<br /><br />
<p>&nbsp; 引言</p>
<p>　　卫星导航技术的飞速发展已逐渐取代了无线电导航、天文导航等传统导航技术，而成为一种普遍采用的导航定位技术，并在精度、实时性、全天候等方面 取得了长足进步。现不仅应用于物理勘探、电离层测量和航天器导航等诸多民用领域，在军事领域更是取得了广泛的应用<span lang="EN-US">--</span>在弹道导弹、野战指挥系统、精确弹道 测量以及军用地图快速测绘等领域均大量采用了卫星导航定位技术。有鉴于卫星导航技术在民用和军事领域的重要意义，使其得到了许多国家的关注。我国也于<span lang="EN-US"> <chsdate w:st="on" isrocdate="False" islunardate="False" day="31" month="10" year="2000">2000<span lang="EN-US"><span lang="EN-US">年10</span></span><span lang="EN-US"><span lang="EN-US">月31</span></span><span lang="EN-US"><span lang="EN-US">日</span></span></chsdate><span lang="EN-US">和<chsdate w:st="on" isrocdate="False" islunardate="False" day="21" month="12" year="2007">12<span lang="EN-US"><span lang="EN-US">月21</span></span><span lang="EN-US"><span lang="EN-US">日</span></span></chsdate><span lang="EN-US">成功发射了第一颗和第二颗导航定位试验卫星并建立了我国第一代卫星导航定位系统--&quot;</span></span></span>北斗导航系统<span lang="EN-US">&quot;</span>，但由于起步晚 也没有得到广泛应用。目前在我国应用最多的还是美国的<span lang="EN-US">GPS</span>系统。本文就针对当前比较普及的<span lang="EN-US">GPS</span>系统，对其卫星定位信息的接收及其定位参数提取的实现方 法予以介绍。</p>
<p>　　定位信息的接收</p>
<p>　　通常<span lang="EN-US">GPS</span>定位信息接收系统主要由<span lang="EN-US">GPS</span>接收天线、变频器、信号通道、微处理器、存储器以及电源等部分组成。由于<span lang="EN-US">GPS</span>定位信息内容较少，因此 多用<span lang="EN-US">RS-232</span>串口将定位信息（<span lang="EN-US">NEMA0183</span>语句）从<span lang="EN-US">GPS</span>接收机传送到计算机中进行信息提取处理。从串口读取数据有多种方法，在此直接使用<span lang="EN-US"> Win32 API</span>函数对其进行编程处理。在<span lang="EN-US">Windows</span>下不允许直接对硬件端口进行控制操作，所有的端口均被视为<span lang="EN-US">&quot;</span>文件<span lang="EN-US">&quot;</span>，因此在对串口进行侦听之前需要通过打开 文件来打开串口，并对其进行相关参数配置：<span lang="EN-US"> </span></p>
<p><span lang="EN-US">m_hCom=CreateFile(&quot;COM1&quot;,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL); file://</span>以异步方式打开<span lang="EN-US">COM1</span>口<span lang="EN-US"><br />SetCommMask (m_hCom, EV_RXCHAR ) ; file://</span>添加或修改<span lang="EN-US">Windows</span>所报告的事件列表<span lang="EN-US"><br />SetupComm (m_hCom,READBUFLEN/*</span>读缓冲<span lang="EN-US">*/,WRITEBUFLEN/*</span>写缓冲<span lang="EN-US">*/); // </span>初始化通讯设备参数<span lang="EN-US"> <br />// </span>清除缓冲信息<span lang="EN-US"><br />PurgeComm (m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR) ;<br />// </span>对异步<span lang="EN-US">I/O</span>进行设置<span lang="EN-US"><br />CommTimeOuts.ReadIntervalTimeout = MAXDWORD ; file://</span>接收两连续字节的最大时间间隔<span lang="EN-US"><br />CommTimeOuts.ReadTotalTimeoutMultiplier =0; file://</span>接收每字节的平均允许时间<span lang="EN-US"> <br />CommTimeOuts.ReadTotalTimeoutConstant = 0 ; file://</span>接收时间常数<span lang="EN-US"><br />SetCommTimeouts (m_hCom , &amp;CommTimeOuts) ;<br />file://</span>获取并设置串口<span lang="EN-US"><br />GetCommState ( m_hCom, &amp;dcb) ;<br />dcb.BaudRate = CBR_4800;<br />dcb.ByteSize = 8;<br />dcb.Parity = ODDPARITY;<br />dcb.StopBits = ONESTOPBIT ; <br />SetCommState( m_hCom, &amp;dcb); </span></p>
<p>　　在成功打开并设置通讯口后，可采取轮询串口和事件触发两种方式对数据进行接收处理，本文在此采取效率比较高的事件触发方式进行接收处理，通过等待<span lang="EN-US">EV_RXCHAR</span>事件的发生来启动<span lang="EN-US">ReadFile</span>函数完成对<span lang="EN-US">GPS</span>定位信息的接收：<span lang="EN-US"> <br /></span>欢迎光临<span lang="EN-US">3s8.cn</span></p>
<p><span lang="EN-US"><br />while(true){<br /></span>　<span lang="EN-US">WaitCommEvent (m_hCom,&amp;dwEvtMask,NULL); <br /></span>　<span lang="EN-US">if (dwEvtMask&amp;EV_RXCHAR == EV_RXCHAR)<br /></span>　　<span lang="EN-US">if(ComStat.cbInQue&gt;0) <br /></span>　　　<span lang="EN-US">ReadFile(m_hCom,m_readbuf,ComStat.cbInQue,&amp;nLength,&amp;olRead);<br />} </span></p>
<p>提取定位数据</p>
<p>　　<span lang="EN-US">GPS</span>接收机只要处于工作状态就会源源不断地把接收并计算出的<span lang="EN-US">GPS</span>导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存，在没有进一步处理之前缓存中是一长串字节流，这些信息在没有经过分类提取之前是无法加以利用的。因此，必须通过程序将各个字段的信息从缓存 字节流中提取出来，将其转化成有实际意义的，可供高层决策使用的定位信息数据。同其他通讯协议类似，对<span lang="EN-US">GPS</span>进行信息提取必须首先明确其帧结构，然后才能 根据其结构完成对各定位信息的提取。对于本文所使用的<span lang="EN-US">GARMIN GPS</span>天线板，其发送到计算机的数据主要由帧头、帧尾和帧内数据组成，根据数据帧的不同，帧头也不相同，主要有<span lang="EN-US">&quot;$GPGGA&quot;</span>、<span lang="EN-US">&quot;$GPGSA&quot;</span>、<span lang="EN-US">&quot;$ GPGSV&quot;</span>以及<span lang="EN-US">&quot;$GPRMC&quot;</span>等。这些帧头标识了后续帧内数据的组成结构，各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况，我们所关心的定位数据如经纬度、速度、时间等均可以从<span lang="EN-US">&quot;$GPRMC&quot;</span>帧中获取得到，该帧的结构及各字段释义如下：<span lang="EN-US"> <br /></span>　　<span lang="EN-US">$GPRMC,&lt;1&gt;,&lt;2&gt;,&lt;3&gt;,&lt;4&gt;,&lt;5&gt;,&lt;6&gt;,&lt;7&gt;,&lt;8&gt;,&lt;9&gt;,&lt;10&gt;,&lt;11&gt;*hh</span></p>
<p>　　<span lang="EN-US">&lt;1&gt; </span>当前位置的格林尼治时间，格式为<span lang="EN-US">hhmmss</span></p>
<p>　　<span lang="EN-US">&lt;2&gt; </span>状态<span lang="EN-US">, A </span>为有效位置<span lang="EN-US">, V</span>为非有效接收警告，即当前天线视野上方的卫星个数少于<span lang="EN-US">3</span>颗。</p>
<p>　　<span lang="EN-US">&lt;3&gt; </span>纬度<span lang="EN-US">, </span>格式为<span lang="EN-US">ddmm.mmmm</span></p>
<p>　　<span lang="EN-US">&lt;4&gt; </span>标明南北半球<span lang="EN-US">, N </span>为北半球、<span lang="EN-US">S</span>为南半球</p>
<p>　　<span lang="EN-US">&lt;5&gt; </span>径度，格式为<span lang="EN-US">dddmm.mmmm </span></p>
<p>　　<span lang="EN-US">&lt;6&gt; </span>标明东西半球，<span lang="EN-US">E</span>为东半球、<span lang="EN-US">W</span>为西半球</p>
<p>　　<span lang="EN-US">&lt;7&gt; </span>地面上的速度，范围为<span lang="EN-US">0.0</span>到<span lang="EN-US">999.9</span></p>
<p>　　<span lang="EN-US">&lt;8&gt; </span>方位角，范围为<span lang="EN-US">000.0</span>到<span lang="EN-US"> 359.9 </span>度</p>
<p>　　<span lang="EN-US">&lt;9&gt; </span>日期<span lang="EN-US">, </span>格式为<span lang="EN-US">ddmmyy </span></p>
<p>　　<span lang="EN-US">&lt;10&gt; </span>地磁变化，从<span lang="EN-US">000.0</span>到<span lang="EN-US"> 180.0 </span>度</p>
<p>　　<span lang="EN-US">&lt;11&gt; </span>地磁变化方向，为<span lang="EN-US">E </span>或 <span lang="EN-US">W<br /></span>　　至于其他几种帧格式，除了特殊用途外，平时并不常用，虽然接收机也在源源不断地 向主机发送各种数据帧，但在处理时一般先通过对帧头的判断而只对<span lang="EN-US">&quot;$GPRMC&quot;</span>帧进行数据的提取处理。如果情况特殊，需要从其他帧获取数据，处理方法与 之也是完全类似的。由于帧内各数据段由逗号分割，因此在处理缓存数据时一般是通过搜寻<span lang="EN-US">ASCII</span>码<span lang="EN-US">&quot;$&quot;</span>来判断是否是帧头，在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数，并作出相应的处理。下面就是对缓存<span lang="EN-US">Data</span>中的数据进行解帧处理的主要代码，本文在此只关心时间（日期和时间）和地理坐标（经、纬度）：</p>
<p><span lang="EN-US">for(int i=0;iBR&gt; </span>　<span lang="EN-US">if(Data[i]=='$') file://</span>帧头，<span lang="EN-US">SectionID</span>为逗号计数器<span lang="EN-US"><br /></span>　　<span lang="EN-US">SectionID=0;<br /></span>　　<span lang="EN-US">if(Data[i]==10){ file://</span>帧尾<span lang="EN-US"><br />}<br /></span>　<span lang="EN-US">if(Data[i]==',') file://</span>逗号计数<span lang="EN-US"><br /></span>　　<span lang="EN-US">SectionID ;<br /></span>　<span lang="EN-US">else {<br /></span>　　<span lang="EN-US">switch(SectionID){<br /></span>　　　<span lang="EN-US">case 1: file://</span>提取出时间<span lang="EN-US"><br /></span>　　　　<span lang="EN-US">m_sTime =Data[i];<br /></span>　　　　<span lang="EN-US">break;<br /></span>　　　<span lang="EN-US">case 2: file://</span>判断数据是否可信<span lang="EN-US">(</span>当<span lang="EN-US">GPS</span>天线能接收到有<span lang="EN-US">3</span>颗<span lang="EN-US">GPS</span>卫星时为<span lang="EN-US">A</span>，可信<span lang="EN-US">)<br /></span>　　　　<span lang="EN-US">if(Data[i]=='A') <br /></span>　　　　　<span lang="EN-US">GPSParam[m_nNumber].m_bValid=true;<br /></span>　　　　　<span lang="EN-US">break;<br /></span>　　　<span lang="EN-US">case 3: file://</span>提取出纬度<span lang="EN-US"><br /></span>　　　　　<span lang="EN-US">m_sPositionY =Data[i];<br /></span>　　　　　<span lang="EN-US">break;<br /></span>　　　<span lang="EN-US">case 5: file://</span>提取出经度<span lang="EN-US"><br /></span>　　　　　<span lang="EN-US">m_sPositionX =Data[i];<br /></span>　　　　　<span lang="EN-US">break;<br /></span>　　　<span lang="EN-US">case 9: file://</span>提取出日期<span lang="EN-US"><br /></span>　　　　　<span lang="EN-US">m_sDate =Data[i];<br /></span>　　　　　<span lang="EN-US">break;<br /></span>　　　　　<span lang="EN-US">default:<br /></span>　　　　　<span lang="EN-US">break;<br /></span>　　<span lang="EN-US">}<br /></span>　<span lang="EN-US">}<br />} </span></p>
<p>　　现在已将所需信息提取到内存，即时间、日期以及经纬度分别保存在<span lang="EN-US">CString</span>型变量<span lang="EN-US"> m_sTime</span>、<span lang="EN-US">m_Data</span>、<span lang="EN-US">m_sPositionY</span>和<span lang="EN-US">m_sPositionX</span>中。在实际应用中往往要根据需要对其做进一步的运算处理，比如从<span lang="EN-US"> GPS</span>接收机中获得的时间信息为格林尼治时间，因此需要在获取时间上加<span lang="EN-US">8</span>小时才为我国标准时间。而且<span lang="EN-US">GPS</span>使用的<span lang="EN-US">WGS</span>－<span lang="EN-US">84</span>坐标系也与我国采用的坐标系不同，有时也要对此加以变换。而这些变换运算必须通过数值运算完成，因此需要将前面获取的字符型变量转化为数值型变量，这部分工作可放在检测到帧尾完成：</p>
<p><span lang="EN-US">::strcpy(buf,m_sTime); <br />str.Format(&quot;%c%c&quot;,buf[0],buf[1]);<br />GPSParam[m_nNumber].m_nHour=(atoi(str) 8)$; file://</span>提取出小时并转化为<span lang="EN-US">24</span>小时制北京时间 欢迎光临<span lang="EN-US">3s8.cn <br /><a href="http://www.LanceJi.com/file://buf/"><font color="#366900">file://buf</font></a></span>第<span lang="EN-US">2</span>、<span lang="EN-US">3</span>字节为分钟，<span lang="EN-US">4</span>、<span lang="EN-US">5</span>字节为秒，提取方法同上<span lang="EN-US"><br />&hellip;&hellip;<br />::strcpy(buf,m_sDate);<br />str.Format(&quot;%c%c&quot;,buf[0],buf[1]); file://</span>提取出月份<span lang="EN-US"><br /><a href="http://www.LanceJi.com/file://buf/"><font color="#366900">file://buf</font></a></span>第<span lang="EN-US">2</span>、<span lang="EN-US">3</span>字节为天，<span lang="EN-US">4</span>、<span lang="EN-US">5</span>字节为年，提取方法同上<span lang="EN-US"><br />&hellip;&hellip;<br />::strcpy(buf,m_sPositionY);<br />str.Format(&quot;%c%c&quot;,buf[0],buf[1]);<br />PositionValue=atoi(str); <br />str.Format(&quot;%c%c%c%c%c%c%c&quot;,buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8]);<br />GPSParam[m_nNumber].m_dPositionY=PositionValue*60 atof(str); file://</span>提取出纬度<span lang="EN-US"><br />&hellip;&hellip;<br />::strcpy(buf,m_sPositionX);<br />if(m_sPositionX.GetLength()==10) file://</span>经度超过<span lang="EN-US">90</span>度<span lang="EN-US">(</span>如东经<span lang="EN-US">125</span>度<span lang="EN-US">)<br />{<br /></span>　<span lang="EN-US">str.Format(&quot;%c%c%c&quot;,buf[0],buf[1],buf[2]);<br /></span>　<span lang="EN-US">PositionValue=atoi(str);<br /></span>　<span lang="EN-US">str.Format(&quot;%c%c%c%c%c%c%c&quot;,buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]);<br /></span>　<span lang="EN-US">GPSParam[m_nNumber].m_dPositionX=PositionValue*60 atof(str); file://</span>提取出经度<span lang="EN-US">(</span>单位为分<span lang="EN-US">)<br />}<br />if(m_sPositionX.GetLength()==9) file://</span>经度未超过<span lang="EN-US">90</span>度<span lang="EN-US">(</span>如东经<span lang="EN-US">89</span>度<span lang="EN-US">) </span>站<span lang="EN-US"> <br />{<br /></span>　<span lang="EN-US">file://</span>处理方法同上，只是<span lang="EN-US">buf</span>的第<span lang="EN-US">0</span>、<span lang="EN-US">1</span>字节为度数，<span lang="EN-US">2~9</span>为分数。<span lang="EN-US"><br />}<br /></span>　　到此为止，已将时间和经纬度信息提取到<span lang="EN-US">GPS</span>结构数组<span lang="EN-US">GPSParam</span>中的各个变量中去，后续的处理和高层决策可根据该结构中存储的数据作出相应的处理。</p>
<p>　　小结</p>
<p>　　本文结合主要的相关程序代码对<span lang="EN-US">GPS</span>全球定位系统的定位导航信息的接收和参数数据的提取进行了讨论，同时也对串口的程序设计作了简要的讲述。通过本文的设计方法可以将<span lang="EN-US">GPS</span>定位导航信息从<span lang="EN-US">GPS</span>接收机完整接收，通过对定位参数的提取可将其应用于其他高层应用决策如各种<span lang="EN-US">GIS</span>、<span lang="EN-US">RS</span>系统等。</p>
</div>
</div>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.LanceJi.com/default.asp?id=122" /> 
	  <id>http://www.LanceJi.com/default.asp?id=122</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[什么是托管代码? 什么是非托管代码？]]></title>
	  <author>
		 <name>Lance</name>
		 <uri>http://www.LanceJi.com/</uri>
		 <email>Lance.Ji@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.LanceJi.com/default.asp?cateID=5" label=".Net" /> 
	  <updated>2008-10-21T10:42:36+08:00</updated>
	  <published>2008-10-21T10:42:36+08:00</published>
		  <summary type="html"><![CDATA[托管代码 (managed code) <br /><br />由公共语言运行库环境（而不是直接由操作系统）执行的代码。托管代码应用程序可以获得公共语言运行库服务，例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。 <br /><br />Unmanaged Code - 非托管代码 <br /><br />在公共语言运行库环境的外部，由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务；它与托管代码不同，后者从公共语言运行库中获得这些服务。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.LanceJi.com/default.asp?id=121" /> 
	  <id>http://www.LanceJi.com/default.asp?id=121</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ASP.NET2.0发送邮件]]></title>
	  <author>
		 <name>Lance</name>
		 <uri>http://www.LanceJi.com/</uri>
		 <email>Lance.Ji@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.LanceJi.com/default.asp?cateID=5" label=".Net" /> 
	  <updated>2008-08-21T16:00:01+08:00</updated>
	  <published>2008-08-21T16:00:01+08:00</published>
		  <summary type="html"><![CDATA[<div class="post">
<div class="postcontent">
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_3_1258_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_3_1258_Closed_Text.style.display='none'; Codehighlighter1_3_1258_Open_Image.style.display='inline'; Codehighlighter1_3_1258_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><img id="Codehighlighter1_3_1258_Open_Image" style="DISPLAY: inline" onclick="this.style.display='none'; Codehighlighter1_3_1258_Open_Text.style.display='none'; Codehighlighter1_3_1258_Closed_Image.style.display='inline'; Codehighlighter1_3_1258_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_3_1258_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">SendMail:发送邮件</span><span id="Codehighlighter1_3_1258_Open_Text" style="DISPLAY: inline"><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000">&nbsp;SendMail:发送邮件</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_29_157_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_157_Open_Text.style.display='none'; Codehighlighter1_29_157_Closed_Image.style.display='inline'; Codehighlighter1_29_157_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_29_157_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_29_157_Closed_Text.style.display='none'; Codehighlighter1_29_157_Open_Image.style.display='inline'; Codehighlighter1_29_157_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_29_157_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_29_157_Open_Text"><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;SendMail:发送邮件<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name=&quot;up&quot;&gt;&lt;/param&gt;</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name=&quot;userMAIL&quot;&gt;&lt;/param&gt;</span><span style="COLOR: #808080"></span></span><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;SendMail()<br /><img id="Codehighlighter1_208_1243_Open_Image" onclick="this.style.display='none'; Codehighlighter1_208_1243_Open_Text.style.display='none'; Codehighlighter1_208_1243_Closed_Image.style.display='inline'; Codehighlighter1_208_1243_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_208_1243_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_208_1243_Closed_Text.style.display='none'; Codehighlighter1_208_1243_Open_Image.style.display='inline'; Codehighlighter1_208_1243_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_208_1243_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_208_1243_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">mail服务器设置</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SmtpClient&nbsp;mailserver&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SmtpClient();<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mailserver.Host&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;smtp.gmail.com</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">;&nbsp;&nbsp; //发送邮件的邮件服务器<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mailserver.Credentials&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;System.Net.NetworkCredential(</span><span style="COLOR: #000000">&quot;帐号名</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&quot;密码</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mailserver.Timeout&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5000</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mailserver.EnableSsl&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;true</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">mail邮件设置</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MailMessage&nbsp;mail&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MailMessage();<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MailAddress&nbsp;mfrom&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MailAddress(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">发件地址</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.From&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;mfrom;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.To.Add(&quot;收件地址&quot;);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.Subject&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&quot;邮件</span><span style="COLOR: #000000">标题</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.SubjectEncoding&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;System.Text.Encoding.GetEncoding(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">GB2312</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.BodyEncoding&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;System.Text.Encoding.GetEncoding(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">GB2312</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.IsBodyHtml&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail.Body&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Format(</span><span style="COLOR: #000000">@&quot;</span><span style="COLOR: #000000">恭喜您创建了全新的&nbsp;***网&nbsp;帐户&nbsp;。<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;请保留此电子邮件作为记录，因为它包含重要的确认代码，如果您要是遇到问题或忘记密码，将会需要此邮件。<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您的帐号：***<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您的密码：***<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您可以通过&nbsp;*****&nbsp;登录您的帐户。<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mailserver.Send(mail);<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>
经过测试，sina,gmail都可使用。163的还有些问题。<br />&nbsp;<br />web.config里<br />
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">system.net</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">mailSettings</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">smtp&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">network&nbsp;host</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">smtp.sina.com</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;port</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;userName</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">用户名</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;password</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">密码</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">smtp</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">mailSettings</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">system.net</span><span style="COLOR: #000000">&gt;</span></div>
</div>
<div class="itemdesc">&nbsp;</div>
</div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.LanceJi.com/default.asp?id=120" /> 
	  <id>http://www.LanceJi.com/default.asp?id=120</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Castle学习笔记9----ActiveRecord Hands On Lab（1）：基本数据访问]]></title>
	  <author>
		 <name>Lance</name>
		 <uri>http://www.LanceJi.com/</uri>
		 <email>Lance.Ji@msn.com</email>
	  </author>
	  <category term="" scheme="http://www.LanceJi.com/default.asp?cateID=5" label=".Net" /> 
	  <updated>2008-08-21T14:38:25+08:00</updated>
	  <published>2008-08-21T14:38:25+08:00</published>
		  <summary type="html"><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">随着<span lang="EN-US">Castle1.0 RC2</span>版本的发布，<span lang="EN-US">Castle</span>逐渐走向成熟和趋于稳定，打算在近期写几篇关于<span lang="EN-US">AR</span>的<span lang="EN-US">Hands On Lab</span>。本篇文章将会介绍<span lang="EN-US">AR</span>中最基本的数据访问，包括数据简单筛选和模糊查询等。在开始本<span lang="EN-US">Hands On Lab</span>之前，请先下载并安装<span lang="EN-US"><a href="http://www.castleproject.org/castle/download.html">Castle 1.0 RC2</a></span>。在整个<span lang="EN-US">Hands On Lab</span>中，我们将使用<span lang="EN-US">Northwind</span>数据库作为示例，开发环境为<span lang="EN-US">VS2005</span>。<span lang="EN-US">
<p>&nbsp;</p>
</span></span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">1</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">．新建<span lang="EN-US">Castle ActiveRecord </span>项目，安装<span lang="EN-US">Castle</span>之后会在新建项目对话框中看到<span lang="EN-US">Castle ActiveRecord</span>项目类型，输入项目名<span lang="EN-US">Models</span>。<span lang="EN-US">
<p>&nbsp;</p>
</span></span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体"><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"></shapetype><stroke joinstyle="miter"></stroke>
<formulas>
</formulas>
<f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f>
<path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path>
<lock v:ext="edit" aspectratio="t"></lock><img height="405" alt="" src="http://images.cnblogs.com/cnblogs_com/terrylee/ARHandsOnLab_001.gif" width="600" border="0" />
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">在生成一个<span lang="EN-US">Models</span>项目的同时，也为我们生成了一个<span lang="EN-US">Models.Test</span>的单元测试项目，这里我们不用测试驱动的方法，直接删除该测试项目就可以了。<span lang="EN-US">
<p>&nbsp;</p>
</span></span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">2</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">．在<span lang="EN-US">Models</span>项目中添加<span lang="EN-US">Customer</span>实体类，并引入命名空间：<span lang="EN-US">
<p>&nbsp;</p>
</span></span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-no-proof: yes">using</span><span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-no-proof: yes"> Castle.ActiveRecord;
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><img height="298" alt="" src="http://images.cnblogs.com/cnblogs_com/terrylee/ARHandsOnLab_007.gif" width="199" border="0" /></span><span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">
<p>&nbsp;</p>
</span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">完成后<span lang="EN-US">Customer</span>实体类代码如下：<span lang="EN-US">
<p>&nbsp;</p>
</span></span></p>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%">&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">[ActiveRecord(</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">Customers</span><span style="COLOR: #000000">&quot;</span><span style="COLOR: #000000">)]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Customer&nbsp;:&nbsp;ActiveRecordBase</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Customer</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_81_1841_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_1841_Open_Text.style.display='none'; Codehighlighter1_81_1841_Closed_Image.style.display='inline'; Codehighlighter1_81_1841_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_81_1841_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_81_1841_Closed_Text.style.display='none'; Codehighlighter1_81_1841_Open_Image.style.display='inline'; Codehighlighter1_81_1841_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_81_1841_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_81_1841_Open_Text"><span style="COLOR: #000000">{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_customerID;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_companyName;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_contactName;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_contactTitle;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_address;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_city;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_region;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_postalCode;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_country;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_phone;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;_fax;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[PrimaryKey(PrimaryKeyType.Assigned)]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;CustomerID<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_500_580_Open_Image" onclick="this.style.display='none'; Codehighlighter1_500_580_Open_Text.style.display='none'; Codehighlighter1_500_580_Closed_Image.style.display='inline'; Codehighlighter1_500_580_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_500_580_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_500_580_Closed_Text.style.display='none'; Codehighlighter1_500_580_Open_Image.style.display='inline'; Codehighlighter1_500_580_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_500_580_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_500_580_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_514_536_Open_Image" onclick="this.style.display='none'; Codehighlighter1_514_536_Open_Text.style.display='none'; Codehighlighter1_514_536_Closed_Image.style.display='inline'; Codehighlighter1_514_536_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_514_536_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_514_536_Closed_Text.style.display='none'; Codehighlighter1_514_536_Open_Image.style.display='inline'; Codehighlighter1_514_536_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_514_536_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_514_536_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_customerID;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_551_574_Open_Image" onclick="this.style.display='none'; Codehighlighter1_551_574_Open_Text.style.display='none'; Codehighlighter1_551_574_Closed_Image.style.display='inline'; Codehighlighter1_551_574_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_551_574_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_551_574_Closed_Text.style.display='none'; Codehighlighter1_551_574_Open_Image.style.display='inline'; Codehighlighter1_551_574_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_551_574_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_551_574_Open_Text"><span style="COLOR: #000000">{&nbsp;_customerID&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;CompanyName<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_634_716_Open_Image" onclick="this.style.display='none'; Codehighlighter1_634_716_Open_Text.style.display='none'; Codehighlighter1_634_716_Closed_Image.style.display='inline'; Codehighlighter1_634_716_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_634_716_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_634_716_Closed_Text.style.display='none'; Codehighlighter1_634_716_Open_Image.style.display='inline'; Codehighlighter1_634_716_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_634_716_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_634_716_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_648_671_Open_Image" onclick="this.style.display='none'; Codehighlighter1_648_671_Open_Text.style.display='none'; Codehighlighter1_648_671_Closed_Image.style.display='inline'; Codehighlighter1_648_671_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_648_671_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_648_671_Closed_Text.style.display='none'; Codehighlighter1_648_671_Open_Image.style.display='inline'; Codehighlighter1_648_671_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_648_671_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_648_671_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_companyName;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_686_710_Open_Image" onclick="this.style.display='none'; Codehighlighter1_686_710_Open_Text.style.display='none'; Codehighlighter1_686_710_Closed_Image.style.display='inline'; Codehighlighter1_686_710_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_686_710_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_686_710_Closed_Text.style.display='none'; Codehighlighter1_686_710_Open_Image.style.display='inline'; Codehighlighter1_686_710_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_686_710_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_686_710_Open_Text"><span style="COLOR: #000000">{&nbsp;_companyName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;ContactName<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_770_852_Open_Image" onclick="this.style.display='none'; Codehighlighter1_770_852_Open_Text.style.display='none'; Codehighlighter1_770_852_Closed_Image.style.display='inline'; Codehighlighter1_770_852_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_770_852_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_770_852_Closed_Text.style.display='none'; Codehighlighter1_770_852_Open_Image.style.display='inline'; Codehighlighter1_770_852_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_770_852_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_770_852_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_784_807_Open_Image" onclick="this.style.display='none'; Codehighlighter1_784_807_Open_Text.style.display='none'; Codehighlighter1_784_807_Closed_Image.style.display='inline'; Codehighlighter1_784_807_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_784_807_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_784_807_Closed_Text.style.display='none'; Codehighlighter1_784_807_Open_Image.style.display='inline'; Codehighlighter1_784_807_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_784_807_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_784_807_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_contactName;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_822_846_Open_Image" onclick="this.style.display='none'; Codehighlighter1_822_846_Open_Text.style.display='none'; Codehighlighter1_822_846_Closed_Image.style.display='inline'; Codehighlighter1_822_846_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_822_846_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_822_846_Closed_Text.style.display='none'; Codehighlighter1_822_846_Open_Image.style.display='inline'; Codehighlighter1_822_846_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_822_846_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_822_846_Open_Text"><span style="COLOR: #000000">{&nbsp;_contactName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;ContactTitle<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_907_991_Open_Image" onclick="this.style.display='none'; Codehighlighter1_907_991_Open_Text.style.display='none'; Codehighlighter1_907_991_Closed_Image.style.display='inline'; Codehighlighter1_907_991_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_907_991_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_907_991_Closed_Text.style.display='none'; Codehighlighter1_907_991_Open_Image.style.display='inline'; Codehighlighter1_907_991_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_907_991_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_907_991_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_921_945_Open_Image" onclick="this.style.display='none'; Codehighlighter1_921_945_Open_Text.style.display='none'; Codehighlighter1_921_945_Closed_Image.style.display='inline'; Codehighlighter1_921_945_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_921_945_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_921_945_Closed_Text.style.display='none'; Codehighlighter1_921_945_Open_Image.style.display='inline'; Codehighlighter1_921_945_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_921_945_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_921_945_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_contactTitle;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_960_985_Open_Image" onclick="this.style.display='none'; Codehighlighter1_960_985_Open_Text.style.display='none'; Codehighlighter1_960_985_Closed_Image.style.display='inline'; Codehighlighter1_960_985_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_960_985_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_960_985_Closed_Text.style.display='none'; Codehighlighter1_960_985_Open_Image.style.display='inline'; Codehighlighter1_960_985_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_960_985_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_960_985_Open_Text"><span style="COLOR: #000000">{&nbsp;_contactTitle&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;Address<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1041_1115_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1041_1115_Open_Text.style.display='none'; Codehighlighter1_1041_1115_Closed_Image.style.display='inline'; Codehighlighter1_1041_1115_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1041_1115_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1041_1115_Closed_Text.style.display='none'; Codehighlighter1_1041_1115_Open_Image.style.display='inline'; Codehighlighter1_1041_1115_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1041_1115_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1041_1115_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1055_1074_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1055_1074_Open_Text.style.display='none'; Codehighlighter1_1055_1074_Closed_Image.style.display='inline'; Codehighlighter1_1055_1074_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1055_1074_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1055_1074_Closed_Text.style.display='none'; Codehighlighter1_1055_1074_Open_Image.style.display='inline'; Codehighlighter1_1055_1074_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_1055_1074_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1055_1074_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_address;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1089_1109_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1089_1109_Open_Text.style.display='none'; Codehighlighter1_1089_1109_Closed_Image.style.display='inline'; Codehighlighter1_1089_1109_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1089_1109_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1089_1109_Closed_Text.style.display='none'; Codehighlighter1_1089_1109_Open_Image.style.display='inline'; Codehighlighter1_1089_1109_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_1089_1109_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1089_1109_Open_Text"><span style="COLOR: #000000">{&nbsp;_address&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;City<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1162_1230_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1162_1230_Open_Text.style.display='none'; Codehighlighter1_1162_1230_Closed_Image.style.display='inline'; Codehighlighter1_1162_1230_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1162_1230_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1162_1230_Closed_Text.style.display='none'; Codehighlighter1_1162_1230_Open_Image.style.display='inline'; Codehighlighter1_1162_1230_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1162_1230_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1162_1230_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1176_1192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1176_1192_Open_Text.style.display='none'; Codehighlighter1_1176_1192_Closed_Image.style.display='inline'; Codehighlighter1_1176_1192_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1176_1192_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1176_1192_Closed_Text.style.display='none'; Codehighlighter1_1176_1192_Open_Image.style.display='inline'; Codehighlighter1_1176_1192_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_1176_1192_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1176_1192_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_city;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1207_1224_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1207_1224_Open_Text.style.display='none'; Codehighlighter1_1207_1224_Closed_Image.style.display='inline'; Codehighlighter1_1207_1224_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1207_1224_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1207_1224_Closed_Text.style.display='none'; Codehighlighter1_1207_1224_Open_Image.style.display='inline'; Codehighlighter1_1207_1224_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_1207_1224_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1207_1224_Open_Text"><span style="COLOR: #000000">{&nbsp;_city&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;Region<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1279_1351_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1279_1351_Open_Text.style.display='none'; Codehighlighter1_1279_1351_Closed_Image.style.display='inline'; Codehighlighter1_1279_1351_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1279_1351_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1279_1351_Closed_Text.style.display='none'; Codehighlighter1_1279_1351_Open_Image.style.display='inline'; Codehighlighter1_1279_1351_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1279_1351_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1279_1351_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_1293_1311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1293_1311_Open_Text.style.display='none'; Codehighlighter1_1293_1311_Closed_Image.style.display='inline'; Codehighlighter1_1293_1311_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1293_1311_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1293_1311_Closed_Text.style.display='none'; Codehighlighter1_1293_1311_Open_Image.style.display='inline'; Codehighlighter1_1293_1311_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_1293_1311_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1293_1311_Open_Text"><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_region;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1326_1345_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1326_1345_Open_Text.style.display='none'; Codehighlighter1_1326_1345_Closed_Image.style.display='inline'; Codehighlighter1_1326_1345_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1326_1345_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1326_1345_Closed_Text.style.display='none'; Codehighlighter1_1326_1345_Open_Image.style.display='inline'; Codehighlighter1_1326_1345_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;</span><span id="Codehighlighter1_1326_1345_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1326_1345_Open_Text"><span style="COLOR: #000000">{&nbsp;_region&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;value;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[Property]<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;PostalCode<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1404_1484_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1404_1484_Open_Text.style.display='none'; Codehighlighter1_1404_1484_Closed_Image.style.display='inline'; Codehighlighter1_1404_1484_Closed_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1404_1484_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1404_1484_Closed_Text.style.display='none'; Codehighlighter1_1404_1484_Open_Image.style.display='inline'; Codehighlighter1_1404_1484_Open_Text.style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1404_1484_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1404_1484_Open_Text"><span style="COLO