亚洲欧美第一页_禁久久精品乱码_粉嫩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精品久久只有精品| 亚洲欧美电影院| 亚洲视频免费观看| 亚洲va欧美va国产va天堂影院| 国产清纯白嫩初高生在线观看91 | 午夜国产不卡在线观看视频| 色综合天天综合色综合av | 欧美日韩国产小视频在线观看| 成人黄色a**站在线观看| 国产成人一区在线| 国产凹凸在线观看一区二区| 久久国产剧场电影| 国产美女精品一区二区三区| 国产成人在线观看免费网站| 本田岬高潮一区二区三区| av成人免费在线观看| 99精品视频免费在线观看| 一本色道久久综合狠狠躁的推荐| av高清久久久| 555夜色666亚洲国产免| 精品久久五月天| 国产精品家庭影院| 亚洲综合免费观看高清完整版在线| 亚洲国产aⅴ天堂久久| 欧美aaaaaa午夜精品| 国产一区二区福利视频| 91免费视频网址| 日韩一级二级三级精品视频| 国产精品久久久久天堂| 一片黄亚洲嫩模| 久久9热精品视频| 99这里都是精品| 日韩视频中午一区| 综合色天天鬼久久鬼色| 人人超碰91尤物精品国产| 国产一区二区影院| 欧美日韩一区精品| 国产午夜精品一区二区三区视频 | 中文字幕日韩一区二区| 天天影视涩香欲综合网| 成人综合婷婷国产精品久久蜜臀| 欧美三级欧美一级| 国产日韩欧美一区二区三区综合| 亚洲成人激情综合网| 成人99免费视频| 日韩欧美国产一区在线观看| 亚洲天堂精品在线观看| 国产麻豆精品在线观看| 在线成人av影院| 亚洲女人的天堂| 高清在线成人网| 欧美成人欧美edvon| 一级中文字幕一区二区| 丁香亚洲综合激情啪啪综合| 日韩欧美激情在线| 亚洲国产wwwccc36天堂| 91亚洲国产成人精品一区二三| xf在线a精品一区二区视频网站| 亚洲午夜视频在线| 91豆麻精品91久久久久久| 国产精品久久久久婷婷二区次| 激情文学综合网| 欧美一二三四区在线| 天天av天天翘天天综合网色鬼国产| 91一区二区在线观看| 欧美激情综合网| 国产成人在线色| 欧美精品一区二区久久久| 日本成人在线不卡视频| 欧美欧美欧美欧美| 亚洲成人一二三| 67194成人在线观看| 三级一区在线视频先锋| 在线成人av网站| 午夜私人影院久久久久| 久久久久久99久久久精品网站| 午夜免费久久看| 91精品国产91久久综合桃花| 天天色图综合网| 日韩一区二区电影在线| 美国三级日本三级久久99| 4438x亚洲最大成人网| 首页欧美精品中文字幕| 欧美一区二区三区在线观看| 视频一区欧美日韩| 欧美成人综合网站| 国产一区二区三区黄视频| 久久久99精品久久| 粉嫩13p一区二区三区| 国产精品二三区| 色老汉一区二区三区| 午夜欧美大尺度福利影院在线看| 在线综合视频播放| 国产一区中文字幕| 国产精品久久久久久一区二区三区| 成人性生交大片免费看在线播放| 亚洲日本一区二区| 欧美理论在线播放| 国产一区二区成人久久免费影院| 中文字幕在线不卡| 欧美久久久影院| 国产精品亚洲综合一区在线观看| 国产精品成人在线观看| 欧美精品日日鲁夜夜添| 国产尤物一区二区| 亚洲一二三区在线观看| 精品美女一区二区三区| 97久久超碰精品国产| 日本不卡高清视频| 欧美—级在线免费片| 欧美日韩久久久一区| 国产精品自产自拍| 亚洲永久免费视频| 久久久久久9999| 欧美精品九九99久久| 国产91丝袜在线播放| 香蕉久久一区二区不卡无毒影院| 亚洲精品在线观| 欧美午夜影院一区| 国产福利视频一区二区三区| 亚洲综合在线视频| 国产无人区一区二区三区| 欧美日韩午夜影院| 97精品久久久午夜一区二区三区| 免费人成在线不卡| 亚洲一区二区三区影院| 国产日韩亚洲欧美综合| 69p69国产精品| 欧美性受xxxx| 一本到不卡精品视频在线观看| 久久成人综合网| 日韩中文字幕一区二区三区| 国产精品久久久久久妇女6080 | 日韩一区二区在线观看视频| 91美女在线视频| 大白屁股一区二区视频| 经典三级视频一区| 日本成人超碰在线观看| 亚洲成人资源在线| 亚洲影视在线播放| 亚洲男女一区二区三区| 国产精品久线在线观看| 国产日韩欧美a| 久久精品夜夜夜夜久久| 欧美大肚乱孕交hd孕妇| 91精品国产综合久久久久久久久久 | 麻豆精品久久精品色综合| 亚洲国产cao| 亚洲香肠在线观看| 午夜精品免费在线| 丝袜美腿一区二区三区| 日韩激情在线观看| 蜜臀久久99精品久久久画质超高清| 日本sm残虐另类| 日韩精品电影在线| 精油按摩中文字幕久久| 激情另类小说区图片区视频区| 久久国内精品自在自线400部| 麻豆国产欧美日韩综合精品二区| 天天综合网 天天综合色| 日产精品久久久久久久性色| 日本成人中文字幕在线视频| 免费高清视频精品| 国产精品一区2区| 大胆亚洲人体视频| 色综合中文综合网| 18欧美亚洲精品| 亚洲图片欧美色图| 免费高清在线一区| 国内精品伊人久久久久av影院 | 亚洲午夜精品在线| 日韩精品电影在线| 国产精品亚洲成人| 91影院在线免费观看| 7777精品伊人久久久大香线蕉经典版下载 | 免播放器亚洲一区| 国产麻豆视频一区| 色一情一乱一乱一91av| 欧美精品精品一区| 亚洲国产精品ⅴa在线观看| 亚洲黄色尤物视频| 日本欧美在线看| 成人免费高清视频| 欧美一区二区三区影视| 欧美国产精品久久| 午夜私人影院久久久久| 国产成人丝袜美腿| 欧美日韩国产天堂| 国产精品三级电影| 琪琪一区二区三区| 色香蕉久久蜜桃| 久久精品视频在线看| 亚洲国产一二三| av在线不卡免费看| 欧美成人video| 亚洲一卡二卡三卡四卡五卡| 国产在线精品一区二区三区不卡| 色婷婷综合在线|