利用WinIo实现并口数据通信(4)

时间:2025-07-09

利用WinIo实现并口数据通信

 52

TranVal|=0x02;break;case2:

TranVal&=0xFB;break;case3:

TranVal&=0xF7;break;default:break;}

SetPortVal(BasePortAddr+}

计 算 机 与 现 代 化

j=0;LOOP:

2009年第8期

GetPortVal(BasePortAddr+0x402,&ECR,1);FIFO-DETE=ECR&0x000000FF;if(!(FIFO-DETE&0x02))

{SetPortVal(BasePortAddr+0x400,Test[j],1);printf("dataout%x\n",Test[j]);j=j+1;o{p"thedatanumberis:%d\n",j);printf("theFIFOisfull!!\n");}

GetPortVal(BasePortAddr+0x402,&ECR,1);ECR-Old=ECR&0x000000FF;printf("ECRis%x\n",ECR-Old);

SetPortVal(BasePortAddr+2,0x24,1);//设置为输入

器、。随着传输协议的改进,传输的速度愈来愈快,协议也愈来愈复杂,能控制的寄存器也愈来愈多,下面以现在用得较为广泛的ECP方式为例说明在ECP方式下的数据通信。

在ECP方式下,通过设置它的扩展寄存器[2]

ECR中的7、6、5位,可以模拟不同工作方式。在本例中设置为ECP方式的测试工作模式,就是在没有外部硬件的情况下模拟ECP方式的运行,所以设置ECR的高3位为110。ECP方式下是可以双向传输数据的,且是通过的它的FIFO来实现数据通信的。在设置为向外传输时,向FIFO(地址为BasePortAddr+0x400的寄存器)写入数据,并行端口的接口电路就自动启动一个数据的向外传输,通过硬件来实现数据传输的握手信号,而不需要PC机的干预。只要FIFO里还有数据硬件电路就不停地向外传数据,同样只要FIFO没有满,PC机就可以向它写数据,通过ECR的位2来表示在向外传数据时,FIFO的状态。读取数据也一样,只要FIFO中有数据就可以读出,只要FIFO不是满的,它就不停地从外部设备读取数据。不同的是判断FIFO的状态是ECR的位1。

//———设置并口的工作模式ECP中的ECR寄存器中START:

GetPortVal(BasePortAddr+0x402,&ECR,1);ECR-Old=ECR&0x000000FF;printf("ECRis%x\n",ECR-Old);

SetPortVal(BasePortAddr+0x402,(ECR-Old&0xDF)|0xD0,1);//使ECR的765位110,为ECP工作为测试模式

GetPortVal(BasePortAddr+0x402,&ECR,1);printf("ECRis%x\n",ECR);

SetPortVal(BasePortAddr+2,0x04,1);//设置为输出状态for(i=0;i<=20;i++)//生成一组数据{Test[i]=i;}

//———向FIFO中写入数据

状态

//从FIFO中读取数据j=0;LOOP1:

GetPortVal(BasePortAddr+0x402,&ECR,1);FIFO-DETE=ECR&0x000000FF;if((FIFO-DETE&0x01))printf("theFIFOisempty!!\n");else{

GetPortVal(BasePortAddr+0x400,&ECP-DATA,1);printf("datainis%x\n",ECP-DATA);Test0[j]=ECP-DATA&0x000000FF;//printf("datais%x\n",ECP-DATA);j=j+1;gotoLOOP1;}

GetPortVal(BasePortAddr+0x402,&ECR,1);//读取ECR

寄存器

ECR-Old=ECR&0x000000FF;printf("ECRis%x\n",ECR-Old);

在一个关于并口的具体运用中,光靠PC机上的

应用程序是不够的,还需要外部设备的配合,完成并口数据的传输协议。然后利用WinIo提供的函数实现特定工作方式下的握手信号和数据传输。

4 结束语

本文从PC机的结构出发,在硬件的基础上分析并口操作的对象,介绍了在VC++编程环境下,利用Win2Io函数库实现并口操作的方法和步骤。

利用WinIo实现并口数据通信(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219