• 大小: 27.07MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-04
  • 语言: C/C++
  • 标签:

资源简介

SerialPort在VC上实现串口通讯相对来说比较简便,有许多用C++做上位机开发的,不可避免的使用到串口。这里根据itas109维护的3.02版本编写了一个实例。希望对大家有帮助。代码在VC2017上编写测试,能够正常使用,请大家放心。

资源截图

代码片段和文件信息

/*
** FILENAME CSerialPort.cpp
**
** PURPOSE This class can read write and watch one serial port.
** It sends messages to its owner when something happends on the port
** The class creates a thread for reading and writing so the main
** program is not blocked.
**
** CREATION DATE 15-09-1997
** LAST MODIFICATION 12-11-1997
**
** AUTHOR Remon Spekreijse
**
**  2007-12-25 mrlong    https://code.google.com/p/mycom/
**  2011-11-06 liquanhai http://blog.csdn.net/liquanhai/article/details/6941574
**  2013-12-04 viruscamp https://github.com/viruscamp
**  2014-01-10 itas109   http://blog.csdn.net/itas109
**  2014-12-18 liquanhai http://blog.csdn.net/liquanhai/article/details/6941574
**  2016-05-06 itas109   http://blog.csdn.net/itas109
**  2016-06-22 itas109   http://blog.csdn.net/itas109
**  2016-06-29 itas109   http://blog.csdn.net/itas109
**  2016-08-02 itas109   http://blog.csdn.net/itas109
**  2016-08-10 itas109   http://blog.csdn.net/itas109
**  2017-02-14 itas109   http://blog.csdn.net/itas109
**  2017-03-12 itas109   http://blog.csdn.net/itas109
**  2017-12-16 itas109   http://blog.csdn.net/itas109
**  2017-02-14 itas109   http://blog.csdn.net/itas109
*/

#include “SerialPort.h“
#include “assert.h“

using namespace itas109;

//获取注册表指定数据到list
bool getRegKeyValues(std::string regKeyPath std::list & portsList)
{
#define MAX_KEY_LENGTH 255
#define MAX_VALUE_NAME 16383

HKEY hKey;

TCHAR achValue[MAX_VALUE_NAME]; // buffer for subkey name
DWORD cchValue = MAX_VALUE_NAME; // size of name string 
TCHAR achClass[MAX_PATH] = TEXT(““); // buffer for class name 
DWORD cchClassName = MAX_PATH; // size of class string 
DWORD cSubKeys = 0; // number of subkeys 
DWORD cbMaxSubKey; // longest subkey size 
DWORD cchMaxClass; // longest class string 
DWORD cKeyNum; // number of values for key 
DWORD cchMaxValue; // longest value name 
DWORD cbMaxValueData; // longest value data 
DWORD cbSecurityDescriptor; // size of security descriptor 
FILETIME ftLastWriteTime; // last write time 

int iRet = -1;
bool bRet = false;

std::string m_keyValue;

TCHAR m_regKeyPath[MAX_KEY_LENGTH];

TCHAR strDSName[MAX_VALUE_NAME];
memset(strDSName 0 MAX_VALUE_NAME);
DWORD nValueType = 0;
DWORD nBuffLen = 10;

#ifdef UNICODE
int iLength;
const char * _char = regKeyPath.c_str();
iLength = MultiByteToWideChar(CP_ACP 0 _char strlen(_char) + 1 NULL 0);
MultiByteToWideChar(CP_ACP 0 _char strlen(_char) + 1 m_regKeyPath iLength);
#else
strcpy_s(m_regKeyPath MAX_KEY_LENGTH regKeyPath.c_str());
#endif

if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE m_regKeyPath 0 KEY_READ &hKey))
{
// Get the class name and the value count. 
iRet = RegQueryInfoKey(
hKey                    // key handle 
achClass                // buffer for class name 
&cchClassName           // size of class string 
NULL                   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-27 19:24  SerialPortTest\
     目录           0  2018-11-27 19:24  SerialPortTest\.vs\
     目录           0  2018-11-27 19:24  SerialPortTest\.vs\SerialPortTest\
     目录           0  2018-11-27 19:24  SerialPortTest\.vs\SerialPortTest\v15\
     文件       16896  2018-11-27 19:24  SerialPortTest\.vs\SerialPortTest\v15\.suo
     文件    76922880  2018-11-27 19:24  SerialPortTest\.vs\SerialPortTest\v15\Browse.VC.db
     目录           0  2018-11-27 19:25  SerialPortTest\Debug\
     目录           0  2018-11-27 19:24  SerialPortTest\SerialPortTest\
     目录           0  2018-11-27 19:25  SerialPortTest\SerialPortTest\Debug\
     文件       39901  2018-03-05 10:25  SerialPortTest\SerialPortTest\SerialPort.cpp
     文件       11634  2018-03-05 10:25  SerialPortTest\SerialPortTest\SerialPort.h
     文件      108556  2018-11-27 17:38  SerialPortTest\SerialPortTest\SerialPortTest.aps
     文件        6242  2018-11-27 17:29  SerialPortTest\SerialPortTest\SerialPortTest.cpp
     文件        1112  2018-11-27 17:29  SerialPortTest\SerialPortTest\SerialPortTest.h
     文件       11394  2018-11-27 17:38  SerialPortTest\SerialPortTest\SerialPortTest.rc
     文件       10665  2018-11-27 19:24  SerialPortTest\SerialPortTest\SerialPortTest.vcxproj
     文件        2455  2018-11-27 18:12  SerialPortTest\SerialPortTest\SerialPortTest.vcxproj.filters
     文件         237  2018-11-27 18:12  SerialPortTest\SerialPortTest\SerialPortTest.vcxproj.user
     文件       11874  2018-11-27 19:18  SerialPortTest\SerialPortTest\SerialPortTestDlg.cpp
     文件        2362  2018-11-27 19:17  SerialPortTest\SerialPortTest\SerialPortTestDlg.h
     目录           0  2018-11-27 19:24  SerialPortTest\SerialPortTest\res\
     文件       67777  2017-12-02 09:47  SerialPortTest\SerialPortTest\res\SerialPortTest.ico
     文件         812  2018-11-27 17:29  SerialPortTest\SerialPortTest\res\SerialPortTest.rc2
     文件         598  2017-12-02 09:47  SerialPortTest\SerialPortTest\res\Toolbar.bmp
     文件        2994  2017-12-02 09:47  SerialPortTest\SerialPortTest\res\Toolbar256.bmp
     文件        1466  2018-11-27 18:03  SerialPortTest\SerialPortTest\resource.h
     文件         434  2018-11-27 17:29  SerialPortTest\SerialPortTest\stdafx.cpp
     文件        3508  2018-11-27 17:29  SerialPortTest\SerialPortTest\stdafx.h
     文件         630  2018-11-27 17:29  SerialPortTest\SerialPortTest\targetver.h
     文件        1456  2018-11-27 17:29  SerialPortTest\SerialPortTest.sln

评论

共有 条评论