Bonjour, je rencontre des difficultés avec l'écriture et la lecture sur mon port série. Lorsque j'essaie d'écrire sur le port série, j'ai l'impression que l'écriture se déroule correctement, mais je n'arrive pas à lire les données par la suite. Ci-dessous se trouve ma classe SerialPortManager.dart.
Mon objectif est d'envoyer une trame pour ping le port serie
Merci d'avance.
import 'dart:async';
import 'dart:convert';
import 'dart:typed_data';
import 'package:libserialport/libserialport.dart';
import '../models/ports.dart';
import 'package:flutter/material.dart';
class SerialPortManager implements Port {
final BuildContext context;
SerialPort? _port;
final SerialPortConfig _config = SerialPortConfig();
SerialPortManager(this.context);
@override
Future<void> connect(String portName) async {
try {
_port = SerialPort(portName);
_config.baudRate= 115200;
_config.bits = 8;
_config.stopBits = 1;
_config.parity = SerialPortParity.none;
_port?.config = _config;
_port!.open(mode: SerialPortMode.readWrite);
showInformationDialog(context, "Port série connecté : $portName");
} catch (e) {
showInformationDialog(context, "Erreur lors de la connexion au port série : $e");
}
}
@override
Future<void> disconnect() async {
try {
if (_port != null) {
_port!.close();
showInformationDialog(context, "Port série déconnecté");
}
} catch (e) {
showInformationDialog(context, "Erreur lors de la déconnexion du port série : $e");
}
}
@override
Future<String?> readData() async {
try {
if (_port != null) {
Uint8List data = _port!.read(100); // Ajoutez une limite de temps pour la lecture
String receivedData = utf8.decode(data);
showInformationDialog(context, "Données lues depuis le port série : $receivedData");
return receivedData;
} else {
showInformationDialog(context, "Le port série n'est pas connecté.");
return null; // Retourner null si le port n'est pas connecté
}
} catch (e) {
showInformationDialog(context, "Erreur lors de la lecture des données du port série : $e");
return null; // Retourner null en cas d'erreur
}
}
@override
Future<void> writeData(String data) async {
try {
if (_port != null) {
_port!.write(Uint8List.fromList(utf8.encode(data)));
showInformationDialog(context, "Données écrites avec succès sur le port série : $data");
} else {
showInformationDialog(context, "Le port série n'est pas connecté.");
}
} catch (e) {
showInformationDialog(context, "Erreur lors de l'écriture des données sur le port série : $e");
}
}
Future<void> ping() async {
try {
// Envoyez la commande de ping (trame)
await commande(Uint8List.fromList([0xA2, 0x00, 0xB4, 0xBF, 0x08, 0x4E, 0xA1]));
// Lisez la réponse
String? reponse = await readData();
if (reponse != null) {
showInformationDialog(context, "Réponse du ping : $reponse");
} else {
showInformationDialog(context, "Aucune réponse du ping.");
}
} catch (e) {
showInformationDialog(context, "Erreur lors du ping : $e");
}
}
Future<void> commande(Uint8List data) async {
try {
// Assurez-vous que _port est initialisé correctement.
if (_port != null) {
_port!.write(data);
showInformationDialog(context, "Données écrites avec succès sur le port série : $data");
} else {
showInformationDialog(context, "Le port série n'est pas connecté.");
}
} catch (e) {
showInformationDialog(context, "Erreur lors de l'écriture des données sur le port série : $e");
}
}
// Remplacez les print par cette fonction
void showInformationDialog(BuildContext context, String message) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
width: 300,
backgroundColor: Colors.white.withOpacity(0.5),
content: Text(message, style: TextStyle(color: Colors.black)),
duration: Duration(seconds: 2),
behavior: SnackBarBehavior.floating,
),
);
}
}
Bonjour, je rencontre des difficultés avec l'écriture et la lecture sur mon port série. Lorsque j'essaie d'écrire sur le port série, j'ai l'impression que l'écriture se déroule correctement, mais je n'arrive pas à lire les données par la suite. Ci-dessous se trouve ma classe SerialPortManager.dart. Mon objectif est d'envoyer une trame pour ping le port serie Merci d'avance.