与Windows XP / win32串行通信的基本示例

时间:2008-10-26 03:39:36

标签: windows winapi serial-port

我正在使用需要通过串行通信的外围设备。我可以使用HyperTerminal发送命令,但现在我需要编写程序,让我在没有HyperTerminal的情况下完成它。有人能指点我到一个网站和/或给我看一个示例你好世界计划让我开始吗?我搜索了许多网站,这些网站给我提供了无法编译/古老的VC6代码。

5 个答案:

答案 0 :(得分:6)

要与串行端口连接,请打开一个文件,其中包含一个特殊文件名“COM1”到“COM9”。对于数字较大的串口,特殊文件名以\\?\开头,在C / C ++代码中必须以“\\\\?\\ COM10”等转义。

http://msdn.microsoft.com/en-us/library/ms810467.aspx有一个关于使用串口的非常好的教程。请注意,您应该使用Windows文件I / O函数,例如CreateFile()ReadFile()WriteFile()。我不确定它是否可以使用标准I / O函数,例如fopen()fread()fwrite()

答案 1 :(得分:4)

Microsoft提供an article with sample code描述如何在Win32下执行此操作。

答案 2 :(得分:1)

Boost:asio可能会在最近添加串行设备时提供帮助。

虽然公平警告;串口文档是 light ,大概是因为它很新(它是在asio 1.1.1中添加的,它包含在boost 1.36中)。

但是,通过asio工作是恕我直言,比使用原始Win32 API更好的解决方案。为什么?它将更容易阅读和维护(它是更高级别的API),它将是跨平台的(除非您需要指定特定于操作系统的设备名称)。

Boost - Usersasio.user邮件列表非常活跃且友好,如果您遇到问题,应该能够帮助您。

答案 3 :(得分:1)

如果使用.NET 2.0,请参阅System.IO.Ports和this article应该会有所帮助。如果是直接Win32,那么Adam's answer是最好的。

答案 4 :(得分:0)

我相信你会发现很多C#的示例代码,如果你发现VC6太古老了。我认为还有一堆“免费”的串口/ COM端口包装器,但是当我编写RS232设备控制器软件时,我只是写了自己的。

谷歌C#和串口或rs232

我得到了这些:

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx

使用Google搜索找到合适的代码应该没问题。