gpt4 book ai didi

c++ - 尝试打开 COM 端口 C++ 时出现 FILE_NOT_FOUND

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:22 32 4
gpt4 key购买 nike

我正在尝试使用 C++ 打开一个用于读写的 com 端口,但我似乎无法通过实际打开它的第一阶段。我在 handle 上得到一个 INVALID_HANDLE_VALUE使用 GetLastError FILE_NOT_FOUND。我在网上搜索了几天,我的想法很新鲜。我也在这个网站上搜索了所有关于COM的问题。

我已经扫描了现有的端口(或者我相信是这样)以获得正确的端口名称。

我还尝试了 _T("COM1") 与斜线、不带斜线、带冒号、不带冒号和不带 _T 的组合

我在 64 位机器上使用 Windows 7。

这是我得到的代码

我很高兴对此有任何意见

void SendToCom(char* data, int len)
{

DWORD cbNeeded = 0;
DWORD dwPorts = 0;
EnumPorts(NULL, 1, NULL, 0, &cbNeeded, &dwPorts);

//What will be the return value
BOOL bSuccess = FALSE;

LPCSTR COM1 ;

BYTE* pPorts = static_cast<BYTE*>(malloc(cbNeeded));
bSuccess = EnumPorts(NULL, 1, pPorts, cbNeeded, &cbNeeded, &dwPorts);
if (bSuccess){
PORT_INFO_1* pPortInfo = reinterpret_cast<PORT_INFO_1*>(pPorts);
for (DWORD i=0; i<dwPorts; i++)
{
//If it looks like "COMX" then
size_t nLen = _tcslen(pPortInfo->pName);
if (nLen > 3)
{
if ((_tcsnicmp(pPortInfo->pName, _T("COM"), 3) == 0) ){
COM1 =pPortInfo->pName;
//COM1 ="\\\\.\\COM1";
HANDLE m_hCommPort = CreateFile( COM1 ,
GENERIC_READ|GENERIC_WRITE, // access ( read and write)
0, // (share) 0:cannot share the COM port
NULL, // security (None)
OPEN_EXISTING, // creation : open_existing
FILE_FLAG_OVERLAPPED, // we want overlapped operation
NULL // no templates file for COM port...
);
if (m_hCommPort==INVALID_HANDLE_VALUE)
{
DWORD err = GetLastError();
if (err == ERROR_FILE_NOT_FOUND) {
MessageBox(hWnd,"ERROR_FILE_NOT_FOUND",NULL,MB_ABORTRETRYIGNORE);
}
else
if(err == ERROR_INVALID_NAME) {
MessageBox(hWnd,"ERROR_INVALID_NAME",NULL,MB_ABORTRETRYIGNORE);
}
else
{
MessageBox(hWnd,"unkown error",NULL,MB_ABORTRETRYIGNORE);
}
}
else{
WriteAndReadPort(m_hCommPort,data);
}
}
pPortInfo++;
}
}
}

}

最佳答案

解决方案是使用

问题是,如果你的端口大于 9 那么你必须使用语法LPCWSTR szPortName = L"\\\\.\\COM11";

关于c++ - 尝试打开 COM 端口 C++ 时出现 FILE_NOT_FOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736376/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com