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

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

?? cn_com.txt

?? 上位機(jī)軟件 for 自制AT89C51/52編程器
?? TXT
?? 第 1 頁 / 共 2 頁
字號(hào):
/*
Comm Base Library(WIN98/NT/2000) ver 1.1
Compile by: BC++ 5; C++ BUILDER 4, 5, 6, X; VC++ 5, 6; VC.NET; GCC;
copyright(c) 2004.5 - 2005.8 llbird wushaojian@21cn.com
*/ 
#ifndef _CN_COMM_H_
#define _CN_COMM_H_
#pragma warning(disable: 4530)
#pragma warning(disable: 4786)
#pragma warning(disable: 4800)
#include <assert.h>
#include <stdio.h>
#include <windows.h>
//送到窗口的消息 WPARAM 端口號(hào)
#define ON_COM_RECEIVE WM_USER + 618
#define ON_COM_CTS WM_USER + 619 //LPARAM 1 valid
#define ON_COM_DSR WM_USER + 621 //LPARAM 1 valid
#define ON_COM_RING WM_USER + 623
#define ON_COM_RLSD WM_USER + 624
#define ON_COM_BREAK WM_USER + 625
#define ON_COM_TXEMPTY WM_USER + 626
#define ON_COM_ERROR WM_USER + 627 //LPARAM save Error ID
#define DEFAULT_COM_MASK_EVENT EV_RXCHAR | EV_ERR | EV_CTS | EV_DSR | EV_BREAK | EV_TXEMPTY | EV_RING | EV_RLSD
class cnComm
{
public:
	//------------------------------Construction-----------------------------------
	//第1個(gè)參數(shù)為是否在打開串口時(shí)啟動(dòng)監(jiān)視線程, 第2個(gè)參數(shù)為IO方式 阻塞方式(0)/ 異步重疊方式(默認(rèn))
	cnComm(bool fAutoBeginThread = true, DWORD dwIOMode =
		FILE_FLAG_OVERLAPPED): _dwIOMode(dwIOMode), _fAutoBeginThread(fAutoBeginThread)
{
	Init();
}
virtual ~cnComm()
{
	Close();
	UnInit();
}
//----------------------------------Attributes----------------------------------
//判斷串口是否打開
inline bool IsOpen()
{
	return _hCommHandle != INVALID_HANDLE_VALUE;
}
//判斷串口是否打開
operator bool()
{
	return _hCommHandle != INVALID_HANDLE_VALUE;
}
//獲得串口句炳
inline HANDLE GetHandle()
{
	return _hCommHandle;
}
//獲得串口句炳
operator HANDLE()
{
	return _hCommHandle;
}
//獲得串口參數(shù) DCB
DCB *GetState()
{
	return IsOpen() && ::GetCommState(_hCommHandle, &_DCB) == TRUE ?
		&_DCB: NULL;
}
//設(shè)置串口參數(shù) DCB
bool SetState(DCB *pdcb = NULL)
{
	return IsOpen() ? ::SetCommState(_hCommHandle, pdcb == NULL ? &_DCB:pdcb) == TRUE: false;
}
//設(shè)置串口參數(shù):波特率,停止位,等 支持設(shè)置字符串 "9600, 8, n, 1"
bool SetState(char *szSetStr)
{
	if (IsOpen())
	{
		if (::GetCommState(_hCommHandle, &_DCB) != TRUE)
			return false;
		if (::BuildCommDCB(szSetStr, &_DCB) != TRUE)
			return false;
		return ::SetCommState(_hCommHandle, &_DCB) == TRUE;
	}
	return false;
}
//設(shè)置串口參數(shù):波特率,停止位,等
bool SetState(DWORD dwBaudRate, DWORD dwByteSize = 8, DWORD dwParity =
			  NOPARITY, DWORD dwStopBits = ONESTOPBIT)
{
	if (IsOpen())
	{
		if (::GetCommState(_hCommHandle, &_DCB) != TRUE)
			return false;
		_DCB.BaudRate = dwBaudRate;
		_DCB.ByteSize = (unsigned char)dwByteSize;
		_DCB.Parity = (unsigned char)dwParity;
		_DCB.StopBits = (unsigned char)dwStopBits;
		return ::SetCommState(_hCommHandle, &_DCB) == TRUE;
	}
	return false;
}
//獲得超時(shí)結(jié)構(gòu)
LPCOMMTIMEOUTS GetTimeouts(void)
{
	return IsOpen() && ::GetCommTimeouts(_hCommHandle, &_CO) == TRUE ?
		&_CO: NULL;
 }
 //設(shè)置超時(shí)
 bool SetTimeouts(LPCOMMTIMEOUTS lpCO)
 {
  return IsOpen() ? ::SetCommTimeouts(_hCommHandle, lpCO) == TRUE:false;
 }
 //設(shè)置串口的I/O緩沖區(qū)大小
 bool SetBufferSize(DWORD dwInputSize, DWORD dwOutputSize)
 {
  return IsOpen() ? ::SetupComm(_hCommHandle, dwInputSize, dwOutputSize)== TRUE: false;
 }
 //關(guān)聯(lián)消息的窗口句柄
 inline void SetWnd(HWND hWnd)
 {
  assert(::IsWindow(hWnd));
  _hNotifyWnd = hWnd;
 }
 //設(shè)定發(fā)送通知, 接受字符最小值
 inline void SetNotifyNum(DWORD dwNum)
 {
  _dwNotifyNum = dwNum;
 }
 //線程是否運(yùn)行
 inline bool IsThreadRunning()
 {
  return _hThreadHandle != NULL;
 }
 //獲得線程句柄
 inline HANDLE GetThread()
 {
  return _hThreadHandle;
 }
 //設(shè)置要監(jiān)視的事件, 打開前設(shè)置有效
 void SetMaskEvent(DWORD dwEvent = DEFAULT_COM_MASK_EVENT)
 {
  _dwMaskEvent = dwEvent;
 }
 //獲得讀緩沖區(qū)的字符數(shù)
 int GetInputSize()
 {
  COMSTAT Stat;
  DWORD dwError;
  return ::ClearCommError(_hCommHandle, &dwError, &Stat) == TRUE ? Stat.cbInQue : (DWORD) - 1L;
 }
 //----------------------------------Operations----------------------------------
 //打開串口 缺省 9600, 8, n, 1
 bool Open(DWORD dwPort)
 {
  return Open(dwPort, 9600);
 }
 //打開串口 缺省 baud_rate, 8, n, 1
 bool Open(DWORD dwPort, DWORD dwBaudRate)
 {
  if (dwPort < 1 || dwPort > 1024)
   return false;
  BindCommPort(dwPort);
  if (!OpenCommPort())
   return false;
  if (!SetupPort())
   return false;
  return SetState(dwBaudRate);
 }
 //打開串口, 使用類似"9600, 8, n, 1"的設(shè)置字符串設(shè)置串口
 bool Open(DWORD dwPort, char *szSetStr)
 {
  if (dwPort < 1 || dwPort > 1024)
   return false;
  BindCommPort(dwPort);
  if (!OpenCommPort())
   return false;
  if (!SetupPort())
   return false;
  return SetState(szSetStr);
 }
 //讀取串口 dwBufferLength個(gè)字符到 Buffer 返回實(shí)際讀到的字符數(shù) 可讀任意數(shù)據(jù)
 DWORD Read(LPVOID Buffer, DWORD dwBufferLength, DWORD dwWaitTime = 10)
 {
  if (!IsOpen())
   return 0;
  COMSTAT Stat;
  DWORD dwError;
  if (::ClearCommError(_hCommHandle, &dwError, &Stat) && dwError > 0)
  {
   ::PurgeComm(_hCommHandle,PURGE_RXABORT | PURGE_RXCLEAR);
   return 0;
  } 
  if (!Stat.cbInQue)
   // 緩沖區(qū)無數(shù)據(jù)
   return 0;
  unsigned long uReadLength = 0;
  dwBufferLength = dwBufferLength > Stat.cbInQue ? Stat.cbInQue :dwBufferLength;
  if (!::ReadFile(_hCommHandle, Buffer, dwBufferLength, &uReadLength,&_ReadOverlapped))
  {
   if (::GetLastError() == ERROR_IO_PENDING)
   {
    WaitForSingleObject(_ReadOverlapped.hEvent, dwWaitTime);
    // 結(jié)束異步I/O
    if (!::GetOverlappedResult(_hCommHandle, &_ReadOverlapped,&uReadLength, false))
    {
     if (::GetLastError() != ERROR_IO_INCOMPLETE)
      uReadLength = 0;
    }
   }
   else
    uReadLength = 0;
  }
  return uReadLength;
 }
 //讀取串口 dwBufferLength - 1 個(gè)字符到 szBuffer 返回ANSI C 模式字符串指針 適合一般字符通訊
 char *ReadString(char *szBuffer, DWORD dwBufferLength, DWORD dwWaitTime =20)
 {
  unsigned long uReadLength = Read(szBuffer, dwBufferLength - 1,dwWaitTime);
  szBuffer[uReadLength] = '\0';
  return szBuffer;
 }
 //寫串口 可寫任意數(shù)據(jù) "abcd" or "\x0\x1\x2"
 DWORD Write(LPVOID Buffer, DWORD dwBufferLength)
 {
  if (!IsOpen())
   return 0;
  DWORD dwError;
  if (::ClearCommError(_hCommHandle, &dwError, NULL) && dwError > 0)
   ::PurgeComm(_hCommHandle, PURGE_TXABORT | PURGE_TXCLEAR);
  unsigned long uWriteLength = 0;
  if (!::WriteFile(_hCommHandle, Buffer, dwBufferLength, &uWriteLength,&_WriteOverlapped))
   if (::GetLastError() != ERROR_IO_PENDING)
    uWriteLength = 0;
   return uWriteLength;
  }
  //寫串口 寫ANSI C 模式字符串指針 
  DWORD Write(const char *szBuffer)
  {
   assert(szBuffer);
   return Write((void*)szBuffer, strlen(szBuffer));
  }
  //讀串口 同步應(yīng)用
  DWORD ReadSync(LPVOID Buffer, DWORD dwBufferLength)
  {
   if (!IsOpen())
    return 0;
   DWORD dwError;
   if (::ClearCommError(_hCommHandle, &dwError, NULL) && dwError > 0)
   {
    ::PurgeComm(_hCommHandle,PURGE_RXABORT | PURGE_RXCLEAR);
    return 0;
   }
   DWORD uReadLength = 0;
   ::ReadFile(_hCommHandle, Buffer, dwBufferLength, &uReadLength, NULL);
   return uReadLength;
  }
  //寫串口 同步應(yīng)用
  DWORD WriteSync(LPVOID Buffer, DWORD dwBufferLength)
  {
   if (!IsOpen())
    return 0;
   DWORD dwError;
   if (::ClearCommError(_hCommHandle, &dwError, NULL) && dwError > 0)
    ::PurgeComm(_hCommHandle, PURGE_TXABORT | PURGE_TXCLEAR);
   unsigned long uWriteLength = 0;
   ::WriteFile(_hCommHandle, Buffer, dwBufferLength, &uWriteLength, NULL);
   return uWriteLength;
  }
  //寫串口 szBuffer 可以輸出格式字符串 包含緩沖區(qū)長(zhǎng)度
  DWORD Write(char *szBuffer, DWORD dwBufferLength, char *szFormat, ...)
  {
   if (!IsOpen())
    return 0;
   va_list va;
   va_start(va, szFormat);
   _vsnprintf(szBuffer, dwBufferLength, szFormat, va);
   va_end(va);
   return Write(szBuffer);
  }
  //寫串口 szBuffer 可以輸出格式字符串 不檢查緩沖區(qū)長(zhǎng)度 小心溢出
  DWORD Write(char *szBuffer, char *szFormat, ...)
  {
   if (!IsOpen())
    return 0;
   va_list va;
   va_start(va, szFormat);
   vsprintf(szBuffer, szFormat, va);
   va_end(va);
   return Write(szBuffer);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区免费在线观看| 成人精品鲁一区一区二区| 日本韩国一区二区三区| 国产精品无码永久免费888| 成人精品视频一区二区三区| 亚洲欧洲成人精品av97| 欧美在线视频日韩| 日韩vs国产vs欧美| 久久综合狠狠综合久久综合88 | 亚洲宅男天堂在线观看无病毒| 91国模大尺度私拍在线视频| 亚洲一区二区三区不卡国产欧美| 欧美高清视频www夜色资源网| 蜜臀av一区二区在线免费观看| 精品国产欧美一区二区| 国产成人精品网址| 樱桃视频在线观看一区| 欧美精品久久久久久久多人混战 | 日本不卡一区二区三区 | 丁香网亚洲国际| 亚洲另类在线一区| 日韩三级在线免费观看| 国产成人亚洲综合a∨婷婷| 亚洲女同ⅹxx女同tv| 7777精品伊人久久久大香线蕉 | 亚洲欧洲中文日韩久久av乱码| 欧美午夜在线一二页| 麻豆国产91在线播放| 国产精品的网站| 欧美电影免费观看高清完整版在 | 综合婷婷亚洲小说| 欧美一区二区视频在线观看| 成人国产一区二区三区精品| 日韩精品一二三| 国产精品另类一区| 日韩欧美的一区二区| 91一区二区三区在线观看| 蜜桃一区二区三区在线| 国产精品福利一区| 日韩欧美色电影| 色94色欧美sute亚洲13| 国产91清纯白嫩初高中在线观看 | 国产拍揄自揄精品视频麻豆| 欧美性色黄大片| 成人的网站免费观看| 日本免费新一区视频| 一区二区激情视频| 国产蜜臀97一区二区三区| 欧美福利电影网| 欧美体内she精高潮| 99久久久无码国产精品| 国产一区二区三区日韩| 日本美女视频一区二区| 亚洲一区二区在线免费看| 国产精品久久久久久久久免费桃花 | 国产一区二区电影| 日韩电影在线观看网站| 亚洲亚洲人成综合网络| 亚洲天堂2016| 中文字幕在线观看不卡| 久久你懂得1024| 欧美电视剧在线看免费| 欧美另类变人与禽xxxxx| 色综合天天做天天爱| 成人av在线播放网址| 国产精品18久久久久久久久久久久| 视频一区二区三区中文字幕| 伊人色综合久久天天人手人婷| 国产欧美日韩综合精品一区二区| 欧美一区二区三区电影| 欧美日韩国产综合视频在线观看| 色婷婷av一区| 色婷婷久久久亚洲一区二区三区| 国产成人福利片| 国产麻豆精品theporn| 精品无人码麻豆乱码1区2区 | 国产精品丝袜91| 中国av一区二区三区| 欧美国产日韩精品免费观看| 中文字幕av一区二区三区高| 中文字幕第一区第二区| 国产精品美女久久久久久久久| 国产欧美日韩视频在线观看| 国产人妖乱国产精品人妖| 国产亚洲综合在线| 欧美国产在线观看| 亚洲日本免费电影| 亚洲精品视频一区二区| 一区二区三区欧美日韩| 亚洲国产精品久久一线不卡| 偷拍亚洲欧洲综合| 蜜桃视频在线观看一区二区| 国产在线精品一区二区不卡了 | 午夜精品国产更新| 免费在线视频一区| 国产一区免费电影| 大尺度一区二区| 99久久99久久免费精品蜜臀| 色婷婷综合久色| 欧美日韩一区二区欧美激情| 日韩一区二区在线观看视频| 欧美tk—视频vk| 国产精品嫩草影院av蜜臀| 亚洲视频一区在线观看| 亚洲成人免费av| 国内国产精品久久| 99久久精品一区| 欧美日本韩国一区| 国产亚洲成aⅴ人片在线观看| 亚洲视频你懂的| 麻豆免费看一区二区三区| 成人一区在线观看| 欧美色涩在线第一页| 久久这里只有精品视频网| 亚洲激情av在线| 久久成人免费网站| 在线观看区一区二| 国产午夜精品一区二区| 亚洲精品免费在线播放| 久久精品国产网站| 91香蕉视频在线| 日韩欧美高清dvd碟片| 亚洲欧美视频在线观看视频| 极品少妇xxxx精品少妇| 一本到不卡免费一区二区| 精品国产精品一区二区夜夜嗨| 亚洲婷婷国产精品电影人久久| 日韩国产欧美视频| 色综合网站在线| 久久蜜桃一区二区| 日本欧美在线看| 欧美网站大全在线观看| 国产清纯白嫩初高生在线观看91 | 成人免费视频caoporn| 666欧美在线视频| 一区二区三区中文字幕精品精品 | 久久99国内精品| 欧美自拍偷拍午夜视频| 国产欧美一区二区精品秋霞影院| 视频一区在线视频| 色8久久精品久久久久久蜜| 久久亚洲精华国产精华液| 日韩黄色一级片| 欧美中文字幕一区二区三区亚洲| 国产欧美久久久精品影院| 蜜桃精品在线观看| 欧美狂野另类xxxxoooo| 伊人色综合久久天天人手人婷| 国产91精品入口| 久久久99精品免费观看不卡| 蜜臀久久久久久久| 欧美日韩不卡一区| 亚洲精品成a人| 色一情一伦一子一伦一区| 国产精品无遮挡| eeuss鲁片一区二区三区在线观看| 久久这里只精品最新地址| 九九久久精品视频| 精品裸体舞一区二区三区| 日韩中文字幕亚洲一区二区va在线| 97se亚洲国产综合自在线不卡| 国产午夜精品久久久久久免费视| 韩国v欧美v日本v亚洲v| 日韩欧美国产精品| 精品一区二区三区av| 日韩美一区二区三区| 国内一区二区视频| 久久久亚洲精品石原莉奈| 精品一区二区影视| 精品久久久三级丝袜| 韩国三级在线一区| 国产精品色在线观看| 成人av动漫在线| 亚洲精品免费在线| 欧美日韩第一区日日骚| 视频一区中文字幕国产| 欧美videossexotv100| 国产综合久久久久影院| 欧美国产1区2区| 91国模大尺度私拍在线视频| 亚洲国产乱码最新视频| 欧美一区二区三区在线看| 久久精品国产一区二区| 亚洲国产精品成人综合| 91丨porny丨蝌蚪视频| 亚洲成人av中文| wwww国产精品欧美| 91在线国内视频| 丝袜脚交一区二区| 久久综合久久99| 91亚洲精华国产精华精华液| 亚洲精品欧美综合四区| 欧美一级片在线观看| 国产剧情一区在线| 一区二区成人在线观看| 欧美电视剧免费观看| 成人av在线观| 日韩国产精品大片| 国产精品私人影院| 欧美无砖砖区免费|