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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? serialcomm.asp

?? 在工業(yè)控制中
?? ASP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
<%@ 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);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久天堂av| 亚洲一二三四在线| 激情深爱一区二区| 精品嫩草影院久久| 国内精品不卡在线| 国产区在线观看成人精品| 国内外精品视频| 国产亚洲欧美一区在线观看| 成人av电影在线观看| 国产精品理伦片| 欧美亚洲自拍偷拍| 蜜桃久久av一区| 26uuu色噜噜精品一区| 成人国产一区二区三区精品| 一区二区三区四区亚洲| 在线综合亚洲欧美在线视频| 极品美女销魂一区二区三区 | 国产成a人亚洲精| 精品福利视频一区二区三区| 五月婷婷综合网| 日韩午夜在线观看| 成人综合婷婷国产精品久久免费| 久久精品夜色噜噜亚洲aⅴ| 国产91综合一区在线观看| 亚洲蜜臀av乱码久久精品| 7777精品伊人久久久大香线蕉最新版| 图片区日韩欧美亚洲| 久久亚洲影视婷婷| 91官网在线观看| 免费看精品久久片| 久久久www免费人成精品| 波多野结衣一区二区三区| 亚洲久草在线视频| 精品国产乱码久久久久久闺蜜| 成人av手机在线观看| 亚瑟在线精品视频| 欧美成人福利视频| 欧美亚洲精品一区| 成人黄页毛片网站| 青草av.久久免费一区| 亚洲欧美一区二区久久| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲伦理在线精品| 欧美性高清videossexo| 国产成人av一区二区| 亚洲国产另类av| 国产精品视频第一区| 欧美大肚乱孕交hd孕妇| 欧美日韩亚洲另类| 大尺度一区二区| 奇米影视在线99精品| 亚洲乱码一区二区三区在线观看| 日韩欧美在线影院| 欧美少妇xxx| 99久久久国产精品| 美女网站色91| 亚洲午夜电影在线| 亚洲色图视频免费播放| 欧美一区二区三级| 欧美精品久久天天躁| 日本高清不卡在线观看| 91麻豆成人久久精品二区三区| 国产成人精品1024| 国产久卡久卡久卡久卡视频精品| 美女任你摸久久 | 久久久夜色精品亚洲| 日韩午夜av电影| 久久国产剧场电影| 一本在线高清不卡dvd| 一区二区三区在线视频免费| 日韩女优制服丝袜电影| 成人av网站在线观看| 国产精品一区二区不卡| 久久不见久久见中文字幕免费| 亚洲午夜日本在线观看| 亚洲精品视频一区| 91精品国产一区二区三区蜜臀| 国产一区二区三区观看| 久久精品国产精品青草| 日韩av网站在线观看| 亚洲特级片在线| 亚洲欧美乱综合| 日韩理论电影院| 亚洲一区二区三区在线看| 亚洲图片自拍偷拍| 日韩中文字幕1| 久久99精品国产麻豆不卡| 国内精品不卡在线| 成人黄色在线看| 欧美亚洲另类激情小说| 欧美人与性动xxxx| 日韩视频免费观看高清完整版在线观看| 欧美在线高清视频| 在线不卡免费av| 久久这里只精品最新地址| 国产欧美一区二区三区在线看蜜臀| 日本一区二区三区高清不卡| 亚洲欧美影音先锋| 亚洲一区二区精品视频| 日韩电影在线免费看| 精品亚洲欧美一区| 北条麻妃国产九九精品视频| 在线看国产一区二区| 日韩一区二区在线免费观看| 欧美白人最猛性xxxxx69交| 欧美激情一区二区三区在线| 亚洲视频免费在线观看| 一区二区三区四区亚洲| 免费成人美女在线观看.| 国产一区二区精品久久99| av高清不卡在线| 色偷偷成人一区二区三区91| 欧美一级精品大片| 中文字幕在线一区免费| 日韩电影在线一区二区| va亚洲va日韩不卡在线观看| 欧美三级三级三级爽爽爽| 久久婷婷成人综合色| 亚洲国产综合91精品麻豆| 久久精品国产亚洲a| 白白色亚洲国产精品| 欧美视频在线一区| 欧美一区二区三区电影| 中文字幕亚洲区| 日韩高清一级片| 国产高清不卡一区二区| 欧美亚洲国产怡红院影院| 久久久久久亚洲综合影院红桃| 亚洲一区二区黄色| 成人污污视频在线观看| 日韩一级黄色大片| 一区二区欧美在线观看| 成人午夜私人影院| 欧美成人性战久久| 亚洲一级不卡视频| 91尤物视频在线观看| 久久久影院官网| 日日夜夜免费精品视频| 91在线视频18| 中文字幕不卡一区| 久久精品国产99国产| 欧美日韩一区二区三区在线| 亚洲视频每日更新| 国产一区二区剧情av在线| 日韩一级二级三级精品视频| 亚洲va欧美va人人爽| 色激情天天射综合网| 1区2区3区国产精品| 粉嫩一区二区三区在线看| 精品99999| 久久国产精品99精品国产| 欧美老肥妇做.爰bbww视频| 一区二区三区在线免费观看 | 亚洲天堂精品视频| 国产福利91精品| 久久免费电影网| 国内精品国产成人| 久久这里只有精品6| 国产在线精品国自产拍免费| 日韩一本二本av| 老汉av免费一区二区三区| 欧美电影在线免费观看| 午夜a成v人精品| 制服丝袜成人动漫| 日韩精品三区四区| 欧美一级高清大全免费观看| 免费观看30秒视频久久| 欧美一级生活片| 裸体健美xxxx欧美裸体表演| 日韩午夜中文字幕| 国产在线不卡一卡二卡三卡四卡| 精品国产乱码久久久久久夜甘婷婷| 久久 天天综合| 久久蜜桃av一区精品变态类天堂 | 国产乱对白刺激视频不卡| 欧美成va人片在线观看| 国内精品写真在线观看| 国产亚洲成aⅴ人片在线观看 | 成人动漫一区二区在线| 中文字幕+乱码+中文字幕一区| 国产成人av影院| 亚洲欧美日韩国产综合| 在线欧美日韩精品| 五月天久久比比资源色| 欧美电影免费观看高清完整版| 国产剧情一区在线| 国产精品美女久久福利网站| 一本大道久久精品懂色aⅴ| 亚洲图片一区二区| 欧美电视剧在线观看完整版| 国产高清久久久久| 亚洲天堂网中文字| 欧美日韩高清一区二区三区| 麻豆精品久久久| 欧美国产综合色视频| 欧美性大战久久久| 免费xxxx性欧美18vr| 国产亚洲综合在线| 99国内精品久久| 天堂av在线一区|