xp系统下delphi如何向打印端口LPT1按二进制循环输出0x36,0x39,0x3c; 最好能给个代码

解决方案 »

  1.   

    const
      lptData: array[0..2] of Char = (#$36, #$39, #$3C);procedure lptProcess();
    var
      hFile: Cardinal;
      byteWrited: Cardinal;
      Overlapped: TOverlapped;
    begin
      hFile := CreateFile('LPT1:', GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
      if hFile = INVALID_HANDLE_VALUE then
        Exit;  Overlapped.hEvent := CreateEvent(nil, False, False, nil);  while True do
      begin
        if not WriteFile(hFile, lptData, length(lptData), byteWrited, @Overlapped) then
          case WaitForSingleObject(Overlapped.hEvent, 4000) of
            WAIT_OBJECT_0: ;
            WAIT_TIMEOUT, WAIT_ABANDONED:
              begin
                Break;
              end;
          end;
      end;
      CloseHandle(hFile);
      CloseHandle(Overlapped.hEvent);end;
      

  2.   

    兄台,有没有简单一些的写法?我是业余菜鸟。看了半天,没明白该怎么把我的想法用你的语句套进去。
    我要做到的东西就是在并口上输出8个独立的方波的波形(用程序来应该就是给并口设置不同的数值),但是具体什么时候改变波形我用sleep(x)来控制,输出一个波形后我再计算x的值,然后再输出下一个。间隔时间可能几百个毫秒,也可能几毫秒。