C中的Outport / outportb与C ++中的TransmitCommChar

时间:2014-09-19 07:02:58

标签: c++ c c++builder

我有一个控制燃油喷射装置的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输出/输出端口吗?你能建议一个更好的方法来实现它吗?

谢谢

0 个答案:

没有答案