我有一个控制燃油喷射装置的DOS程序的源代码。我想重写它以使其在Windows下工作。 DOS程序初始化通信:
void port_initialization()
{
outportb(port+3,0x9F);
outport(port,speed);
outportb(port+3,0x1F);
outportb(port+1,0);
outportb(port+4,0);
outportb(port+2,7);
}
在标题中:
int port=COM1,speed=6;
我认为速度6是一些内部设备设置,它将波特率设置为特定值。我想在Windows 7中发送相同的东西(使用c ++ builder)。我知道不再支持直接硬件访问,我想绕过它。 以下是我想到的示例代码:
void port_initialization()
{
HANDLE hCom;
DCB dcb;
BOOL fSuccess;
hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
fSuccess = GetCommState(hCom, &dcb);
dcb.BaudRate = CBR_115200; //These are sample values, I will use an oscilloscope to read real ones
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
fSuccess = SetCommState(hCom, &dcb);
TransmitCommChar(hCom,0x9F);
TransmitCommChar(hCom,6);
TransmitCommChar(hCom,0x1F);
TransmitCommChar(hCom,0);
TransmitCommChar(hCom,0);
TransmitCommChar(hCom,7);
}
现在我的主要问题是 - WIN32 TransmitCommChar可以用我替换它的方式替换DOS输出/输出端口吗?你能建议一个更好的方法来实现它吗?
谢谢