串口(RS -232) c++中的连接
Serial Port (RS -232) Connection in C++
我使用16位编译器在c++中完成了串口RS-232连接(我使用Turbo c++ IDE)。它包括头文件bios.h
,其中包含从端口读取值所需的所有函数。现在我想从串口读取值使用c++ 32位Mingw编译器。我使用Dev CPP作为我的IDE。这里我找不到bios.h
。在Mingw中有任何特殊的头文件可用于此目的吗?我现在使用32位编译器,因为在我的大学项目中,我必须使用异常处理,我猜在Turbo c中不支持,请帮助我。
请看这里:
- RS-232 for Linux and Windows 1)
- Windows串口编程2)
- 在Visual c++中使用串口3)
- Windows中的串行通信
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);
对于上面的答案,默认的串行端口是
serialParams.BaudRate = 9600;
serialParams.ByteSize = 8;
serialParams.StopBits = TWOSTOPBITS;
serialParams.Parity = NOPARITY;
或者直接使用boost::asio::serial_port
!
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 在 libcurl 连接池中预创建连接
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- libcurl 和 DNS ttl 中的内部连接管理
- 如何应用 libcurl 的持久连接选项
- 提升 ASIO - io_service 不要等待连接到线程
- WinSock2:connect() 提供"连接被拒绝"
- 升压信号2将插槽传递到成员功能以断开连接