亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serialcomm.asp

?? 一個串口通信的程序
?? ASP
?? 第 1 頁 / 共 3 頁
字號:
<%@ Language=VBScript %>
<!-- #include file="../../ArticleAccess.asp" -->
<!-- #include file="../../GetAccessCount.asp" -->
<%
 PrintArticleAccessCount 45
 AccessArticle  45
 %>
 <html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title> Serial Communication in Windows </title>
</head>

<body>

<p align="center">&nbsp;</p>
<p align="center"><font face="Verdana" size="2"><b>[<u> </u></b></font><font size="2" face="Verdana"><b><u>Serial Communication in Windows</u></b></font><font face="Verdana" size="2"><b><u>
</u>]<br>
</b><a href="mailto:ashishdhar@hotmail.com"><i>ashish dhar</i></a></font></p>
<table borderColor="#ffffff" height="4318" cellSpacing="0" borderColorDark="#ffffff" width="99%" borderColorLight="#ffffff" border="1">
  <tbody>
    <tr>
      <td vAlign="top" width="11%" bgColor="#538ab3" height="4314">
        <div align="justify">
          <table borderColor="#538ab3" height="4654" cellSpacing="4" borderColorDark="#000000" width="100%" borderColorLight="#538ab3" border="4">
            <tbody>
              <tr>
                <td vAlign="top" borderColorLight="#538ab3" width="100%" bgColor="#538ab3" borderColorDark="#538ab3" height="4650"><br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                  <br>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </td>
      <td vAlign="top" borderColorLight="#e8e9e2" width="69%" bgColor="#ffffff" borderColorDark="#f0f0f0" height="4314">&nbsp;

<p><font size="2" face="Verdana"><a href="../Source.zip">Source code</a><b><br>
<br>
</b>This article is meant to give you a jump start on doing serial communication
in Windows (NT family). The article will provide a class called
CSerialCommHelper which you can use directly to do serial communication in your
application. The class that is provided here with this article does uses
overlapped IO. You donot need to know much about serial communication or
overlapped IO for this article. However, you need to know some about the
synchronization objects like Events and some Windows APIs like
WaitForSingleObject and WaitForMultipleObject etc. Also some basic understanding
of windows threads is required - like thread creation and <i>termination</i>.</font></p>
<p><font size="2" face="Verdana"><b>Introduction<br>
</b>In order for your computer to be able to do serial communication, computer
has to have a serial port. Most of the computers have at least one serial port
also known as COM port ( communication port ) and are generally called COM1 COM2
etc. Then there are the device drivers for the serial ports. If you think it
over, all you that you need to do in serial communication is either send data or
receive data. In other words, you are doing input/output (IO) to the serial
port. The same IO is done with disk based files. Hence there is no surprise that
the APIs for reading and writing to a file apply to serial ports as well. When
you send data to the serial port its in terms of bytes but when it leaves the
serial port it is in the form of bits. Similarly, when the data arrives at the
serial port, its in bit format and when you get data you get it in bytes.&nbsp;<br>
Without any further discussion lets get started.<br>
<br>
<b>Opening the COM port<br>
</b>The first and the foremost step in doing a serial communication is to open
the desired port. Lets say you have your device hooked to COM1 you can open the
COM port using following API:</font></p>
<table border="0" cellspacing="1" width="100%" bgcolor="#EEE8EE">
  <tr>
    <td width="100%">
      <pre><font size="2">HANDLE m_hCommPort = ::<font color="#0000FF">CreateFile</font>(	szPortName,
					GENERIC_READ|GENERIC_WRITE,//access ( read and write)
					0,	//(share) 0:cannot share the COM port						
					0,	//security  (None)				
					OPEN_EXISTING,// creation : open_existing
					FILE_FLAG_OVERLAPPED,// we want overlapped operation
					0// no templates file for COM port...
					);</font></pre>
    </td>
  </tr>
