【问题标题】:boost::asio::serial_port and RTS pinboost::asio::serial_port 和 RTS 引脚
【发布时间】:2015-02-12 23:19:05
【问题描述】:

我想使用 c++ 程序控制仪器操作。

如何使用 boost asio 库将 RTS 引脚设置为逻辑真或逻辑假?这是一个 RS-232 串行端口。

【问题讨论】:

  • Boost 不能胜任这项工作,编写跨平台代码总是涉及偷工减料。您需要使用 OS api 来执行此操作。不要保密。
  • 这是否意味着 boost asio 库无法手动操作串行电缆上的引脚/信号?

标签: c++ boost serial-port boost-asio


【解决方案1】:

我最终使用 windows api(特定于操作系统)的方法来解决我的问题。

#include <iostream>

#include <cstdlib>
#include <string>
#include <windows.h>

namespace comm{

class rs232
{
  const HANDLE commDevice;
  const DWORD clear_RTS = 4;
  const DWORD set_RTS = 3;

public:
  rs232( HANDLE commDeviceIn ): commDevice(commDeviceIn)  {}
  rs232( std::string commName )
      : commDevice(CreateFileA(commName.data(),
                               GENERIC_READ | GENERIC_WRITE,
                               0,
                               0,
                               OPEN_EXISTING,
                               FILE_FLAG_OVERLAPPED,
                               0))  {}

  void send_RTS_signal( void ) {
      EscapeCommFunction( commDevice, set_RTS );
  }
  void clear_RTS_signal( void ) {
      EscapeCommFunction( commDevice, clear_RTS );
  }
};

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2012-03-28
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多