主板的供应商提供了个demo 请问里面的outportb我怎么在c#中使用
unsigned char ReadSMBusByte(unsigned int SAddr, unsigned int Reg)
{
unsigned long SMB_BASE = 0x400;
unsigned long i = 0xFFFF;
unsigned char buffer = 0x00;
outportb((SMB_BASE+0x00), 0xFE); //Reset Host Status
Registers.
delay(10);
outportb((SMB_BASE+0x03), Reg); //index,Host Command
Register.
delay(10);
outportb((SMB_BASE+0x04), (SAddr|BIT0)); //Read Command.
delay(10);
outportb((SMB_BASE+0x02), 0x48); //Byte Access,Host
Control Register.
delay(10);
while(i<0) {
buffer = inportb(SMB_BASE+0x00);
if(buffer&BIT2) { //error? bit2.
return 0;
break;
} else if(!(buffer&BIT0)) {
//busy?
if(buffer&BIT1) { //interrupts?
outportb((SMB_BASE+0x00), buffer);
//Successful,Reset Host Status Register.
break;
}
else
i--;
}
} buffer =
inportb(SMB_BASE+0x05); //DATA0
delay(10);
return buffer;
}//ReadSMBusByte
unsigned char ReadSMBusByte(unsigned int SAddr, unsigned int Reg)
{
unsigned long SMB_BASE = 0x400;
unsigned long i = 0xFFFF;
unsigned char buffer = 0x00;
outportb((SMB_BASE+0x00), 0xFE); //Reset Host Status
Registers.
delay(10);
outportb((SMB_BASE+0x03), Reg); //index,Host Command
Register.
delay(10);
outportb((SMB_BASE+0x04), (SAddr|BIT0)); //Read Command.
delay(10);
outportb((SMB_BASE+0x02), 0x48); //Byte Access,Host
Control Register.
delay(10);
while(i<0) {
buffer = inportb(SMB_BASE+0x00);
if(buffer&BIT2) { //error? bit2.
return 0;
break;
} else if(!(buffer&BIT0)) {
//busy?
if(buffer&BIT1) { //interrupts?
outportb((SMB_BASE+0x00), buffer);
//Successful,Reset Host Status Register.
break;
}
else
i--;
}
} buffer =
inportb(SMB_BASE+0x05); //DATA0
delay(10);
return buffer;
}//ReadSMBusByte
C#的库函数一般都是在C#的库中,就是using的东西。
如果你要使用这个函数,那么你最好找到这个函数在哪个DLL中,就像调用windows API一样,先要使用import来申明一下,然后使用。以上为我个人猜想,没有去试过写主板的东西。仅供参考。