</table>
<p><font size="2" face="Verdana">The third fifth and seventh parameters have to be what they
are in the above example by law. We want to open the file ( the COM port ) in an
overlapped fashion - that's why the sixth param is FILE_FLAG_OVERLAPPED. We will
get into the details of overlapped IO a bit later. As you must have guessed from
the name , CreateFile() API can be used to create a file (disk based) and also
it can be used to open an existing file.&nbsp;<br>
To Windows a serial port or a disk based file both are IO devices . So, in order
to open an existing file ( serial port ) all we need to know the name of the
device ( COM1) and pass the creation flags as OPEN_EXISTING.<br>
If a COM port is opened successfully, the API returns handle to the com port
just like a handle to a file. However, if the system could not open the COM
port, it would return INVALID_HANDLE_VALUE . And you can get the reason by
calling GetLastError(). One of the common errors while opening a COM port is
that the COM port is already opened by some other application and in that case
you would get ERROR_ACCESS_DENIED (5). Similarly if you by mistake opened a COM
port that doesnot exist , you would get ERROR_FILE_NOT_FOUND&nbsp; as the last
error.<br>
<u>Note: Remember not to do make any function calls (like ASSERT) before calling
GetLastError() or you would get 0</u>.<u><br>
</u>Once you have opened the com port all you need to do now is to start using
it.<br>
<br>
<b>Reading and Writing<br>
</b>Now, once you have a com port open, you may want to send&nbsp; some data to
the connected device. For example, lets say you want to send &quot;Hello&quot;
to the device(e.g., another PC). When you want to send the data across the
serial port, you need to write to the serial port just like you would write to a
file. You would use following API:<br>
</font></p>
<table border="0" cellspacing="1" width="100%">
  <tr>
    <td width="100%" bgcolor="#C0C0C0"><font size="2" face="Verdana">iRet = WriteFile (m_hCommPort,data,dwSize,&amp;dwBytesWritten  ,&amp;ov);&nbsp;&nbsp;&nbsp;&nbsp;</font></td>
  </tr>
</table>
<p><font size="2" face="Verdana">where data contains &quot;Hello&quot; .&nbsp;<br>
Lets say in response to your &quot;Hello&quot; , the device sends you
&quot;Hi&quot; . So you need to read the data. Again ,you would&nbsp; use
following API:</font></p>
<table border="0" cellspacing="1" width="100%">
  <tr>
    <td width="100%" bgcolor="#C0C0C0"><font size="2" face="Verdana">abRet = ::ReadFile(m_hCommPort,szTmp
      ,sizeof(szTmp ),&amp;dwBytesRead,&amp;ovRead) ;</font></td>
  </tr>
</table>
<p><font size="2" face="Verdana"><i>For now do not try to understand everything.We will get to
all this later.<br>
</i>All this sounds very simple. Right? <br>
Now lets start digging into issues. </font></p>
<p><font size="2" face="Verdana"><b>Issues with serial communication</b><br>
Just now I said, in response to your &quot;Hello&quot;, the device may send you
&quot;Hi&quot; back and you would like to read that. But the problem here is
that you don't know when the device is going to respond? Or will it ever
respond? When should you start to read from the port. One option is that as soon
as you made call to WriteFile, you make call to ReadFile . If no data is there
you need to make read again later on. This leads to what is called polling. You
keep polling the port for data. This model does not really&nbsp; seem to be a
good one. It would be nice if somehow you were notified by the system when data
has arrived and only then would you make call to ReadFile. This is event driven
approach and fits well into Windows programming. And good news is that such a
model is possible . <br>
<br>
<br>
<br>
Another issue with the serial communication is that since it always occurs
between two devices, the two devices need to agree on how they talk to each
other. Each side needs to follow certain protocols to conduct business. Since
its the serial port that actually carries out the communication, we need to
configure the serial port. There is an API available for exact same purpose.
Following is the API:</font></p>
<table border="0" cellspacing="1" width="100%" bgcolor="#C0C0C0">
  <tr>
    <td width="100%"><font size="2" face="Verdana">SetCommState ( HANDLE hFile, LPDCB lpDCB)</font></td>
  </tr>
