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

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

?? rs232port.cpp

?? 用于開發Modbus工業級通信
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/////////////////////////////////////////////////////////////////////////////
//
// FILE: RS232Port.cpp : implementation file
//
// See _README.CPP
//
// Implementation of the CRS232Port class.
// Requires MFC headder <afxmt.h>
//
/////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "mod_RSsim.h"
#include "RS232Port.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


// ------------------------------ AsyncFriend ------------------------------
// Worker thread function, this is a friend of the CRS232Port class
//
UINT AsyncFriend(LPVOID pParam)
{
CHAR     debugStr2[MAX_DEBUG_STR_LEN];
CHAR     debugStr[MAX_DEBUG_STR_LEN];
CRS232Port* portPtr;

   portPtr = (CRS232Port*)pParam;
   try 
   { 
		
      // call the function the thread will run in
      if (portPtr->IsKindOf(RUNTIME_CLASS( CRS232Port)))
      {
         // wait untill the Application is ready for us
         CSingleLock lk(&portPtr->m_threadStartupEvent);
         lk.Lock(5000); // wait max 5 seconds

         portPtr->RSStateChanged(RSPORTCURRENTLY_VOID);
         
         // stays in a loop at this point
         portPtr->Poll(debugStr);
      }
      else
      {
         sprintf(debugStr2, "CRS232Port AsyncFriend pointer corruption!!!!\n");
         OutputDebugString(debugStr2);
      }
   }
   catch (...) 
   {
      CString msg;
         msg.Format("INTERNAL APPLICATION ERROR FILE %s LINE: %d\n%s\n%s", 
            __FILE__, __LINE__, __MY_APPVERSION__, __DATE__);
      OutputDebugString(msg);

      portPtr->RSDataMessage(msg);
      //OutputDebugString( "Catch\n" );
      //sprintf(debugStr2, "CRS232Port AsyncFriend Exception !!!!\n");
      //OutputDebugString(debugStr2);
   }
   portPtr->m_listenThreadStatus = RS232_EX_TERMINATED;
   {
   CString d;
      d.Format("[Comms thread %4d Terminating.]\n", GetCurrentThreadId());
      OutputDebugString(d);
   }
   portPtr->m_threadDeadEvent.SetEvent();// CEvent
   OutputDebugString("Port object thread returning to System\n");
   
   //AfxEndThread(0);

   return(0);
} // AsyncFriend


char commsParityStr[] = "NOEMS";   //NOPARITY ODDPARITY EVENPARITY MARKPARITY SPACEPARITY
char commsStopStr[][4] = {// ONESTOPBIT ONE5STOPBITS TWOSTOPBITS
   "1",
   "1.5",
   "2"
};

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC( CRS232Port, CObject);

CRS232Port::CRS232Port()
{
   m_debuggerStep = 0;
   m_masterHasWork = FALSE;

   h232Port = INVALID_HANDLE_VALUE;

   // create the listening thread
   m_listenThreadStatus = RS232_EX_PENDING;
   m_pWorkerThread      = AfxBeginThread((AFX_THREADPROC)AsyncFriend,
                                     this,
                                     THREAD_PRIORITY_TIME_CRITICAL, 0,
                                     CREATE_SUSPENDED
                                    );

   rxBufferIndex = 0;   // set up our RX buffer
   memset(rxBuffer, 0 , sizeof(rxBuffer));
   keepPolling = TRUE;
   m_lastCharIncommingtime = GetTickCount() + PORT_MAX_IDLETIME*5;
   InitializeCriticalSection(&critSec);
}

CRS232Port::~CRS232Port()
{
   ClosePort();
   // caller must wait for thread to die, if not already dead
   OutputDebugString("Port object deleted\n");
   TerminateThread(m_pWorkerThread,0);
}

#ifdef _DEBUG
VOID CRS232Port::Dump(CDumpContext& dc) const
{
   // call the base class first
   CObject::Dump(dc);

   // dump our object to the debuggers output
   // all important members can be dumped at this stage.
   dc << "RS232 Port: " << "\n";
} // Dump
#endif // _DEBUG

