有谁能告诉我如何在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,所以不要认为我需要任何帮助。
答案 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