CreateFile()打开并口成功
HANDLE hParallel; hParallel=CreateFile(
                  "LPT1",
  GENERIC_READ | GENERIC_WRITE,
  //GENERIC_WRITE,
  0,
  //NULL,
  0,
  OPEN_EXISTING,
  //FILE_FLAG_OVERLAPPED,
  FILE_ATTRIBUTE_NORMAL,
  //NULL
  0
                ); if( hParallel == INVALID_HANDLE_VALUE )
{
switch(GetLastError())
{
case ERROR_FILE_NOT_FOUND:
//MessageBox(NULL,"LPT1并口不存在","提示信息", NULL);
AfxMessageBox("LPT1并口不存在");
break;
case ERROR_ACCESS_DENIED:
//MessageBox(NULL,"LPT1并口被占用","提示信息", NULL);
AfxMessageBox("LPT1并口被占用");
break;
}
}
else
{
//MessageBox(NULL,"成功打开并口","提示信息", NULL);
AfxMessageBox("LPT1并口打开成功");
}但是WriteFile()函数返回值老是出错
////////////////////////////////////////////////////////
BYTE * pOut = new BYTE[8];
pOut=0x20;//在并口的管脚6和管脚地之间接一发光二极管,送出0x20想点亮发光二极管
DWORD number;
if(!WriteFile(hParallel, &pOut, 8, &number, NULL))
{
AfxMessageBox("send data error");
}
else
{
AfxMessageBox("send data success");
}

解决方案 »

  1.   

    运行程序打开并口总是成功,但是writefile总是返回FALSE,请问怎么回事?
      

  2.   

    没有并口设备,不能测试,指出两处代码错误:pOut=0x20;//在并口的管脚6和管脚地之间接一发光二极管,送出0x20想点亮发光二极管
    应该是pOut[0]=0x20;if(!WriteFile(hParallel, &pOut, 8, &number, NULL))
    pOut本身就是地址,不再用&
      

  3.   

    按照您说的 改为
    pOut[0]=0x20;
    if(!WriteFile(hParallel, pOut, 8, &number, NULL))编译通过,还是打开并口没有问题,但是 WriteFile()返回值还是FALSE
      

  4.   

    你先用GetLastError()看看WriteFile返回的错误代码是什么,
      

  5.   

    int nError = GetLastError();返回值是6
      

  6.   

    6 The handle is invalid.  ERROR_INVALID_HANDLE ,似乎你的并口根本就没有打开
      

  7.   

    w我在InitialDialog函数中写的CreateFile函数,运行时是提示并口是打开的
    在一个按钮的单击事件函数里写的WriteFile函数