// ------------------------- RSStateChanged ----------------------------
void CRS232Port::RSStateChanged(DWORD state)
{
   // do nothing in the base class
} // RSStateChanged
/*
// ------------------------- RSDataDebugger ----------------------------
void CRS232Port::RSDataDebugger(const BYTE * buffer, LONG length, BOOL transmit)
{
CString prefix, ASCIIdata;
LONG index, i;
   if (transmit)
      prefix = "TX:";
   else
      prefix = "RX:";
   index = 0;
   while (index < length)
   {
      i=0;
      OutputDebugString("\n");
      OutputDebugString(prefix);
      while ((index+i < length)&&(i<8))
      {
         ASCIIdata.Format("%02X", buffer[index+i]);
         OutputDebugString(ASCIIdata);
         i++;
      }
      index +=8;
   }
} // RSDataDebugger
  */
// --------------------------------- OpenPort ---------------------------
BOOL CRS232Port::OpenPort(LPCTSTR oPortName)
{
CHAR longPortName[MAX_PORT_NAME];
BOOL  error;
CString msg;

   portNameS = oPortName;
   GetLongComPortName(portNameS, longPortName);  // get windows port name in long format   
   // for COM ports >COM9 Windows uses a different naming format, hence this 
   // little catch and we have to be compatible.

   portName = longPortName;
   h232Port =  CreateFile( portName,                    // PIP 1823-400-1997
                               GENERIC_READ | GENERIC_WRITE,
                               (DWORD)NULL,   // exclusive access
                               NULL,          // no security
                               OPEN_EXISTING,
                               FILE_ATTRIBUTE_NORMAL,
                               NULL           // hTemplate
                             );
   if (INVALID_HANDLE_VALUE ==h232Port)
   {
      AfxMessageBox("Error: Could not open the RS232 port!", MB_OK|MB_ICONEXCLAMATION);
      return FALSE;
   }

   msg.Format("Port %s opened.\n" , longPortName);
//   OutputDebugString(msg);
   RSDataMessage(msg);

   // set up the comms parameters now that we have a handle
   error = SetupComm(h232Port,
                     (DWORD)2048, (DWORD)2048);

   msg.Format("Port I/O buffers configured.\n");
   //OutputDebugString(msg);
   RSDataMessage(msg);
   RSStateChanged(RSPORTCURRENTLY_IDLE);

   m_lastCharIncommingtime = GetTickCount() + PORT_MAX_IDLETIME*5;
   return (TRUE);
} // OpenPort

void CRS232Port::OnHWError(DWORD dwCommError)
{
   // do nothing
}


// ----------------------- ReConfigurePort ------------------------------
//
BOOL CRS232Port::ReConfigurePort()
{
   return (ConfigurePort(dcb.BaudRate, dcb.ByteSize, dcb.Parity, dcb.fRtsControl, (NOPARITY==dcb.Parity?FALSE:TRUE)));
}

