请教众位大神啊!!!!
我是用VS2008写的一个工程。但是我只负责其中的一部分。
现在那边告诉我要添加并口控制部分。
但是他是用BCB完成的。
主要的并口部分代码是#include <vcl.h>  
#pragma hdrstop
#include "ltp1.h"
#include "PortTalk.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
OpenPortTalk();  //打开地址操作
outportb(0xE800,0x00);  //向并口数据寄存器写0x00;
ClosePortTalk();  //关闭地址操作
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenPortTalk();  //打开地址操作
outportb(0xE800,0xFF);  //向并口数据寄存器写0xff;
Sleep(1000);
outportb(0xE800,0x00);
ClosePortTalk();  //关闭地址操作
}请教各位,有没有办法用VS实现以上功能?如果有需要如何写,以及包含什么头文件?
否则能否告知如何使用BCB对VS的工程进行编写调试?
如果说不清麻烦EMAIL至[email protected]
谢谢!!!!!!

解决方案 »

  1.   

        bool LptPrint(char prtdata[],int prtlen,int timeout) 
        { 
         HANDLE h; 
         DWORD n; 
         COMMTIMEOUTS t; 
         bool result; 
         h = CreateFile("lpt1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); 
         if (h == INVALID_HANDLE_VALUE){ 
         AfxMessageBox("Can not open lpt1"); 
         return false; 
         } 
         t.ReadIntervalTimeout = 0; 
         t.ReadTotalTimeoutMultiplier = 0; 
         t.ReadTotalTimeoutConstant = 0; 
         t.WriteTotalTimeoutMultiplier = timeout * 1000 / prtlen; 
         t.WriteTotalTimeoutConstant = 0; 
         if (!SetCommTimeouts(h,&t)){ 
         AfxMessageBox("SetCommTimeout error"); 
         return false; 
         } 
         result = true; 
         if (!WriteFile(h,prtdata,prtlen,&n,NULL)){ 
         AfxMessageBox("Print error"); 
         result = false; 
         } 
         CloseHandle(h); 
         return result; 
        } 这个是以前控制并口打印机的代码,vc下写并口,基本上就是这个路子,只是实际使用可能很复杂。