串口通信问题(C代码)

时间:2009-05-14 23:41:11

标签: c winapi serial-port

我最近尝试使用蓝牙usb加密狗访问串行通信。 我使用下面的C代码,并继续得到错误5,这是“访问被拒绝”。我是系统的管理员(这似乎是论坛上这个问题的常见解决方案),没有其他应用程序访问我正在使用的同一个端口(也是另一种常见的解决方案)。我正在运行Windows Vista Home Basic 32位系统。我想知道是否有人有这方面的解决方案 我的C代码是:

  

HANDLE hComm;

hComm = CreateFile(_T(“\\。\ COM3”),                 GENERIC_READ | GENERIC_WRITE,                       0,                     空值,                   OPEN_EXISTING,                 0,                 NULL);

if (hComm == INVALID_HANDLE_VALUE)
    printf("Error number: %ld\n", GetLastError());
else
    printf("success\n");

5 个答案:

答案 0 :(得分:4)

我不知道这是不是你的问题,但我怀疑你需要逃避路径中的反斜杠,如下所示:"\\\\.\\COM3"

答案 1 :(得分:1)

看起来你必须再次逃避反斜杠。您还可以使用对象查看器(例如WinObj(http://technet.microsoft.com/en-us/sysinternals/bb896657.aspx)验证系统中是否存在您要定位的COM端口,但我不知道WinObj是否在Vista上运行。

答案 2 :(得分:0)

根据我的经验,不需要反斜杠

hComm = CreateFile( _T("COM3"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

答案 3 :(得分:0)

感谢您的提示,但事实证明蓝牙密码未正确设置,因此它拒绝访问串口。

答案 4 :(得分:0)

只需在代码中用\。\ COM#替换COM#,

  hComm = CreateFile("\\\\.\\COM15",

              GENERIC_READ | GENERIC_WRITE,
              0,
              0,
              OPEN_EXISTING,
              0,
              0);