// ---------------------------------- ConfigurePort ---------------------
//
BOOL CRS232Port::ConfigurePort(DWORD  baud, 
                               DWORD byteSize, 
                               DWORD parity, 
                               DWORD stopBits,
                               DWORD rts,
                               DWORD checkParity)
{
BOOL error;
COMMTIMEOUTS timeout;

   if (INVALID_HANDLE_VALUE==h232Port)
   {
   CString errMsg("Error: Could not set up RS232 port. Port not open!");

      RSDataMessage(errMsg);
      AfxMessageBox(errMsg, MB_OK|MB_ICONEXCLAMATION);
      return FALSE;
   }
   
   // Set up the DCB with our settings
   // Get it first so we fill all members
   error = GetCommState(h232Port,
                           &dcb);
   dcb.BaudRate = baud;
   dcb.ByteSize = (BYTE)byteSize;
   dcb.Parity = (BYTE)parity;
   dcb.fParity = checkParity;
   dcb.StopBits = (BYTE)stopBits;

   // set the default parameters
   dcb.fOutxDsrFlow = FALSE;
   dcb.fDsrSensitivity = FALSE;
   dcb.fOutxCtsFlow = FALSE; // TRUE;

   // set the port for hardware handshaking
   dcb.fRtsControl = rts;
   dcb.fDtrControl = DTR_CONTROL_ENABLE; //DTR_CONTROL_HANDSHAKE;
   dcb.fAbortOnError = TRUE;
   dcb.fBinary = TRUE;
   dcb.fTXContinueOnXoff  = FALSE;
   dcb.fOutX = FALSE;
   dcb.fInX = FALSE;
   dcb.fErrorChar = 0;
   dcb.fNull = 0;
   dcb.fDummy2 = 0;

   // assign it
   error = SetCommState(h232Port,
                           &dcb);
   CString paramsSet;
   if (!error)
   {
   CHAR  errorMsg[MAX_ERROR_STR_LEN];
   CHAR *errorMsgPtr = errorMsg;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美中文在线| 精品一二三四区| 奇米在线7777在线精品| 久久国内精品视频| 成人一区二区三区视频| 欧美无砖专区一中文字| 欧美一级免费大片| 日本一区二区三区四区在线视频 | 亚洲自拍偷拍网站| 免费成人在线视频观看| 国产成人aaa| 欧美日本韩国一区二区三区视频| 欧美成人性福生活免费看| 国产精品日产欧美久久久久| 亚洲精品老司机| 久久97超碰国产精品超碰| 成人黄色av电影| 884aa四虎影成人精品一区| 日本一区二区三区dvd视频在线| 亚洲精品ww久久久久久p站| 久久机这里只有精品| 色88888久久久久久影院按摩| 日韩一区二区精品在线观看| 男女激情视频一区| av在线这里只有精品| 3d动漫精品啪啪一区二区竹菊| 国产三区在线成人av| 亚洲一级二级在线| 福利电影一区二区三区| 欧美电影一区二区| 亚洲欧洲成人自拍| 国模大尺度一区二区三区| 在线亚洲免费视频| 国产午夜精品理论片a级大结局| 亚洲r级在线视频| jlzzjlzz亚洲女人18| 精品免费国产二区三区| 亚洲自拍都市欧美小说| 波多野结衣欧美| 欧美mv日韩mv国产网站| 亚洲国产日韩综合久久精品| 丁香一区二区三区| 精品三级在线看| 亚洲成av人片| 色婷婷亚洲一区二区三区| 国产亚洲美州欧州综合国| 日本欧美大码aⅴ在线播放| 91网址在线看| 国产精品视频线看| 韩国中文字幕2020精品| 91精品久久久久久久99蜜桃 | 在线精品视频一区二区三四| 国产偷国产偷精品高清尤物 | 久久婷婷国产综合国色天香| 五月天一区二区三区| 91久久奴性调教| 最新久久zyz资源站| 国产91丝袜在线播放0| 久久夜色精品国产欧美乱极品| 日韩av不卡在线观看| 欧美男女性生活在线直播观看 | 7777精品伊人久久久大香线蕉完整版| 日韩一区有码在线| 国产成人高清在线| 久久色中文字幕| 裸体一区二区三区| 欧美丰满嫩嫩电影| 婷婷久久综合九色综合伊人色| 91精品91久久久中77777| 亚洲色图色小说| 91免费视频网| 亚洲乱码精品一二三四区日韩在线| 国产欧美日韩另类视频免费观看| 国产剧情一区二区三区| 久久久久久电影| 国产黄色精品网站| 日本一区二区免费在线| 国产高清亚洲一区| 欧美激情综合五月色丁香| 成人黄色在线视频| 中文字幕在线不卡一区 | 亚洲一线二线三线久久久| 色婷婷国产精品综合在线观看| 亚洲视频一二区| 91论坛在线播放| 亚洲精品欧美二区三区中文字幕| 91电影在线观看| 亚洲v精品v日韩v欧美v专区| 欧美一区二区三区四区久久| 另类小说色综合网站| 久久影音资源网| 岛国一区二区在线观看| 中文字幕中文字幕一区| 久久久久国产精品麻豆| 国产乱理伦片在线观看夜一区| 国产婷婷精品av在线| aa级大片欧美| 五月婷婷综合在线| 欧美mv日韩mv| 99精品欧美一区二区蜜桃免费 | 欧美午夜精品久久久久久超碰| 亚洲国产欧美在线人成| 欧美一级欧美三级| 成人听书哪个软件好| 一区二区三区日本| 91精品国产综合久久福利软件| 精品亚洲porn| 亚洲婷婷在线视频| 欧美高清www午色夜在线视频| 国产一区二区h| 最新中文字幕一区二区三区| 欧美日韩一级片网站| 经典一区二区三区| 亚洲色图欧洲色图| 日韩视频在线永久播放| 成人精品在线视频观看| 午夜久久久久久久久久一区二区| www激情久久| 一本色道久久综合亚洲91| 免费一级片91| 中文字幕欧美一区| 日韩亚洲欧美在线观看| 成人av免费在线观看| 婷婷丁香激情综合| 国产欧美日韩精品一区| 欧美日韩国产高清一区二区三区| 国产酒店精品激情| 午夜精品久久久久久不卡8050| 国产午夜精品理论片a级大结局| 欧美唯美清纯偷拍| 成人免费高清在线| 日本人妖一区二区| 亚洲精品国产精品乱码不99| 亚洲精品一区二区三区在线观看 | 一区二区三区免费网站| 欧美成人a在线| 在线观看网站黄不卡| 国产一区二区美女| 性做久久久久久免费观看欧美| 亚洲国产精品传媒在线观看| 欧美久久久久中文字幕| 99久久精品国产一区二区三区| 久久精品久久99精品久久| 亚洲激情在线播放| 国产三级欧美三级日产三级99 | 美国十次综合导航| 亚洲影院在线观看| ...av二区三区久久精品| xfplay精品久久| 91精品国产综合久久久蜜臀图片| 色综合网站在线| 国产成人免费视频一区| 美女在线观看视频一区二区| 国产激情一区二区三区| 捆绑紧缚一区二区三区视频| 亚洲综合在线视频| 国产精品久久一级| 久久久精品2019中文字幕之3| 欧美美女一区二区| 91电影在线观看| 91色综合久久久久婷婷| 成人午夜视频免费看| 国产一区二区三区日韩| 蜜臀va亚洲va欧美va天堂| 亚洲国产日日夜夜| 亚洲一区视频在线| 亚洲人成网站在线| 中文字幕综合网| 国产精品美女久久久久aⅴ国产馆| 26uuu亚洲综合色欧美| 欧美成人国产一区二区| 777色狠狠一区二区三区| 欧洲精品中文字幕| 色哦色哦哦色天天综合| 91丝袜呻吟高潮美腿白嫩在线观看| 国产乱人伦偷精品视频不卡| 国模娜娜一区二区三区| 国产一区二区三区久久悠悠色av| 国产做a爰片久久毛片| 精品一区二区三区日韩| 免费观看一级特黄欧美大片| 天天色综合天天| 五月天久久比比资源色| 天堂资源在线中文精品| 天天综合日日夜夜精品| 天天免费综合色| 日本欧美久久久久免费播放网| 免播放器亚洲一区| 美女网站视频久久| 久久精品国产澳门| 激情文学综合丁香| 国产激情视频一区二区在线观看| 国产精品 日产精品 欧美精品| 国产精品99久久久久久似苏梦涵| 国产精品99久久久久| 国产成人综合亚洲网站| 成人黄色av电影| 日本道免费精品一区二区三区| 97久久精品人人澡人人爽| 在线一区二区三区四区五区|