</table>
<p><font size="2" face="Verdana">The first parameter is the handle to COM port and the second
paramter is what is called device control block (DCB) . The DCB is a struct
defined in winbase.h and has 28 data members. For example, we need to specify
baud rate at which the COM port operates, you need to set the <b>BaudRate </b>member
of the struct . Baud rate is usual 9600 (bps) . But the two devices have to use
the same baud rate to conduct business. Similarly if you want to use parity you
need to set <b>Parity</b> member of the struct. Again the two devices have to
use same parity. Some of the data members are reserved and have to be 0. I have
found it easier to get the current DCB struct and then set those members which
we are interested in changing. Following code gets the current dcb and sets some
of the fields:<br>
<br>
</font></p>
<table border="0" cellspacing="1" width="100%" bgcolor="#EEE8EE">
  <tr>
    <td width="100%">
      <pre><font size="2" face="Verdana">DCB dcb = {0};
dcb.DCBlength = sizeof(DCB);

if (!::<font color="#0000FF">GetCommState </font>(m_hCommPort,&amp;dcb))
{
	TRACE ( &quot;CSerialCommHelper : Failed to Get Comm State Reason: %d&quot;,GetLastError());
	return E_FAIL;
}

dcb.BaudRate	= dwBaudRate;
dcb.ByteSize	= byByteSize;
dcb.Parity		= byParity;
if ( byStopBits == 1 )
	dcb.StopBits	= ONESTOPBIT;
else if (byStopBits == 2 ) 
	dcb.StopBits	= TWOSTOPBITS;
else 
	dcb.StopBits	= ONE5STOPBITS;


