微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Modbus TCPIP flutter/dart 异常错误

如何解决Modbus TCPIP flutter/dart 异常错误

我想开发一个应用程序,用于从具有 modbus TCP /IP 的设备请求一些数据。我使用颤振来创建它,但我有一个错误

E/Flutter (7330): [ERROR:Flutter/lib/ui/ui_dart_state.cc(166)] 未处理的异常: NoSuchMethodError: The method 'add' was called on null

附件中有苍蝇......你愿意帮助我吗? 任何帮助都会非常有用....

谢谢!!!!

main.dart
import 'package:primo_schermo/Schermi.dart';
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.dark(),home: MyHomePage(title: 'Flutter Demo Home Page'),debugShowCheckedModeBanner: false,);
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key,this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    initScreen();
  }

  @override
  void dispose() {
    super.dispose();
    releaseResource();
  }

  build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.red,title: new Text(' XT MONITOR'),),body: OrientationBuilder(builder: (context,orientation) {
        if (orientation == Orientation.portrait) {
          return potraitFirstScreen(context);
        } else {
          return landscapeFirstScreen(context);
        }
      }),);
  }
}

  
Schermi.dart

import 'package:Flutter/material.dart';
import 'package:Flutter/rendering.dart';
import 'package:Flutter/services.dart';
import 'package:modbus/modbus.dart' as modbus;

String address = '127.0.1.1';
int port = 400;

bool verifylenghtport = false;
bool verifylenghtaddr = false;

//UserModbus userModbus;
TextEditingController usraddress = TextEditingController();
TextEditingController usrport = TextEditingController();

Widget landscapeFirstScreen(BuildContext context) {
  return Container(
    child: ListView(
      children: <Widget>[
        // logo DKC

        Container(
          height: MediaQuery.of(context).size.height * 0.25,width: MediaQuery.of(context).size.width * 0.2,decoration: Boxdecoration(
            image: decorationImage(
              image: Assetimage('images/Dkc.png'),fit: BoxFit.cover,// Textfield insert  ip

        Container(
          child: Padding(
            padding: const EdgeInsets.all(2.0),child: TextField(
              textAlign: TextAlign.center,decoration: Inputdecoration(
                enabledBorder: OutlineInputBorder(
                  borderSide: BorderSide(
                    color: Colors.redAccent,borderRadius: BorderRadius.circular(8.0),hintText: "Insert IP UPS Address...",keyboardType: TextInputType.number,inputFormatters: <TextInputFormatter>[
                FilteringTextInputFormatter.allow(RegExp(r'[0-9.]')),],controller: usraddress,onChanged: (text) {
                if (usraddress.text.length > 4) {
                  verifylenghtaddr = true;
                } else {
                  verifylenghtaddr = false;
                }
              },SizedBox(
          height: MediaQuery.of(context).size.width * 0.02,// Textfield insert  port
        Container(
          child: Padding(
            padding: const EdgeInsets.all(2.0),hintText: "Insert Port...",controller: usrport,onChanged: (text) {
                if (usrport.text.length == 3) {
                  verifylenghtport = true;
                } else {
                  verifylenghtport = false;
                }
              },Row(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
          ButtonTheme(
            minWidth: MediaQuery.of(context).size.width * 0.98,height: MediaQuery.of(context).size.height * 0.13,child: FlatButton(
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(18.0),side: BorderSide(color: Colors.red)),color: Colors.black,textColor: Colors.red,padding: EdgeInsets.all(10.0),onpressed: enableconnectionbutton() ? connectUPS : null,child: Text(
                "Connect".toupperCase(),style: TextStyle(
                  fontSize: 14.0,]),);
}

/*
 *  Widget portratit 
 *  
 */

Widget potraitFirstScreen(BuildContext context) {
  return Container(
    child: ListView(
      children: <Widget>[
        Container(
          height: MediaQuery.of(context).size.height * 0.45,width: MediaQuery.of(context).size.width * 0.35,Container(
          child: Padding(
            padding: const EdgeInsets.all(8.0),borderRadius: BorderRadius.circular(10.0),SizedBox(
          height: MediaQuery.of(context).size.width * 0.1,SizedBox(
          height: MediaQuery.of(context).size.width * 0.04,children: <Widget>[
          ButtonTheme(
            minWidth: MediaQuery.of(context).size.width * 0.89,height: 20,);
}

void initScreen() {
  
 
  usraddress.addListener(remCharaddr);
  usrport.addListener(remCharPort);
}

void remCharPort() {
  String cr = "\r";
  final text =
      usrport.text.replaceAll("-","").replaceAll(",","").replaceAll(cr,"");

  usrport.value = usrport.value.copyWith(
      text: text,selection:
          TextSelection(baSEOffset: text.length,extentOffset: text.length),composing: TextRange.empty);
}

void remCharaddr() {
  String cr = "\r";
  final text = usraddress.text
      .replaceAll("-","")
      .replaceAll(","")
      .replaceAll(cr,"");

  usraddress.value = usraddress.value.copyWith(
      text: text,composing: TextRange.empty);
}

void releaseResource() {
  usraddress.dispose();
  usrport.dispose();
}

void connectUPS() {
  //userModbus.address = usraddress.text;
  address = usraddress.text;
  port = int.parse(usrport.text);

  //print("Address:" + userModbus.address);
  //print("Port:" + userModbus.port.toString());

  //connect(userModbus.address,userModbus.port);
  connecttoUPS(address,port);
}

bool enableconnectionbutton() {
  if (verifylenghtaddr && verifylenghtport) {
    return true;
  } else {
    return false;
  }
}

void connecttoUPS(String address,int porta) async {
  //int error = 0;

  //String ip = '127.0.0.1';
  //int p = 502;

  var client =
      modbus.createTcpClient(address,port: porta,mode: modbus.ModbusMode.rtu);
  try {
    await client.connect();
  } finally {
    var registers = await client.readInputRegisters(0x0006,4);
    for (int i = 0; i < registers.length; i++) {
      print("REG_I:" + registers.elementAt(i).toString());
    }
  }
  client.close();
}

    


    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?