我编写了一个代码,使用库
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 上进行了研究,但没有得到任何令我满意的答案。
感谢您提供任何有助于我解决问题的线索或信息。