我正在开发一个flutter destop应用程序,它必须从esp 32板读取串行输入。我使用flutter_libserialport包。读取是空的。当我使用端口读取器进行流式传输时,我只得到[0]s,而当我使用port.read(缓冲区)时,我只得到一堆返回值[0,0,0,.]中的零。
这是我第一次使用这个库,我还没有找到关于它的任何适当的文档。这可能是一个配置问题,但我不知道如何进行配置。
我能够让它工作的唯一方法是首先使用Arduino IDE的串行监视器或使用pyserial库的python脚本从端口读取;关闭那里的连接,然后在我的应用程序中读取端口。
代码示例:
void startListening() {
if(_selected?.isOpen == true){
print("selection was open. Closed successful = ${_selected?.close()}");
}
_selected?.config = SerialPortConfig()..baudRate = 9600;
if(_selected?.open(mode: 3) != true){
print("=============> Something went wrong");
print(_selected == null ? "selected is null": SerialPort.lastError);
} else {
// final data = await _selected?.read(128, timeout: 200);
// print("=======> data");
// print(String.fromCharCodes(data!));
// _selected?.close();
final reader = SerialPortReader(_selected!);
reader.stream.listen((event) {
print("============> onData: ${_selected?.name}");
print("$event => ${String.fromCharCodes(event)}");
}, onError: (error, stackTrace){
print("error: $error");
print("stackTrace: $stackTrace");
}, onDone: (){
_selected!.close();
},);
}
}
字符串
样本输出:
x1c 0d1x的数据
2条答案
按热度按时间kupeojn61#
在你设置配置之前,你应该先打开你的串口。像这样
字符串
或者,配置将不起作用。
pbossiut2#
我无法使用flutter_libserialport本身解决这个问题。
我使用flython包用Python脚本打开和关闭端口,然后用flutter_libserialport再次打开端口。