CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  网络及通讯开发

请问:如何在C++ Builder 6下对PC机的并口进行操作?

楼主gRempCH_eNter(龙争四舞)2005-06-01 15:41:09 在 C++ Builder / 网络及通讯开发 提问

要操作并口进行数据的输入输出,不知如何进行,请高手指教!  
  有代码最好! 问题点数:100、回复次数:6Top

1 楼gRempCH_eNter(龙争四舞)回复于 2005-06-02 13:25:34 得分 0

怎么没人帮我,自己顶一下!Top

2 楼MEFULEU(没有作不到,只有想不到)回复于 2005-06-02 17:02:01 得分 0

FILE   *fp=fopen("LPT1","a+");  
  fprintf(fp,"输出的数据\n");  
  fclose(fp);Top

3 楼fyhui(一只小猫)回复于 2005-06-03 07:59:11 得分 15

用操作文件的方法操作lpt1文件就可以了  
  Top

4 楼GeoPhoenix(天鸽)回复于 2005-06-03 09:05:10 得分 30

在98系统中可比较简单的实现并口的读写操作,但是在2000下就比较麻烦了,但是我记得网上好像有这一个网址是关于如何操作并口的  
  http://www.cppfans.com/articles/system/prnport.asp  
  Top

5 楼gdufo(仅代表个人观点^_^)回复于 2005-06-06 10:49:19 得分 40

通过__emit__函数实现端口的读写    
   
  __emit__   函数一般极少用到。其用法如下:    
   
  void   _   _emit_   _(argument,   .   .   .);    
   
  该函数为C++Builder   的一个内部函数,调用的参数为机器语言指令。它在编译的时侯,将机器语言指令直接嵌入目标码中,不必借助于汇编语言和汇编编译程序。    
   
  如果想使用__emit__   函数,必须熟悉80x86处理器的机器语言指令。如果调用的参数是错误机器语言指令,则程序将非正常运行,并很容易导致死机。    
   
  利用__emit__函数编制端口输出函数如下:    
   
  void   OutPort(unsigned   short   port,unsigned   char   value)    
   
  //port参数为输出端口地址,value参数为输出值    
   
  {    
   
      __emit__(0x8b,0x95,&port);   //   把端口地址送到处理器EDX寄存器中    
   
      __emit__(0x8a,0x85,&value);   //   把value   送到处理器AL寄存器中    
   
      __emit__(0x66,0xee);   //   把AL寄存器中的值送到端口    
   
  }    
   
  利用__emit__函数编制端口输入函数如下:    
   
  unsigned   char   InPort(unsigned   short   port)    
   
  //port参数为输入端口地址,返回为输入值    
   
  {    
   
       unsigned   char   value   ;    
   
      __emit__(0x8b,0x95,&port)   ;   //   把端口地址送到处理器DX寄存器中    
   
      __emit__(0x66,0xec);   //   从DX指定端口中将一数据送到AL寄存器中    
   
      __emit__(0x88,0x85,&value);   //   把AL寄存器中的值赋给value    
   
       return   value;   //返回端口数据    
   
  }    
   
  由这两种方法所编制的函数注释可以看出,它们每一句的功能都是一样的,只是一个是嵌入了汇编语言,另一个是直接使用机器语言。    
   
  3   应用举例    
   
  在C++Builder中,通过File/New   Application菜单新建一工程。    
   
  在表单中加两个Button控件,Caption分别为“写端口”和“读端口”。    
   
  将第一种方法所编制的OutPort和InPort函数拷贝到表单的头文件中,并把这两个函数作为表单类的在表单类的公有成员函数。    
   
  分别双击两个Button控件,产生OnClick事件函数。在单元文件的.cpp文件添加如下代码:    
   
  //---------------------------------------------------------------------------    
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)    
   
  {    
   
  OutPort(0x378,0x00);//向地址为378H的端口输出数据    
   
  OutPort(0x379,0x00);//向地址为379H的端口输出数据    
   
  }    
   
  //---------------------------------------------------------------------------    
   
  void   __fastcall   TForm1::Button2Click(TObject   *Sender)    
   
  {    
   
  int   value;    
   
  value=InPort(0x37a);//从地址为37aH的端口读入数据    
   
  }    
   
  //---------------------------------------------------------------------------    
   
  (注意,端口0x378-0x37f为打印口的I/O口,通过这种方法可以实现的打印机的控制。)    
   
  编译运行。    
  Top

6 楼rookieme(rookieme)回复于 2005-06-08 08:15:25 得分 15

如果只是简单的并口IO,直接对PRN或LPT1两文件操作就OKTop

相关问题

  • C++Builder
  • C++? VC++? C++ Builder?
  • 有关C++Builder窗口的设计
  • c++ builder 中的多窗口问题
  • Visual C++ vs C++ Builder
  • C++ Builder Vs Visual C++
  • 在c++ builder中运行c++程序的窗口显示问题!!
  • C++builder CGI debug
  • install C++ Builder 5 ???
  • 汉化(c++ builder)

关键词

  • 函数
  • 端口
  • 数据
  • 文件
  • 指令
  • 语言
  • emit
  • 口
  • outport
  • 表单

得分解答快速导航

  • 帖主:gRempCH_eNter
  • fyhui
  • GeoPhoenix
  • gdufo
  • rookieme

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo