91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-04
  • 語言: 其他
  • 標簽: RTX??DA??6208??驅動??

資源簡介

基于RTX2012的PCI6208/PCI6216V的驅動,可以實現對PCI6208的實時控制,廣泛應用于PC-BASED的實時控制系統,低成本高可靠性的解決方案。

資源截圖

代碼片段和文件信息

#include?“RTX_PCI6208.h“

/*
本文件中的幾個函數曾經在Ardence?RTX下檢測通過。用于PCI-6208/16的DA輸出。
用法:
(1)、DWORD?dwbaseAddr?=?_6208_Init(PCI卡序號設備ID制造商號);只有一塊PCI卡時PCI卡序號為0.多塊卡時在機器主板上PCI插槽從0開始檢測
第一次遇到的插槽不為空時PCI卡序號?=?0第二次遇到的插槽不為空時PCI卡序號?=?1?...?PCI卡序號?=?n.
(2)、int????nStatus?=?_6208_GetDAStatus(dwbaseAddr);獲取端口狀態寄存器的狀態。當寄存器為空就輸出。
(3)、void _6208_DAOutPut(dwbaseAddr輸出通道Channel輸出數字量Value);
(4)、void _6208_Fail(“想要輸出的錯誤提示信息“);初始化發生錯誤時輸出錯誤信息并終止程序
(5)、UCHAR _6208_DI_ReadPort(DWORD?dwAddr);從dwAddr端口讀取數字信號
(6)、void _6208_DO_WritePort(DWORD?dwAddrUCHAR?uValue);從dwAddr端口輸出數字信號
(7)、BOOL _6208_CloseCard(DWORD?dwAddr);關閉PCI6208卡初始化時返回的地址。
*/
DWORD _6208_Init(const?UINT?CardIndexunsigned?short?DeviceIDunsigned?short?VendorID)
{
ULONG uDeviceNum?=?0; //設備號
ULONG???uFunNum?=?0; //功能號
ULONG???uBusNum?=?0; //總線號
ULONG uOffset?=?0; //偏置用于檢索插槽是否為空空則為0相鄰插槽關聯常數為256。
ULONG uNothingToWrite?=?0; //獲取PCI配置空間失敗.
ULONG uBytesWritten?=?0; //獲得PCI配置空間信息。一般為64字節。
BOOL bFlag?=?0;
// UINT uIndex?=?0; //當系統中存在多塊相同PCI卡時檢索之用。
DWORD _base_addr?=?0; //返回的基地址
//================================================================================================
PCI_SLOT_NUMBER SlotNumber;
PPCI_COMMON_CONFIG PciData;
UCHAR chBuffer[PCI_COMMON_HDR_LENGTH];

PciData?=?(PPCI_COMMON_CONFIG)chBuffer;
SlotNumber.u.bits.Reserved?=?0;
bFlag?=?TRUE;

for(uBusNum?=?0;?bFlag?;uBusNum++)
{
for(uDeviceNum?=?0;uDeviceNum? {
SlotNumber.u.bits.DeviceNumber?=?uDeviceNum;
for(uFunNum?=?0;?uFunNum? {
SlotNumber.u.bits.FunctionNumber?=?uFunNum;
uBytesWritten?=?RtGetBusDataByOffset(PCIConfigurationuBusNumSlotNumber.u.AsULONGPciDatauOffsetPCI_COMMON_HDR_LENGTH);
if(uBytesWritten?==?uNothingToWrite)
{
RtWprintf(L“NothingWritten!“);
printf(“Error?ByteWritten?=?%d\n“uBytesWritten);
uDeviceNum?=?PCI_MAX_DEVICES;
bFlag?=?FALSE;
break;
}

if(PciData->VendorID?==?PCI_INVALID_VENDORID)?//如果VendorID等于0xFFFF表示PCI卡錯誤進行下一個循環
{
break;
}

if((PciData->DeviceID?==?DeviceID)?&&?(PciData->VendorID?==?VendorID)?&&?uDeviceNum?==?CardIndex)
{
//設置命令參數用于訪問PCI設備的控制寄存器
PciData->Command?=?(PCI_ENABLE_IO_SPACE?|?PCI_ENABLE_MEMORY_SPACE?|?PCI_ENABLE_BUS_MASTER?|?PCI_ENABLE_WRITE_AND_INVALIDATE);
RtSetBusDataByOffset(PCIConfigurationuBusNumSlotNumber.u.AsULONGPciData0PCI_COMMON_HDR_LENGTH);

_base_addr?=?PciData->u.type0.baseAddresses[2]?&?0xfffffffe;

return?_base_addr;
}
}
}
}
return?0;
}


int _6208_GetDAStatus(DWORD?dwAddr)
{
if(dwAddr?==?0)
{
return?-1;
}

return?(RtReadPortUshort((PUSHORT)dwAddr)?&?0x0001);
}

//DA輸出
void _6208_DAOutPut(DWORD?dwAddrint?nChanneldouble?dValue)
{
if(dValue? {
dValue?=?-9.9999999;
}
else?if(dValue?>?9.9999999)
{
dValue?=?9.99

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????666??2009-06-01?10:13??RTX_PCI6208.h

?????文件???????4009??2009-06-17?11:37??RTX_PCI6208.c

-----------?---------??----------?-----??----

?????????????????4675????????????????????2


評論

共有 條評論