Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

"Πρόβλημα" serialPort_DataReceived

Îåêßíçóå áðü ôï ìÝëïò nws. Τελευταία δημοσίευση από το μέλος nws στις 01-12-2011, 10:14. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-11-2011, 14:40 68387

    "Πρόβλημα" serialPort_DataReceived

    Καλησπέρα και καλώς σας βρήκα, μιας και είναι το πρώτο μου ποστParty!!! Party!!! Party!!!

    Θέλω την βοήθειά σας στο εξής.

    Φτιάχνω μια εφαρμογή η οποία επικοινωνεί μεσω θυρας CΟΜ με μια συσκευή.
    Στέλνω την εντολή, και μετά ανάλογα με τα τρια τελευταία bytes των δεδομένων που λαμβάνω από την συσκευή, στέλνω την επόμενη εντολή, ώστε να πάρω όλα τα δεδομένα που χρειάζομαι.

    Το πρόβλημά μου είναι το εξής.
    Όταν η συσκευή στείλει στην εφαρμογή μου όλα τα δεδομένα της, και δεν έχει κάτι άλλο να στείλει, δεν απαντάει στο τελευταίο μήνυμα που στέλνω από την εφαρμογή. Είναι έτσι ρυθμισμένη.

    Σε περίπτωση που δεν στείλει δεδομένα, εγώ θα πρέπει να στείλω το μήνημα τέλους, για να διακόψω την σύνδεση με την μηχανή.
    O κώδικας που έχω γράψει είναι ο ακόλουθος.

    private void btnConnectToPort_Clicked(object sender, RoutedEventArgs e)
    {
    byte[] _command=CreateCommand(byte1,byte2,byte3);
    _serialPort.Write(_command,0,_command.Length);
    }


    private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {            byte[] data = new byte[_serialPort.BytesToRead];
             
                _serialPort.Read(data, 0, data.Length);
    byte[] _command=CreateCommand(data[data.Length-1],data[data.Length-2],data[data.Length-3]);
    _serialPort.Write(_command,0,_command.Length);

    }


    Και η ερώτησή μου είναι η εξής.
    Υπάρχει κάποιος τρόπος να διαπιστώσω αν εκτελείται η serialPort_DataReceived; Γιατί αν δεν εκτελεστεί, θα έχω καταλάβει ότι έστειλε όλα τα δεδομένα στην εφαρμογή, οπότε θα στείλω την τελευταία εντολή στην συσκευή για διακοπή της επικοινωνίας μας.
  •  28-11-2011, 12:37 68393 σε απάντηση της 68387

    Απ: "Πρόβλημα" serialPort_DataReceived

    Βάλε ένα DateTime lastTimeReceived να αποθηκεύει την ώρα απάντησης στο DataReceived event (το οποίο ειναι ασύγχρονο).
    Αν περνάει η ώρα (timeout μέσα στο οποίο έπρεπε να απαντήσει) και η τιμή της δεν αλλάζει σημαίνει ότι τα έστειλε όλα τα δεδομένα.
  •  01-12-2011, 10:14 68465 σε απάντηση της 68393

    Απ: "Πρόβλημα" serialPort_DataReceived

    Όντως.
    Βασικά είχα κολλήσει, και έψαχνα κάποια μέθοδο των port , για να κάνει αυτή την λειτουργία.

    Ευχαριστώ για την λύση Big Smile


Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems