Détection de données sur un port Série

Bonjour,
Je voulais savoir si il était possible de détecter l'arrivé de donnée sur un port série afin de pouvoir les lire directement sans continuellement tester le buffer du port, une sorte d'interuption en fait.
Cordialement
Nathan
P.S.: Bonne Année à tous
Résolu !
Accéder à la solution.

Et vu que je viens de poser la question, la réponse m'apparait d'elle même ^^
Ca peut etre fait grace a la propriété Bytes at Port
Cordialement
Nathan

Similar Messages

  • Pointer un fichier et l'nevoyer sur le port série

    Bonjour,
    Dans le cadre d'un stage, je dois creer via Labwindows une interface homme/cartePIC. C'est la première fois que j'utilise le logiciel Labwindows et je dois avouer que j ai un peu de mal a m'en sortir !
    J'aurais voulu savoir si vous pouvez m aider car j'aurais voulu faire un programme qui pointe un fichier texte et qui l'envoi ensuite sur le port série quand celui-ci l'attend. Si vous pouvez me donner des indications! En vous remerciant par avance de votre aide !
    Romes

    Bonjour Romes,
    Merci d'avoir posté sur le forum des utilisateurs National Instruments. Si vous débutez avec LabWindows/CVI, je vous invite à consulter les exemples de code. Ceux-ci sont accessible au travers de l'outil de recherche d'exemple (NI Example Finder), que vous pouvez aller chercher dans le menu Help » Find Examples... Convernant la communisation série, consultez l'exemple disponible dans la rubrique Hardware Input and Output » Serial » serial.cws
    Vous avez également une fonction de la librairie RS-232 qui vous permet de lire un fichier et d'en envoyer le contenu sur le port série:
    int ComFromFile (int Port_Number, int File_Handle, int Count, int Termination_Byte); 
    J'espère que ces éléments pourrons vous aider.
    Cordialement, 
    .mrLeft{float:left} .mrInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898}
    Mathieu R.  
      CTD - Certified TestStand Developer / Développeur TestStand Certifié  
      CLAD - Certified LabVIEW Associate Developer  

  • Comment detecter avec LabView une impulsion sur le port série et traiter l'information?

    Je dois automatiser un banc de test avec LabView 7.0. Pour cela il faut que je récupère une impulsion (1 bit, pas de trame) provenant de la carte à tester. Je dois la récupérer via le port série du PC. Je ne sais comment faire, aidez-moi svp.

    Bonjour,
    Dans LabView, il existe un noeud de propriété visa qui permet de récupérer l'état de certaine line du port serie.
    Pour cela, tu vas dans la palette de fonction Visa>Visa Avancé>Noeud de propriété.
    Une fois le noeud posé sur le diagramme, tu choisis la ligne dont tu veux vérifier l'état.
    Voir lien ci dessous.
    http://digital.ni.com/public.nsf/websearch/022A3C75A1F36DFF86256E6200705996?OpenDocument
    Johan G.
    NIF
    .NIDays2008 {font-family:Arial, Helvetica, sans-serif; font-size:12px; color: #065fa3; font-weight: bold; text-decoration: none; text-align: right;} .NIDays2008 a, a:hover {text-decoration: none;} .NIDays2008 a img {height: 0; width: 0; border-width: 0;} .NIDays2008 a:hover img {position: absolute; height: 90px; width: 728px; margin-left: -728px; margin-top:-12px;}
    >> Avez-vous entendu parler de NI Days ?

  • Lecture message redondant sur un port serie rs232

    Bonjour,
    J'ai un système qui m'envoie un message sur le port série toutes les secondes.
    Donc je viens lire le port série toutes les secondes et j'enregistre les messages dans un fichier texte.
    Quand je dépouille le fichier je m'aperçois que des fois j'observe dans le fichier que j'ai 2 fois le même message (or théoriquement c'est impossible).
    Est-ce mon système qui m'envoie 2 fois le même message ou alors il existe une configuration de lecture qui permet ceci ou bien c'est l'écriture dans le fichier qui pose problème et qui peut créer ce phénomène .
    Merci
    Pièces jointes :
    exemple.png ‏115 KB

    Ouverture port série, flush buffer, lecture de 34 octets, écriture sur disque des octets sur une ligne dans fichier texte. Je pense à la lecture du code que c’est l’appareil qui retourne 2 fois les mêmes données.
    Attention à la gestion de l’erreur sur l’écriture dans le fichier texte !
    A+
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

  • Enregistrer 2 ports série en même temps LV 8.5

    Bonjour à tous,
    j' aimerais enregistrer les données de 2 ports série en même temps en utilisant NI VISA, après des recherches je pense qu'une boucle producteur/consommateur serait le bon choix mais je suis débutant en labview et je ne comprend pas comment marche le système de file d'attente, ni qui doit être producteur (est ce qu'il faut 2 boucles en parallèle qui lisent chacune un port série différent et le consommateur est une boucle qui traite et enregistre le tout ?)
    Quelqu'un pourrait il m'aider à débuter ce programme, merci pour tout.

    Un exemple sur le COM1 (paramètre).
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW
    Pièces jointes :
    VISA Read.vi ‏77 KB

  • Comment récupérer avec Labview des données délivrées par un autocollérateur via la port série ( RS232)

    Bonjour à tous,
      J'écris pour solliciter une aide car je dois recupérer avec Labview des données délivrées par un autocollérateur via la port série ( RS232). Sera la bienvenue, des sites, des cours,  des codes ds d'autres langages, tout ce qui peut m'aider.
       Merci d'avance à touste et à tous
    j'attends avec impatiance votre réponse

    Bonjour,
    comme l'a très bien dit "tbob", il existe de nombreux exemples de communication série fourni avec LabVIEW.
    Si vous débutez en LabVIEW, il existe des ressources pédagogiques sur le site de National Instruments qui vous aideront à commencer à programmer avec LabVIEW.
    Ci-joint un lien depuis lequel vous pourrez accéder à ces différents tutoriaux :
    http://www.ni.com/academic/lv_training/how_learn_lv.htm
    De plus, il existe dans le "Developper zone" du site de NI, un grand nombre de bibiothèque de fonctions spécialement dévéloppées pour le contrôle instruments, un grand nombre d'instruments possède sa librairie, peut-être y trouverez vous le votre.
    http://sine.ni.com/apps/we/niid_web_display.drv_search
    En espérant que ces différents liens vous aideront,
    Cordialement,
    Benjamin M
    NIF

  • DAQmx écrire un bit et un seul sur un port numérique à partir d'un tableau

    Bonjour,
    Pour un programme en cour je dois écrire un Bit sur le port 0 (bit 6) d'un DAQ 6341. Cette sortie numérique est l'image de la position d'un interrupteur en face avant.
    La partie écriture et configuration DAQ ne me pose pas de problème et correspond exactement au code situé à cette adresse: https://decibel.ni.com/content/docs/DOC-11139 sauf que pour mon cas les voies physique sont (I/O Line dans le diagramme) déclarées comme suit: Dev1/port0/line6,Dev1/port0/line0,Dev1/port0/line1,Dev1/port0/line2,Dev1/port0/line3,Dev1/port0/line4,Dev1/port0/line5 j'ai donc dans l'ordre pour le port 0 Bit 6, Bit 0 à Bit 5 (cette déclaration m'arrange pour la suite de mon programme).
    J'ai donc cablé en entrée données du VI DAQmx-Ecrire un tableau de booleens a 7 indices mais alors que je ne veux mettre à jour que le bit 6 du port à chaque tour de boucle while forcément à cause du tableau les autres bit du port sont aussi mis à jour alors que ceux-ci sont gérés dans une autre boucle while en parallèle. J'écrase donc les Bits 0 à 5 (dans mon tableau de booleens ces Bits sont à 0).
    Y a t'il un moyen en utilisant exactement la même configuration de voies en entrée pour le VI DAQmx-Ecrire de n'envoyer en donnée que le bit 6 sans pour cela par exemple réaliser un OU logique avec les autres bits du port 0 (je ne désire pas utiliser de variables locales ou tirer de la "tuyauterie" depuis mon autre boucle while qui tourne en parallèle).
    Merci de votre aide.
    Résolu !
    Accéder à la solution.

    Oui c'est bien cela mon problème vient du fait que pour la configuration des sorties numériques il y a plusieurs lignes (voir jpg joint). La configuration des voies sur l'entrée tâche/voies en entrée du VI DAQmx Write provient d'un sous VI que je ne désire pas "casser" (en sortant la configuration de la voie PO.6 sur une seule ligne par exemple).
    Vu la configuration de mes voies je suis obligé de passer un tableau à l'entrée données du VI DAQmx Write ce qui comme tu le soulignes à chaque tour de boucle me réécrit donc mes 7 lignes (tableau de booleen dans la condition vrai) alors que seule m'interesse en fait l'envoit de l'indice 0 de ce tableau (qui correspond au Bit 6 du port 0 selon ma configuration). Les autres indices du tableau je ne voudrai pas qu'ils soient "envoyé" sur le port 0 car ils sont gérés dans une autre boucle et ici dans cette boucle ils sont par défaut à "0".
    Pièces jointes :
    Ecriture_port0.JPG ‏77 KB

  • Lecture sur 2 ports d'une DIO-32-HS sur front descendant d'une horloge ?

    Bonjour,
    Je voudrais effectuer une lecture sur 2 ports, sur front descendant d'une horloge (Je voudrais faire cela sur 2 ports d'une carte DIO-32-HS, sachant que j'ai préalablement configuré ces 2 ports en entrée digitale, puis je les ai groupés. J'ai aussi généré le signal d'horloge à l'aide d'une PCI-6602).
    Ma question ne concerne donc que la lecture sur les 2 ports : comment puis-je la faire sur front descendant de l'horloge ? Je précise que je voudrais réaliser une lecture de la donnée présente sur ces 2 ports, pour CHAQUE front descendant de l'horloge (et envoyer au fur et à mesure les données dans un buffer).
    Merci d'avance pour toute aide.
    Julien

    Bonjour,
    Pour vous aider dans votre développement de programme, je vous conseille d'utiliser les exemples de la bibliothèque CVI, spécialement celui situé au chemin suivant : CVI\Samples\daq\di et il s'appelle DISingleBufExtTrig653x.prj.
    De plus, je vous joins un document très intéressant concernant l'utilisation des cartes DIO. Des exemples en CVI y sont également illustrés.
    Bon courage,
    Cordialement.
    Attachments:
    32HS&6533.pdf ‏147 KB

  • Fréquence d'acquisition de données sur un châssis NI DAQmx

    Bonjour,
    je suis un étudiant en stage. Ma mission consiste à réaliser un système d'acquisition de données sur le logiciel Labview 8.5. J'utilise
    un châssis NI DAQmx équipé d'un controleur PXI 8105 et de 5 cartes série M: 4 cartes 6225 et une carte 6254. J'ai un problème au niveeau de mes
    fréquences d'acquisition. Je n'arrive pas à acquérir des données sur une longue période sans que le système affiche une erreur. L'autre problème
    est la vitesse d'acquisition des données. Etant dans le domaine de haute performance, je dois acquérir des données à des vitesses de l'ordre de 20kHz
    mais mon programme ne tolère pas de vitesse au dessus de 1kHz. Ma vitesse se situe aux alentours d'une centaine de Hz.
    Avez-vous une solution à me proposer?
    Je vous remercie d'avance.

    Bonjour,
    Vous pouvez effectuer le traitement des données dans une boucle séparée de la boucle dédiée à l'acquisition. Ainsi votre traitement lent ne limitera pas l'acquisition.
    Vous pouvez réaliser ceci grâce à une architecture type producteur/consommateur.
    Vous pouvez trouver des exemples de cette architecture dans Aide>>Recherche d'exemple.. ainsi que des templates de projet pour cette architecture.
    Cordialement,
    Isabelle G.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • Est-il possible de connecter un téléphone VoIP sur un port LAN de Time Capsule ?

    Est-il possible de connecter un téléphone VoIP sur un port LAN de Time Capsule ? Genre Gigaset A 510 IP ou C 610 IP.

    Paolo,
    Tu as completement raison... 
    J'ai des problemes de visions qui agissent differemment de temps a autre.   
    Oui..  ce sont des partis completement independents, donc sans limitations...
    Je remet ma "patch" noir sur mon oeil..    
    Desole' pour la confusion..
    R

  • I have 2 new computers and they don't have com ports, how to diag?

    I have 2 new computers and they don't have com ports only lpt
    and usb . what soft can i use for TIP connection . Or I need to buy
    one more with com port. Please , give me advice .I dont have video.I tryed different monitors with coneckor.any effect.

    Hello,
    please review the following thread
    ultra 10 remote access
    I would recommend that you either get a PCMCIA card that provides a serial port, a USB-to-Serial converter or just "lent" a system with a serial port. Usually current notebooks aren't equipped with a serial port.
    The TIP connection works only if the network is configured (after the operating system is loaded).
    What type of system you are trying to diagnose ?
    Michael

  • Je n'arrive pas à sauvegarder mes données sur iCloud. Avez vous des solutions?

    je n'arrive pas à sauvegarder mes données sur iCloud. Avez vous des solutions?

    I think a lot of peole are have this cannot backup problem. My strategy is to wait a day or so and then try again.

  • La connexion au serveur imap.free.fr sur le port 143 a expiré

    Bonjour
    Je ne peux configurer mon mail ,voila ce qui apparait :la connexion au serveur imap.free.fr sur le port 143 a expiré
    Merci d'avnce

    Thanks EJP,
    You're right, the channel is closed before the write operation, i tried many thinks ( adding a closeConnection queue that is executed after the Selector.select() read and write and accept, or put this queue in a bloc where the select returned 0 events....) but still not working.
    do you any idea that can help me resolve this problem.

  • éventement PinChanged port série

    Hello,
    My project is to establish a communication interface between my pc and motion control (MCS 32EX SERAD) via a serial port.
    I realized the interface with C #, for testing the communication I used a Hyper terminal and it works for now I can send and receive data, but when I try them with motion control that does not work, I not connect. So I thought may be so at the port configuration
    (leds RTS, CTS, DSR, XonXoffOut, XonXoffIn)
    Can you explain the Pinchangerd event with a short code, I end search google but I do not really understand ?????
    sorry for my english
    here is my code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO.Ports;
    using System.IO;
    using System.Threading;
    namespace Communicatio_1
    public partial class Form1 : Form
    public byte[] bBufferBytes; //buffer a envoyer
    public delegate void myDelegate(byte sData);
    //public event SerialDataReceivedEventHandler DataReceived;
    public enum LogMsgType { Incoming, Outgoing, Normal, Warning, Error };
    public bool RtsEnable { get; set; }
    public Form1()
    InitializeComponent();
    this.Refresh();
    private void Form1_Load(object sender, EventArgs e) //l'événement Form_Load nous lire tous les ports série disponibles et nous assigner les valeurs à la liste déroulante.
    //on commence par lister les voies séries présentes
    String[] ports = SerialPort.GetPortNames(); //fonction statique
    //string [] ports = System.IO.Ports.SerialPort.GetPortNames ();
    for (int i = 0; i < ports.Length; i++) //on ajoute les ports au combo box
    portBox.Items.Add(ports[i]);
    private void button_charger_Click(object sender, EventArgs e)
    openFileDialog1.Title = "Chargement";// Titre
    openFileDialog1.FilterIndex = 1;
    if (openFileDialog1.ShowDialog(this) == DialogResult.OK) // Ouverture boite de dialogue OpenFile
    textBox1.Text = string.Empty; // On vide le TextBox
    backgroundWorker1.RunWorkerAsync();// executer le Background worker doWork()
    // timer1.Start();
    StreamReader sr = new StreamReader(openFileDialog1.OpenFile(), Encoding.Default); // Ouverture du fichier sélectionné
    // son nom est dans openFileDialog1.FileName
    private void button_connecter_Click(object sender, EventArgs e)
    serialPort1.PortName = portBox.SelectedItem.ToString();
    serialPort1.BaudRate = 9600;
    serialPort1.Parity = Parity.None;
    serialPort1.StopBits = StopBits.One;
    serialPort1.DataBits = 8;
    serialPort1.Handshake = Handshake.None;
    serialPort1.PortName = portBox.Text;
    serialPort1.RtsEnable = true;
    serialPort1.DtrEnable = true;
    // serialPort1.Open();
    serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
    try
    serialPort1.Open(); //Ouvrez le SerialPort
    StatusLabel1.Text = "serialPort1 : " + portBox.Text + " Opened";//Mettre à jour le StatusStrip
    MessageBox.Show("Opened");
    catch (Exception ex)
    MessageBox.Show("Failed: " + ex.Message);
    button_connecter.Enabled = false;
    button_deconnecter.Enabled = true;
    textBox1.ReadOnly = false;
    textBox2.ReadOnly = false;
    radioButton.Enabled = true;
    radioButton.BackColor = Color.Black;
    private void button_deconnecter_Click(object sender, EventArgs e)
    try
    serialPort1.Close(); //fermer le SerialPort
    StatusLabel1.Text = "serialPort1 : " + portBox.Text + " Closed"; //Mettre à jour le StatusStrip
    MessageBox.Show("Closed");
    catch (Exception ex)
    MessageBox.Show("Failed: " + ex.Message);
    button_connecter.Enabled = true; // activer le button connecter
    button_deconnecter.Enabled = false;// desctiver le bitton deconnecter
    textBox1.ReadOnly = true;
    textBox2.ReadOnly = true;
    radioButton.BackColor = Color.White;
    private void button_recevoir_Click(object sender, EventArgs e)
    StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
    textBox2.SelectedText = string.Empty;
    //textBox2.AppendText(DataReceived.ToString());
    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
    //string vide
    string value = "";
    //tant qu'il y a des données entrée on continue
    while (serialPort1.BytesToRead > 0)
    // on crée un char de 255 caractere
    char[] buffer = new char[255];
    //lecture du buffer jusqu'a sa longeur buffer.Length
    int longueur_bytes_read = serialPort1.Read(buffer, 0, buffer.Length);
    //tes characteres sont contenus dans buffer.
    //on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
    for (int i = 0; i < longueur_bytes_read; i++)
    value += buffer[i];
    //la methode toString passe tes bytes en characteres lisibles.
    safeInput(value.ToString());
    private void safeInput(string msg)
    MethodInvoker method = delegate
    // on efface la textbox
    textBox2.SelectedText = string.Empty;
    // on met les données dedans en string (conversion char->string)
    textBox2.AppendText(msg.ToString());
    if (InvokeRequired)
    BeginInvoke(method);
    else
    method.Invoke();
    private void button_envoyer_Click(object sender, EventArgs e)
    StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
    // serialPort1.Write(bBufferBytes, 0, bBufferBytes.Length);
    // serialPort1.WriteLine("");
    StreamReader sr = new StreamReader(openFileDialog1.OpenFile(), Encoding.Default);
    try
    string data = sr.ReadLine();
    // bBufferBytes = System.Text.Encoding.ASCII.GetBytes(data); //Place le contenu dans un buffer d'octets (ASCII: 1 char = 1 octet) (UNICODE: 1 Char = 2 octets)
    while (data != null)
    bBufferBytes = System.Text.Encoding.ASCII.GetBytes(data); //Place le contenu dans un buffer d'octets (ASCII: 1 char = 1 octet) (UNICODE: 1 Char = 2 octets)
    textBox1.AppendText(data + "\r\n");
    data = sr.ReadLine();
    serialPort1.Write(bBufferBytes, 0, bBufferBytes.Length); // Ecrit le buffer complet sur le SerialPort
    StatusLabel1.Text = "Transfert en cours...";
    finally
    if (sr != null)
    sr.Close();
    StatusLabel1.Text = "Transfert Fini ";
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    for (int i = 0; i <= 100; i++ )
    backgroundWorker1.ReportProgress(i);
    System.Threading.Thread.Sleep(100);
    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    progressBar2.Value = e.ProgressPercentage;
    StatusLabel1.Text = e.ProgressPercentage.ToString()+ "%" + "Télechargement en court...";
    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    StatusLabel1.Text = ("Télechargement Fini");

    Je ai ajouté ce morceau de code, mais il ne fonctionne pas
    private void serialPort1_PinChanged (object sender, SerialPinChangedEventArgs e){if (e.EventType == SerialPinChange.Break){serialPort1.BreakState = serialPort1.BreakState;}else if (e.EventType == SerialPinChange.CDChanged){}else if (e.EventType == SerialPinChange.CtsChanged){}else if (e.EventType == SerialPinChange.DsrChanged){}else if (e.EventType == SerialPinChange.Ring){
    et l'initialisation:
    serialPort1.PinChanged + = new SerialPinChangedEventHandler (serialPort1_PinChanged);
    Help me

  • Inclure un driver de port série dans un programme d'insal d'une appli Labview

    Dans une application Labview, nous communiquons avec le port série (VISA read/ write). Sur le poste de développement l'application fonctionne correctement mais lorque nous générons un exécutable (création d'un programme d'installation) pour l'insaller sur un autre PC, la ressource VISA Série reste en "grisé". Nous supposons qu'il faut ajouter à notre programme d'installation le driver série. Comment faire et quel driver utiliser?

    Excusez-moi que je ne reponds pas en francais...
    You also need to install the NI-VISA runtime on the target PC. If you don't have this already you can download it from the NI site (search for 'NI-VISA' in drivers & updates). It may be possible to make the installer for your executable run the VISA installer automatically but I'm not familiar with this.

Maybe you are looking for

  • How do I put a photo with a song embedded on the page........

    I finally figured out how to put a song with a photo on top on my iWeb Photo Page. What I can't figure out now is how to arrange all the photos so that this is not on top of any other photo. If I move a photo, another fills the spot. But my song/phot

  • Moving songs etc to new computer??

    Hi Have a classic 30gb ipod,all was ok until my sony vaio packed up and as i cannot access anything on this old pc wanted to move everything from ipod over to my laptop.Have only managed to get my purchased music & videos so farnothing else will move

  • Failed MAB Authentication Logs

    Having an issue where a user will plug a PC into a switch.  The switch does a MAB authenticaiton and the MAC is not located in the ACS server.  It logs the failed attempt, but when the PC is removed from the switch, the failed attempts keep getting l

  • HT1414 How to unlock iphone 5?

    Any idea how to unlock iphone 5?

  • Safari Crashes Continually due to "flashplayer 10.4-10.5 plugins"

    Hi, I was asked to download the latest updated flash from hulu. I did and it still is asking me to download it again. I've uninstalled and installed flash MANY times and it still doesn't work on some videos on hulu. And then my sarafi crashes giving