⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataport.cpp

📁 这是一个水箱的液位控制程序
💻 CPP
字号:
// DataPort.cpp: implementation of the DataPort class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "水箱实验.h"#include "DataPort.h"#include "conio.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////DataPort::DataPort(){	base=0x0100;          //系统PC-6313多功能模入模出接口卡基地址	//ii=0;}DataPort::~DataPort(){}float DataPort::GetData1(){    float value;	int dl,dh,i;	dl=_inp(base+3);         /*空读低八位 ,清除转换状态及中断标志*/	_outp(base,0x00);  /*送通道代码,00为通道0,01为通道1,其他类推*/	for(i=0;i<1000;i++);/*延时,常数由由机型决定*/	_outp(base+1,0);    /*启动A/D,所送数值无关*/	do                 /*查询A/D转换状态*/	{		;	}	while(_inp(base+2)>=128);	dh=_inp(base+2);                 /*转换结束,读高4位结果*/	dl=_inp(base+3);                 /*读低8位结果*/	value=float((dh*256+dl)*10.0/4096.0);/*将结果转化成实际电压值*/	return value;}float DataPort::GetData2(){    float	 value;//int indata;	int dl,dh,i;	dl=_inp(base+3);	_outp(base,0x01);	for(i=0;i<1000;i++);	_outp(base+1,0);	do{		;	}while(_inp(base+2)>=128);	dh=_inp(base+2);	dl=_inp(base+3);	value=float((dh*256+dl)*10.0/4096.0);  //  indata=dh*256+dl;//    indata=(int)value;	return value;//indata;    }void DataPort::SetData1(float data){    unsigned int datapv,temp,temp1,temp2;    int dah,dal;	float a;	a=(float)4095*16.0/4096+4;     	if(data>=a)		data=a;	datapv=(int)((data-4)*4096/16);        /*将4~20mA数字电流值转换成0~4095*/	temp1=temp2=datapv;	temp=0xff;                      	dah=temp1>>4;                          /*取高字节数据*/	temp2=temp2<<4;	temp2=temp2&temp;	dal=temp2;                             /*取低字节数据*/	_outp(base+4,dah);                     /*送出高字节数据,通道n为base+2n+2*/	_outp(base+5,dal);                     /*送出低字节数据,通道n为base+2n+3*/	_inp(base+0);	                       /*启动D/A转换,读出的数据无关*/}void DataPort::SetData2(float data)//int data){    unsigned int datapv,temp,temp1,temp2;    int dah,dal;float a;	a=(float)4095*16.0/4096+4;	if(data>=a)		data=a;	datapv=(int)((data-4)*4096/16);	temp1=temp2=datapv;	temp=0xff;	dah=temp1>>4;	temp2=temp2<<4;	temp2=temp2&temp;	dal=temp2;//	dah=(int)(data*65520/16/256);//	dal=((int)(data*65520/16)-dah*256);	_outp(base+6,dah);	_outp(base+7,dal);	_inp(base+0);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -