Flutter - `serialPort.open()` Cause Exception: `Last Error is 0`

问题描述 投票:0回答:0

我编写了一个代码,使用库

serial_port_win32
.

将字符串数据从 Flutter Windows 应用程序发送到 Arduino Nano

这里是相关的Flutter Dart代码:

void sendData() {
  final List<String> listPorts = SerialPort.getAvailablePorts();

  if(listPorts.contains("COM5")) {
    final serialPort = SerialPort("COM5", openNow: false, BaudRate: 9600);
    serialPort.open();

    if(serialPort.isOpened) {
      serialPort.writeBytesFromString("HELLO");
      serialPort.close();
    }
  }
}

void main() {

  WidgetsFlutterBinding.ensureInitialized();
  WidgetsBinding.instance.addPostFrameCallback((_) {
    sendData();
  });

  runApp(const MainApp());
}

这里是相关的 Arduino C 代码:

#include "logic/logic.h"
#define LED1 4

void setup() {
  pinMode(LED1, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    String msg = Serial.readString();
    string2Morse(LED1, msg.c_str());
  }
}

我使用 USB 端口将我的 Arduino Nano 设备连接到计算机,串行端口

COM5
在 Arduino 中可用。我尝试使用串行端口
"HELLO"
将字符串
COM5
发送到 Arduino,并通过 LED 将消息转换为摩尔斯电码。

调用函数

serialPortopen()
导致此异常:

Exception: Last error is 0

奇怪,因为在Win32中,如果

GetLastError()
返回0,说明程序成功。我在 Google 和 ChatGPT 上进行了研究,但没有得到任何令我满意的答案。

感谢您提供任何有助于我解决问题的线索或信息。

flutter dart arduino serial-port
© www.soinside.com 2019 - 2024. All rights reserved.