如何在c#中进行这些调用

本文关键字:调用 | 更新日期: 2023-09-27 18:07:33

谁能告诉我如何在Windows 8下使用c#进行这些调用?

正如我所理解的,我需要一个设备驱动程序,我可以从我的应用程序调用。如果有其他方法可以达到同样的目的,我将非常感谢您的建议。

如果你想知道它是用来控制硬件看门狗定时器的

感谢
#include “math.h”
#include “stdio.h”
#include “dos.h”
#define SIO_INDEX    0x4E       /* or index = 0x2E  */
#define SIO_DATA     0x4F       /* or data  = 0x2F  */
/* Example */
void main()
{
outportb(SIO_INDEX, 0x87);  /* SIO - Enable */
outportb(SIO_INDEX, 0x87); 
outportb(SIO_INDEX, 0x07);  /* LDN - WDT */
outportb(SIO_DATA,  0x07); 
outportb(SIO_INDEX, 0x28);  /* GPIO12/WDTRST# function select */
outportb(SIO_DATA,  0x00);  /* The pin function is WDTRST#    */
outportb(SIO_INDEX, 0x30);  /* WDT - enable */
outportb(SIO_DATA,  0x01);  
outportb(SIO_INDEX, 0xF0);  /* WDOUT - enable */
outportb(SIO_DATA,  0x80);  
outportb(SIO_INDEX, 0xF6);  /* WDT - Timeout Value: 5sec */
outportb(SIO_DATA,  0x05);  
outportb(SIO_INDEX, 0xF5);  /* WDT - Configuration */
outportb(SIO_DATA,  0x31);  
outportb(SIO_INDEX, 0xAA);  /* SIO - Disable */

编辑

我在这里找到了一个很好的解释,它有助于理解所有十六进制数字在与outportb()一起使用时的含义,Hogan的答案显示了如何将数据发送到端口。

http://retired.beyondlogic.org/serial/serial.htm # 12

然而,我仍然不清楚如何将SIO_INDEX 0x4E(我假设它是WDT的端口地址)转换为SerialPort名称。我将检查设备配置设置,看看是否有任何东西在那里显示端口地址,但目前不在设备附近这样做。

顺便说一句,我已经广泛使用了SerialPort API,所以我认为我不需要任何帮助。

如何在c#中进行这些调用

您应该使用SerialPort.Write。

你的代码看起来像这样:

myport = new SerialPort();
myport.PortName = SetPortName( /* value here */);
myport.BaudRate = SetPortBaudRate( /* value here */);
myport.Parity = SetPortParity( /* value here */);
myport.DataBits = SetPortDataBits( /* value here */);
myport.StopBits = SetPortStopBits( /* value here */);
myport.Handshake = SetPortHandshake( /* value here */);
myport.Open();
byte[] buff = new byte[2];
wBuff[0] =  0x87;
wBuff[1] =  0x87;
myport.Write(wBuff, 0, 2);

参见microsoft文档:http://msdn.microsoft.com/en-us/library/ms143551(v=vs.110).aspx

下面是一些很好的示例代码:http://www.helloapps.com/MF/SPL/cs_serial/serialport_sample2.html