if (!::<font color="#0000FF">SetCommState</font> (m_hCommPort,&amp;dcb))
{
	ASSERT(0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品制服美女丁香| 欧美精品久久99久久在免费线 | 欧美激情一区二区三区不卡| 亚洲综合丁香婷婷六月香| 久久国产乱子精品免费女| 91美女在线看| 国产精品久久午夜夜伦鲁鲁| 久久精品国产亚洲5555| 欧美丝袜丝交足nylons| 成人欧美一区二区三区1314 | 夜夜嗨av一区二区三区网页| 精品影视av免费| 欧美美女喷水视频| 亚洲精品成a人| 成人午夜大片免费观看| 精品久久五月天| 免费在线观看视频一区| 欧美日本一区二区三区四区| 国产精品成人免费| 丰满白嫩尤物一区二区| 久久久精品tv| 久久99久久久久久久久久久| 欧美一区二区三区啪啪| 亚洲成人福利片| 精品视频在线看| 一区二区三区在线免费| 一本大道综合伊人精品热热| 国产精品私人自拍| 成人动漫一区二区三区| 国产精品久久久久一区二区三区共 | 欧美va日韩va| 精品一区二区三区在线播放视频| 欧美www视频| 国产一区 二区| 久久久久国产精品麻豆ai换脸| 久久99这里只有精品| 欧美精品一区二区在线观看| 激情图片小说一区| 国产日韩欧美精品电影三级在线| 国产精品88av| 国产精品国产自产拍高清av| 一本色道久久综合狠狠躁的推荐| 一区二区三区**美女毛片| 欧美日韩极品在线观看一区| 午夜a成v人精品| 日韩一区二区不卡| 国产精品一区三区| 亚洲同性同志一二三专区| 在线亚洲高清视频| 秋霞电影一区二区| 精品久久国产字幕高潮| 成人一区二区三区中文字幕| 亚洲精品成人天堂一二三| 欧美夫妻性生活| 国产精品一区在线观看乱码 | 91视频国产观看| 亚洲一区免费视频| 精品国产乱码久久久久久浪潮 | 国内欧美视频一区二区| 国产人成一区二区三区影院| 波多野结衣一区二区三区 | 一区二区三区在线观看视频| 欧美剧情电影在线观看完整版免费励志电影| 午夜精品久久久久久久99水蜜桃| 精品久久久三级丝袜| 不卡的看片网站| 免费看黄色91| 亚洲裸体xxx| 欧美videos中文字幕| 97久久超碰国产精品| 日精品一区二区三区| 国产精品免费av| 日韩欧美一二三四区| 91丨国产丨九色丨pron| 捆绑调教美女网站视频一区| 中文字幕一区av| 精品国产露脸精彩对白| 在线国产电影不卡| 国产成人一区在线| 肉丝袜脚交视频一区二区| 中文乱码免费一区二区| 欧美成人一级视频| 日本乱码高清不卡字幕| 国产精品自拍毛片| 日本不卡视频在线观看| 亚洲欧美国产高清| 久久精子c满五个校花| 欧美日韩高清不卡| 色欧美片视频在线观看| 国产福利精品一区| 精品在线播放午夜| 免费成人美女在线观看.| 亚洲精品视频在线观看网站| 国产嫩草影院久久久久| 久久亚洲欧美国产精品乐播| 在线播放日韩导航| 在线欧美小视频| av成人老司机| 成人午夜私人影院| 久久疯狂做爰流白浆xx| 亚洲成a人在线观看| 亚洲激情网站免费观看| 亚洲欧洲美洲综合色网| 国产日韩欧美精品综合| 国产性色一区二区| 精品粉嫩aⅴ一区二区三区四区| 欧美精品久久天天躁| 欧美顶级少妇做爰| 欧美日韩综合不卡| 欧美日韩一区二区三区视频| 色哟哟一区二区| 91在线你懂得| 色狠狠色噜噜噜综合网| 色偷偷成人一区二区三区91| 成人av电影观看| av在线不卡观看免费观看| 成人av手机在线观看| 成人污污视频在线观看| www.66久久| 欧美视频自拍偷拍| 91精品久久久久久蜜臀| 日韩精品一区在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产91洋老外米糕| 久久蜜桃一区二区| 国产精品理论片在线观看| 亚洲三级在线免费观看| 亚洲综合色自拍一区| 亚洲va在线va天堂| 美女网站一区二区| 国产成人精品亚洲日本在线桃色 | 秋霞影院一区二区| 久久成人18免费观看| 国产成人免费在线观看| 91在线免费看| 3d动漫精品啪啪1区2区免费| 精品对白一区国产伦| 中文字幕在线不卡国产视频| 亚洲激情av在线| 蜜臀99久久精品久久久久久软件| 久久超级碰视频| 99精品欧美一区二区三区综合在线| 91色九色蝌蚪| 日韩你懂的在线观看| 国产精品麻豆久久久| 亚洲一区二区影院| 国产大陆精品国产| 欧洲av一区二区嗯嗯嗯啊| 精品久久久影院| 一区二区三区精密机械公司| 久久精品国产第一区二区三区| 成人午夜免费av| 欧美一区二区三区精品| 国产精品乱人伦| 奇米综合一区二区三区精品视频| 国产99久久久国产精品潘金网站| 在线免费不卡视频| 久久久一区二区三区| 亚洲bt欧美bt精品| 福利91精品一区二区三区| 制服丝袜中文字幕一区| 中文字幕永久在线不卡| 美女视频网站黄色亚洲| av电影天堂一区二区在线| 日韩美女视频一区二区在线观看| 亚洲欧洲制服丝袜| 国产 日韩 欧美大片| 制服丝袜亚洲色图| 亚洲摸摸操操av| 国产精品自拍一区| 日韩欧美一区中文| 夜夜精品浪潮av一区二区三区| 国产剧情一区二区| 日韩免费观看高清完整版| 亚洲一二三区不卡| 99精品桃花视频在线观看| 久久久亚洲精品一区二区三区| 天堂在线一区二区| 欧美在线小视频| 亚洲女爱视频在线| 成人一区二区视频| 国产拍揄自揄精品视频麻豆| 美女性感视频久久| 日韩一级高清毛片| 天堂va蜜桃一区二区三区| 91黄色免费网站| 亚洲精品乱码久久久久久| 成人毛片在线观看| 欧美韩国日本不卡| 成人毛片老司机大片| 日本一区二区免费在线观看视频 | 91精品一区二区三区在线观看| 亚洲精品伦理在线| 欧美视频精品在线| 亚洲一区二区三区国产| 欧美唯美清纯偷拍| 亚洲国产精品精华液网站| 欧美日韩在线观看一区二区| 亚洲一区欧美一区| 在线观看91av|