WEB开发网
开发学院软件开发VC 用VC实现PC并行端口数字信息的输入/输出 阅读

用VC实现PC并行端口数字信息的输入/输出

 2010-06-27 20:41:59 来源:WEB开发网   
核心提示:(3):数据端口及控制端口组合成12位数字输出的VC实现//获得端口地址WORD m_nportData=(WORD)0x378;WORD m_nportControl=(WORD)0x37A;//获得要写入端口的值WriteValue(数据范围为0~4095)DWORD m_nValue=(DWORD)(WriteV

(3):数据端口及控制端口组合成12位数字输出的VC实现

//获得端口地址
WORD m_nportData=(WORD)0x378;
WORD m_nportControl=(WORD)0x37A;
//获得要写入端口的值WriteValue(数据范围为0~4095)
DWORD m_nValue=(DWORD)(WriteValue&0x0FF);//取低8位值
SetPortVal(m_nportData, m_nValue, 1);//write a BYTE value to Data port
DWORD temp_dwPortVal;
unsigned int temp_aa;
GetPortVal(m_nportControl, &temp_dwPortVal, 1); //reads a BYTE value from an I/O port
temp_aa=(unsigned int)temp_dwPortVal;
temp_aa=temp_aa&0x0F0; //取低8位值,将低4位置为0;高4位不变;
temp_aa=temp_aa^0x0B; //将低4位中C0、C1、C3置为1,C2置为0;高4位不变;
unsigned int WriValue;
WriValue=WriValue>>8;//取高4位值
temp_aa=temp_aa^WriValue; //将写入值的低4位中的C0、C1、C3取反,C2位不变,高4位保持端口值不变
SetPortVal(m_nportControl, (DWORD)temp_aa, 1); //写出的值中,高4位保持端口原来的值不变,
//低4位是写入什么电平,连接器上既是什么电平

PC并行口数字输入的VC实现

(1):状态端口数字输入的VC实现

为了测试并行口状态端口的数字输入,可以将数据端口引脚Pin2~Pin6连接到状态端口引脚Pin15、Pin13、Pin12、Pin10、Pin11上。引脚接好后,先从数据端口输出数据,在从状态端口和控制端口读出数据,读出的数据应与写入的数据一致,数据范围为0~31。

DWORD dwPortVal;
unsigned int ValueGet=0;
//获得端口地址
WORD m_nport=(WORD)0x379;
//获得端口数据
GetPortVal(m_nport, &dwPortVal, 1);
ValueGet=(unsigned int)dwPortVal;
ValueGet=ValueGet^0x80; //保持得到的State值与连接器处的值一直;
ValueGet=ValueGet&0xF8; //去掉S0 ~S2位;
ValueGet=ValueGet>>3; //右移3位,将S7~S3变为低5位

(2):控制端口数字输入的VC实现

为了测试并行口控制端口的数字输入,可以将数据端口引脚Pin2~Pin5连接到控制端口引脚Pin1、Pin14、Pin16、Pin17上 。引脚接好后,先从数据端口输出数据,在从状态端口和控制端口读出数据,读出的数据应与写入的数据一致,数据范围为0~15。

//获得端口地址
WORD m_nport=(WORD)0x37A;
//===== 将C0~C3位置1,即使连接器上为高电平 ,使控制端口为输入端口=====
DWORD temp_dwPortVal;
unsigned int temp_aa;
GetPortVal(m_nport, &temp_dwPortVal, 1); //获取端口的当前值
temp_aa=(unsigned int)temp_dwPortVal;
temp_aa=temp_aa&0x0F0; //取低8位值,将低4位置为0;高4位不变;
temp_aa=temp_aa^0x4; //将低4位中C0、C1、C3置为0,C2置为1;高4位不变;
SetPortVal(m_nport, (DWORD)temp_aa, 1); //写出的值中,高4位保持端口原来的值不变,
//低4位是写高电平,即使连接器上是高电平
//=============================================================
unsigned int ValueGet=0;
DWORD dwPortVal;
//获得端口数据
GetPortVal(m_nport, &dwPortVal, 1);
ValueGet=(unsigned int)dwPortVal;
ValueGet=ValueGet^0x0B; //保持C0,C1,C3位的值与连接器处的值一至;
ValueGet=ValueGet&0x0F; //去掉高4位值

上一页  1 2 3 4 5 6 7  下一页

Tags:VC 实现 PC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接