0

現在、Modbus/TCP を使用して PLC と通信しようとしていますが、PLC によって送信された Modbus フレームを読み取ることができると思っていても、Modbus 応答をポート 502 に送信し、使用するストリームを PLC が使用するポートに送信する必要があります。フレームを送ります。受信と送信に 2 つのストリームを使用しようとしましたが、最初のストリームを閉じると、PLC はそれをタイムアウト通信として取得し、2 番目の接続を拒否します。それがあなたを助けることができるなら、私が使用するコードはここにありますが、今のところ、接続をテストできるようにする以外はほとんど何もしません.

#define _WIN32_WINNT 0x0501

#include <iostream>
#include <boost/asio.hpp>
#include <boost/system/config.hpp>
#include <string>

using namespace std;
using boost::asio::ip::tcp;


int main()
{
    boost::asio::io_service io_service;

    tcp::endpoint endpoint(tcp::v4(), 502);
    tcp::acceptor acceptor(io_service, endpoint);

    while (1)
    {
        int i =0;
        string buff;
        char buf[30];
        tcp::iostream stream;
        tcp::iostream s("192.168.10.150", "502");
      acceptor.accept(*stream.rdbuf());
      getline(stream, buff);
          cout<<buff<<endl;
        s <<buff;
    }
}

何か提案があれば。

4

0 に答える 0