【问题标题】:Reading data from serial port using C++/Visual Studio使用 C++/Visual Studio 从串口读取数据
【发布时间】:2012-07-12 10:34:49
【问题描述】:

我正在运行 Windows 7 并使用 Visual Studio 2012 RC。我有一个 USB 设备连接到我的 COM6 端口,并且该设备正在流式传输 ASCII 输出。我想获取这些数据以在我用 C++ 编写的程序中使用。一般来说,我对编程很陌生,所以我有点迷路了。我知道我必须使用某个库,并且我看到正在使用函数 CreateFile,但我似乎无法让它工作。任何帮助将非常感激,谢谢。

编辑:我能够打开端口并检索其基本数据:我可以打印出波特率、位大小、奇偶校验和停止位值。但我需要检索流式 ASCII 数据,这是我迷路的地方。很抱歉没有澄清。

【问题讨论】:

  • 你尝试了什么?请注意,设备名称是这样写的:CreateFile("\\\\.\\COM6", ...。见here
  • 顺便说一句,如果您是编程新手,我不会从这类事情开始,您需要启动一个线程,使用 ReadFile,解析 ASCII 行,并在其他线程之间进行同步。这不是我们所说的“Hello World”:)
  • 我能够打开端口并读取其设置 - 我可以看到波特率、字节大小、奇偶校验和停止位值。我只需要查看它现在应该正在流式传输的 ASCII 数据。
  • 是的,它们仍然以使用虚拟 COM 端口的 USB 转串口转换器的形式存在:amazon.com/TRENDnet-RS-232-Serial-Converter-TU-S9/dp/B0007T27H8
  • 是的,这正是我正在使用的。很抱歉没有澄清这一点。

标签: c++ serial-port


【解决方案1】:

给你:

Serial_Port.h:http://pastebin.com/Hft1zYS3

Serial_Port.cpp:http://pastebin.com/ZzfUujNY

【讨论】:

  • 我试过用这个。我收到此错误: 1>c:\program files\microsoft visual studio 11.0\vc\atlmfc\include\afx.h(24): 致命错误 C1189: #error : Building MFC application with /MD[d] (CRT dll version) 需要 MFC 共享 dll 版本。请#define _AFXDLL 或不要使用 /MD[d] 所以我用谷歌搜索了错误并按照说明进行操作。我去了在属性中使用 MFC 并选择了“在静态库中使用 MFC”。然后我得到一个 LNK1120 错误。 google了一下,还是没有解决。不知道出了什么问题。
  • 没关系,我已经构建好了。但是我在运行时遇到了这个错误:用谷歌搜索它,修复它,让它构建......但在运行时,我得到这个:serialPort.exe 中 0x01BFF782 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000。跨度>
  • 下面是打开端口 (COM3) 并向其写入字符串的 sn-p 代码。抱歉,没有 sn-p 读取端口,而是从端口读取,但这应该是微不足道的。 pastebin.com/bhkRbca3
  • 我怀疑您没有正确打开端口,因为您没有指定正确的 COM 端口号。
  • 谢谢,对我来说似乎是朝着正确方向迈出的一步。然而,使用那个 sn-p,stop_tlm_msg.GetBuffer() 似乎有一个错误;表示 LPWSTR 不能用于初始化 *char 类型的实体。
【解决方案2】:

我建议您使用经过充分测试的完整库。这是我使用的:

http://www.eltima.com/products/serial-activex/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多