【问题标题】:Error with opening a connection with COM port in C/C++在 C/C++ 中打开与 COM 端口的连接时出错
【发布时间】:2014-09-19 07:24:15
【问题描述】:

我使用的是 Windows 8.1 Pro 机器。好的,我正在尝试打开串行设备的 COM 端口连接。我的代码如下:

#include<stdio.h>
#include<windows.h>

int main(void)
{
     HANDLE hcomm;
     char *comPort = "COM6";
     hcomm = CreateFile(comPort, GENERIC_READ | GENERIC_WRITE, 0, 0,
                        OPEN_EXISTING, 0, NULL);
     if(hcomm = INVALID_HANDLE_VALUE)
     {
           printf("Connection Failed...\n");
     }
     else
          printf("Connection Succeded....\n");
         //return hcomm;
     }
}

但是这段代码对我不起作用。请给我一些建议,我哪里弄错了。

【问题讨论】:

  • didn't work 是什么意思?
  • 感谢 Jarod 重播,我真的不明白我在哪里出错了..我的语法和程序是正确的.. 是窗口的版本问题..?它在那里返回无效的句柄值..
  • 顺便说一句,应该是const char *comPort = "COM6";
  • 是的,你是对的.. 我也在 mingw 和 vc++ 编译器上尝试过这个程序.. 但运气不好..
  • CreateFileLPCTSTR lpFileNameLPCTSTR = const char*const wchar_t* 作为第一个参数,取决于_UNICODE,您是否尝试L"COM6" 使用宽字符?

标签: c++ serial-port


【解决方案1】:

检查 GetLastError() 的值。 GetLastError() == 0 表示成功。

此外,您的if 条件正在将 hcomm 重新初始化为无效句柄。注意if 条件中从赋值到比较运算符的变化。请将您的代码更改为以下代码,看看是否能解决您的问题:

if(hcomm == INVALID_HANDLE_VALUE) {
    printf("Handle creation failed with error %d", GetLastError());
}
else {
    printf("Handle creation successful");
}

【讨论】:

  • 是的 mbaxi,我已经用 GetLastError() 检查过,我一直得到 0 错误代码。
  • Jarod42 - 我没有足够的声望对问题发表评论,但我似乎可以在评论中添加评论。
  • @mbaxi:您的第二句话应该是 OP 的错误:= vs ==。我建议编辑您的答案以明确说明 OP 的错误并删除问题部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 2011-06-04
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2014-06-28
相关资源
最近更新 更多