📄 dataport.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 + -