2012-03-12 54 views
1

我正在写一个activex控件,它将访问并行端口并将字节写入它。我可以成功打开端口,但是当我写入时,它会挂起WriteFile函数。我在这里错过了什么吗?我正在使用Windows 7WriteFile并行端口挂起

HANDLE portHwd = CreateFile(_T("\\\\.\\LPT1"), 
         GENERIC_WRITE, 
         0, 
         NULL, 
         OPEN_EXISTING, 
         0, 
         NULL); 
     if (portHwd) 
     { 
      char outBuffer[] = _T("This is a test\r\n"); 
      int sz_buffer = strlen(outBuffer); 

      DWORD bytes_written; 
      if (!WriteFile(portHwd, 
        outBuffer, 
        sz_buffer , 
        &bytes_written, 
        NULL)) 
      { 
        CloseHandle(portHwd); 
        GetLastError(); 
        return 1; 
      } 

      CloseHandle(portHwd); 
     } 

回答

1

如果端口的输出缓冲区已满,则WriteFile将挂起,直到有足够空间完成请求。是否有东西附在港口上并从中读取?

+0

没有任何东西连接到端口 – Jeeva 2012-03-12 09:37:17

+0

好的。 WriteFile总是会挂起。 – RobH 2012-03-12 09:39:08

+0

哦。不能连接任何设备就像串口一样测试它吗? – Jeeva 2012-03-12 09:44:13