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

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

?? serialcomm.asp

?? 這是一個關于手機短信的源代碼,是用Java語言編寫的代碼.
?? 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一区二区三区免费野_久草精品视频
亚洲一区二区三区三| 中文字幕日本乱码精品影院| 国产精品久久久久久户外露出| 日本欧美一区二区在线观看| 五月天国产精品| 日韩一区二区免费电影| 国产精品一线二线三线| 亚洲综合色婷婷| 久久久噜噜噜久噜久久综合| av在线播放不卡| 肉肉av福利一精品导航| 国产视频一区二区在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 久久精品人人做人人综合| 国产一区二区三区在线观看免费视频| 国产精品无圣光一区二区| 欧美日韩和欧美的一区二区| 日韩欧美一区二区三区在线| 蜜芽一区二区三区| 青青草精品视频| 国产一区二区三区视频在线播放| 美女诱惑一区二区| 国产成人免费xxxxxxxx| 99久久婷婷国产| 精品免费国产二区三区| 久久精品人人爽人人爽| 国产精品久久久久一区| 国产精品欧美精品| 国产精品久久久久久久裸模| 亚洲国产精品av| 国产精品久久久久三级| 亚洲色图视频网| 日韩电影在线一区二区| 麻豆国产91在线播放| 东方aⅴ免费观看久久av| 99精品国产一区二区三区不卡| 91久久免费观看| 日韩一区二区三区四区| 中文字幕不卡一区| 亚洲一区二区欧美日韩| 免费xxxx性欧美18vr| 91亚洲精品久久久蜜桃网站 | 激情综合网av| 高清成人在线观看| 91精品国产全国免费观看| 久久亚洲精品国产精品紫薇| 亚洲人成电影网站色mp4| 麻豆国产精品一区二区三区| av在线不卡观看免费观看| 91麻豆精品国产91久久久久| 综合欧美亚洲日本| 激情综合五月天| 欧美一区二区视频在线观看2020| 欧美激情一区二区三区在线| 日日欢夜夜爽一区| 色综合色综合色综合色综合色综合 | 91精品国产综合久久香蕉麻豆 | 26uuu欧美日本| 日韩高清国产一区在线| 欧美在线999| 亚洲黄色av一区| 91色在线porny| 国产精品久久久久久久蜜臀| 国产成人99久久亚洲综合精品| 26uuu亚洲| 国产91在线看| 亚洲欧美一区二区在线观看| av毛片久久久久**hd| 国产精品免费丝袜| 色综合天天综合狠狠| 亚洲一区二区三区小说| 欧美日韩午夜在线| 五月天中文字幕一区二区| 日韩午夜激情av| 国产一区二区视频在线播放| 久久色中文字幕| 91免费看片在线观看| 亚洲一区二区三区中文字幕| 日韩欧美在线综合网| 国产高清在线观看免费不卡| 国产精品国产a| 91精品国产欧美日韩| 国产成人aaa| 午夜视频一区二区三区| 欧美精品一区二区三区蜜臀| 99久久精品国产精品久久| 天天亚洲美女在线视频| 久久久国际精品| 在线播放91灌醉迷j高跟美女| 韩国av一区二区三区四区| 亚洲欧美成人一区二区三区| 7777精品伊人久久久大香线蕉完整版| 国产精一区二区三区| 天堂影院一区二区| 亚洲综合丝袜美腿| 国产人妖乱国产精品人妖| 日韩久久免费av| 欧美日韩mp4| 欧美亚洲综合在线| 色综合久久久久网| 成人小视频在线观看| 激情都市一区二区| 蜜桃一区二区三区在线观看| 午夜国产不卡在线观看视频| 亚洲色图制服丝袜| 中文字幕一区二区三区四区 | 国产在线精品一区二区| 开心九九激情九九欧美日韩精美视频电影 | av不卡在线播放| 91色在线porny| 欧美中文字幕一区| 欧美色爱综合网| 欧美性猛片aaaaaaa做受| 欧美日韩亚洲高清一区二区| 欧美福利一区二区| 日韩女优av电影| 久久九九久精品国产免费直播| 国产欧美综合在线观看第十页| 久久久久99精品一区| 亚洲色图一区二区三区| 亚洲国产一区二区a毛片| 蜜桃视频第一区免费观看| 国产在线视频精品一区| 99r国产精品| 91精品国产综合久久香蕉的特点 | 国产精品视频yy9299一区| 亚洲激情在线播放| 国产自产视频一区二区三区 | 欧美唯美清纯偷拍| www国产精品av| 亚洲午夜久久久久| 成人夜色视频网站在线观看| 欧美一区二区免费视频| 国产精品美女久久久久高潮| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人教育av在线| 精品国产青草久久久久福利| 国产欧美一区二区精品性色| 日韩片之四级片| 精品噜噜噜噜久久久久久久久试看 | 日韩在线一区二区| 日韩欧美在线123| 不卡的av中国片| 亚洲18女电影在线观看| 91麻豆精品国产| 国产精品一区在线观看乱码| 精品国产成人在线影院 | 国产成人综合精品三级| 国产欧美一区二区三区鸳鸯浴 | 国内精品免费**视频| 久久久99精品久久| 不卡在线观看av| 亚洲一区二区精品3399| 欧美二区乱c少妇| 狠狠色综合播放一区二区| 国产亚洲欧美日韩俺去了| 成人av中文字幕| 亚洲久草在线视频| 欧美女孩性生活视频| 国内成+人亚洲+欧美+综合在线| 中文字幕精品一区二区三区精品| 91免费在线视频观看| 日本女人一区二区三区| 日韩亚洲欧美中文三级| 国产成人免费av在线| 午夜精品久久久久久久久久 | 国产无人区一区二区三区| 色婷婷av一区二区三区大白胸| 老司机精品视频在线| 一区二区三区中文字幕电影 | 午夜电影网亚洲视频| 国产精品久久久久精k8| 欧美成人在线直播| 在线观看日韩国产| 色呦呦一区二区三区| 国产精品一区在线观看你懂的| 五月婷婷激情综合| 亚洲激情av在线| 18欧美亚洲精品| 国产精品福利电影一区二区三区四区| 日韩片之四级片| 精品国产麻豆免费人成网站| 宅男噜噜噜66一区二区66| 在线精品视频免费播放| 日本黄色一区二区| 色婷婷狠狠综合| 日本高清不卡视频| 97国产精品videossex| av在线不卡观看免费观看| 在线亚洲精品福利网址导航| 91精品麻豆日日躁夜夜躁| 日韩免费电影一区| 国产欧美精品国产国产专区| 一区二区三区在线观看欧美| 日韩精品电影一区亚洲| 99这里只有精品| 日韩欧美中文字幕制服| 亚洲一区二区在线观看视频| 狠狠色丁香久久婷婷综合丁香| 91成人在线免费观看|