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

时间:2014-06-08 03:37:19

标签: c# watchdog

有谁能告诉我如何在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名称。我将检查设备配置设置,看看那里是否有任何东西显示端口地址,但目前不在设备附近。

BTW我已经广泛使用了SerialPort API,所以不要认为我需要任何帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用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