如何在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,所以我认为我不需要任何帮助。
您应该使用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