Флаттер: как отправлять пакеты как tcp клиент - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь подключиться к ретрансляционному устройству HHC-NET2D.

Это устройство позволяет подключаться к tcp-клиенту. Я не нашел решения, с помощью которого я могу отправить параметры на устройство. Если кто-то знает рекомендуемый способ установить соединение через tcp-клиент и отправить параметры, это будет полезно.

Поддержка
1. Поддержка TCP-сервера, TCP-клиента, UDP
2. Поддержка 4 клиентских подключений на TCP-сервере. Предположим, что локальный порт 5000. Порт 5000 может быть подключен к TCP-клиенту.
3. Поддержка протокола TCP MODBUS.

Управляющая команда
5. Направление " on1 " на HHC-NET2D включит Первое реле .
6. При отправке " on2 " на HHC-NET2D включится Второе реле .
7. При отправке « off1 » на HHC-NET2D включится Первое реле .
8. Направление " off2 " на HHC-NET2D включит Второе реле .

Подробнее здесь: https://es.aliexpress.com/item/32358735415.html

import 'dart:io';
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomeApp(),
    );
  }
}

class HomeApp extends StatefulWidget {
  @override
  _HomeAppState createState() => _HomeAppState();
}

class _HomeAppState extends State<HomeApp> {
  Socket socket;
  String name;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(name == null ? 'NO CONNECTED' : name),
      ),
      body: Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              child: Text('Connect'),
              onPressed: (){
                connect();
              },
            ),
            RaisedButton(
              child: Text('Send Data'),
              onPressed: (){
                sendData();
              },
            )
          ],
        ),
      ),
    );
  }

  // Socket connection
  void connect() {
    Socket.connect("ipHere", portHere).then((Socket sock) {
      socket = sock;
      socket.listen(
          dataHandler,
          onError: errorHandler,
          onDone: doneHandler,
          cancelOnError: false
      );
    });
  }
  void dataHandler(data){
    setState(() {
      name = new String.fromCharCodes(data).trim();
    });
  }
  void errorHandler(error, StackTrace trace){
    print(error);
  }
  void doneHandler(){
    socket.destroy();
  }
  void sendData(){
    //socket.write(...)
  }
}

1 Ответ

1 голос
/ 27 октября 2019

Сначала создайте строковую переменную с сообщением, которое вы хотите отправить.

И в вашем коде обновите это:

socket.write(HERE_STRING_MESSAGE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...