Bonjour à tous et à toutes je vous souhaite d'abord une agréable année
je suis un peu sec, j'essai de communiquer entre mon raspberry PI pico et mon transceiver FT991A de chez YEASU afin de recuperer la frequence en cours sur le transceiver
Pour cela, j'utiliser le coeur 1 du pico avec j'utilise le serial1
declaration des variables
unsigned int caract; // Caractère reçu sur le port Serie
unsigned int rx_data[15]; // Chaîne de caractères reçus sur le port Serie
//const char rx_data[15] ;
unsigned int byte_pos = 0; // Position du caractère lu sur la chaîne de caractères
const char tx_data[] = "FA;"; // La syntaxe du message de requête de fréquence
// Fonction d'initialisation du deuxième coeur du Pico, style Arduino, exécutée une seule fois à la mise sous tension
void setup1()
{
// Serial.begin(9600); // Port debug USB. Activer seulement pour déboguer
Serial1.begin(4800, SERIAL_8N2); // Port série connecté au transceiver (protocole CI-V)
Serial1.write(tx_data, sizeof(tx_data)); // Envoi du message
}
// Cette boucle du deuxième coeur monitore la fréquence du transceiver et signale au premier coeur un changement de fréquence
void loop1()
{
// Gestion des messages CI-V de fréquence courante du transceiver. Signale lorsque les MHz de la fréquence changent
//if (Serial1.available()) // Octet(s) disponible en tampon du port CI-V?
//{
// Envoi d'une requête initiale de fréquence. Si pas de réponse obtenue, les antennes en EEPROM seront applicables.
//const char tx_data[] = "FA;"; // La syntaxe du message de requête de fréquence
//const char freq_recu;
if (Serial1.available()) // Octet(s) disponible en tampon du port CI-V?
{
rx_data[byte_pos] = Serial1.read(); // Oui, le(s) lire
Serial.print(" valeur de byte_pos : " );
Serial.println(byte_pos);
Serial.println(" ");
Serial.print(" valeur du bit dans le tampon : " );
Serial.println(rx_data[byte_pos]); // Afficher les octets reçus pour fins de déboggage
Serial.println(" ");
if (byte_pos <11)
{
byte_pos++;
Serial1.write(tx_data, sizeof(tx_data)); // Envoi du message
}
else
{
byte_pos = 0;
Serial1.write(tx_data, sizeof(tx_data)); // Envoi du message
}
}
j'essai deja de recuperer la valeur renvoyée avant de lire la fréquence et cela ne fonctionne pas
voici un imprim ecran de la commande à envoyer pour interroger la frequence "FA;"
le transceiver répond "FA28074000;"
Merci de votre aide