windows - 如何使用 Win32 API 与 com 端口 (RS232) 通信

标签 windows winapi serial-port

我正在尝试使用 win32 API 与 com 端口通信 我找到了这个 http://www.robbayer.com/files/serial-win.pdf

hSerial = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

我使用 VS2008,它提示 错误 C2664:“CreateFileW”:无法将参数 1 从“const char [5]”转换为“LPCWSTR”

好吧,我猜它不喜欢“COM1”是char*类型,

我尝试将其转换为 LPCWSTR("COM1"),然后编译没有问题。

但是,它返回“ERROR opening serial port -1”,所以没有成功找到com口。我猜直接类型转换不是正确的方法?

请告诉我应该怎么做才能完成这项工作。

msdn 没那么有用 http://msdn.microsoft.com/en-us/library/ms810467.aspx

我不知道那里的“gszPort”是什么意思

最佳答案

尝试 _T("COM1") 而不是 LPCWSTR("COM1")。它叫做Generic-Text Mapping .我实际上不知道这是否是问题所在,但使用 _T 是解决问题的正确方法。

此外,当 Windows API 调用返回错误条件(如 -1)时,您可以使用 Last-Error Code (using GetLastError and FormatMessage)以获得更详细的错误描述。

关于windows - 如何使用 Win32 API 与 com 端口 (RS232) 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345077/

相关文章:

Java、Mac 操作系统、Windows 和 Linux

windows - Metro 风格应用程序使用鼠标滚轮水平滚动

c++ - Arduino Nano:使用串行输入时,通过计时器进行的A4988步进控制不稳定

c# - 在Linux上进行串行端口编程的语言/框架

linux - 串口不可用arduino

windows - 为Windows实现个人防火墙,如何判断数据包属于哪个应用程序?

调用多个 _popen 失败

c++ - Win32 临界区与互斥性能

c++ - 为什么在 C++ 中我们使用 DWORD 而不是 unsigned int?

c# - 隐藏扫描仪进度条窗口