串行端口(RS -232)用C ++连接

时间:2013-04-03 17:48:55

标签: c++ serial-port mingw

我使用16位编译器在C ++中完成了串口RS-232连接(我使用的是Turbo C ++ IDE)。它包含头文件bios.h,其中包含从端口读取值所需的所有函数。现在我想使用C ++ 32位Mingw编译器从串口读取值。我使用Dev CPP作为我的IDE。在这里,我找不到bios.h。在Mingw中是否有任何特殊的头文件可用于此目的?我现在使用的是32位编译器,因为在我的大学项目中我使用Exception处理,我猜Turbo C不支持。请帮帮我。

2 个答案:

答案 0 :(得分:39)

请看这里:

1) 您可以将它与Windows(包括MinGW)以及Linux一起使用。另外,您只能使用代码作为示例。

2) 分步教程如何在Windows上使用串口

3) 你可以在MinGW

上使用这个字面意思

这是一些非常非常简单的代码(没有任何错误处理或设置):

#include <windows.h>

/* ... */


// Open serial port
HANDLE serialHandle;

serialHandle = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

// Do some basic settings
DCB serialParams = { 0 };
serialParams.DCBlength = sizeof(serialParams);

GetCommState(serialHandle, &serialParams);
serialParams.BaudRate = baudrate;
serialParams.ByteSize = byteSize;
serialParams.StopBits = stopBits;
serialParams.Parity = parity;
SetCommState(serialHandle, &serialParams);

// Set timeouts
COMMTIMEOUTS timeout = { 0 };
timeout.ReadIntervalTimeout = 50;
timeout.ReadTotalTimeoutConstant = 50;
timeout.ReadTotalTimeoutMultiplier = 50;
timeout.WriteTotalTimeoutConstant = 50;
timeout.WriteTotalTimeoutMultiplier = 10;

SetCommTimeouts(serialHandle, &timeout);

现在您可以使用WriteFile() / ReadFile()来写/读字节。 别忘了关闭你的连接:

CloseHandle(serialHandle);

答案 1 :(得分:1)

对于以上答案,默认串行端口为

        serialParams.BaudRate = 9600;
        serialParams.ByteSize = 8;
        serialParams.StopBits = TWOSTOPBITS;
        serialParams.Parity = NOPARITY;