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

 

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

Convert WORD

Îåêßíçóå áðü ôï ìÝëïò aristofanisl. Τελευταία δημοσίευση από το μέλος aristofanisl στις 24-11-2008, 13:55. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-11-2008, 12:42 46395

    Convert WORD

    Καλημέρα σε όλους.
    Σε μια εφαρμογή που φτιάχνω λαμβάνω δεδομένα από έναν αισθητήρα bluetooth μέσω σειριακής πόρτας.
    Το πρόβλημα μου είναι ότι όταν του στέλνω το command που θέλω μου απαντάει με δεδομένα τύπου WORD.Εγώ θα ήθελα να τα μετατρέψω σε int ή byte για να τα κάνω στην συνέχεια Plot σε ένα γράφημα.Το πρόγραμμα το γράφω σε γλώσσα C#. Σας παραθέτω τον πίνακα με τις εντολές που δέχεται το μηχάνημα και τι μου επιστρέφει.

  •  21-11-2008, 13:30 46396 σε απάντηση της 46395

    Απ: Convert WORD

    Το ότι η συσκευή επιστρέφει δεδομένα τύπου WORD δεν σημαίνει τίποτε, απλά γιατί το WORD είναι int. Σημασία έχει τί επιστρέφει η βιβλιοθήκη που χρησιμοποιείς για να μιλήσεις με τη συσκευή. Λογικά θα τη χρησιμοποιείς ήδη (ή θα τη χρησιμοποιήσεις) μέσω Interop οπότε θα ορίσεις εσύ σε τί μορφή θα σου έρθουν τα δεδομένα.

    Αν πρόκειται για κάποιο native dll θα πρέπει να ορίσεις τις μεθόδους που θα καλέσεις με το DllImport attribute. Ρίξε μία ματιά στο Consuming Unmanaged DLL Functions για να δεις ακριβώς τί πρέπει να κάνεις για να καλέσεις τις μεθόδους αλλά και να μην γεμίσει ο κώδικας σου με imports.
    Αν χρησιμοποιείς ένα COM dll σίγουρα θα έχεις ήδη κάποιο dll ή tlb. Αυτό μπορείς να το προσθέσεις εύκολα ως Reference στο project σου και το Visual Studio θα δημιουργήσει κάποια proxy classes με τα οποία θα βλέπεις τις κλάσεις του dll ως C# κλάσεις.

    Για να σε βοηθήσουμε περισσότερο θα πρέπει να μας πεις πως μιλάς με τη συσκευή, με native dll, με COM, με Win32 API ?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-11-2008, 14:23 46397 σε απάντηση της 46396

    Απ: Convert WORD

    Ευχαριστώ για το γρήγορο response.
    Δεν μιλάω με κάποιο συγκεκριμένο dll.Χρησιμοποιώ το built in serial port που έχει η .NET.Εχω κάνει assign την συσκευή σε ένα serial port κ απλά διαβάζω τις τιμές.
    Οταν του στέλνω τον χαρακτήρα 'r' αυτό μου απαντάει στέλνοντάς μου 2 bytes. Αυτό είναι που με μπερδεύει. (BYTE LOW FIRST?? τι εννοεί ο ποιητής??)
  •  24-11-2008, 10:52 46433 σε απάντηση της 46397

    Απ: Convert WORD

    Καλημέρα!
    Καμία βοήθεια?Smile
  •  24-11-2008, 11:18 46434 σε απάντηση της 46433

    Απ: Convert WORD

    Καλημέρα,

     

    Η ερώτηση που τίθεται είναι η εξής:

    Γνωρίζεις το δυαδικό σύστημα και πως με αυτό γίνεται η αναπαράσταση οποιοδήποτε αριθμού;

    http://en.wikipedia.org/wiki/Binary_numeral_system

     

    Γνωρίζεις τις έννοιες Most/least significant bit/byte;

    http://en.wikipedia.org/wiki/Least-significant_bit

     

    Ο ποιητής αυτό που εννοεί είναι ότι θα σου στείλει ένα αριθμό αποτελούμενο από δυο byte και το πρώτο Byte που θα λάβεις είναι το λιγότερο σημαντικό. Δηλαδή αυτό με την μικρότερη αξία.

     

    Σε περίπτωση που δεν τα γνωρίζεις και εν’ τάχη θα σου πω το εξής:

    Έχεις τον αριθμό 12 στο δεκαδικό σύστημα.

    Αυτός αποτελείται από δυο ψηφία. Το 1 και το 2.

    Το 1 είναι το περισσότερο σημαντικό και το 2 το λιγότερο σημαντικό. Στο δεκαδικό σύστημα το 1 λόγο της θέσης του συμβολίζει την τιμή 10 ( x * 10 – βάση το 10). Το ίδιο συμβαίνει και στο δυαδικό σύστημα (βάση το 2).

     

    Στο πρόβλημά σου τώρα.

    Θα λάβεις δυο byte που το ένα θα έχει μεγαλύτερη αξία από το άλλο. Το πρώτο είναι το λιγότερο σημαντικό. Το δεύτερο είναι το περισσότερο σημαντικό και λόγο του δυαδικού συστήματος έχει αξία x * 256.

     

    Οπότε αν έχεις δυο byte Α και Β με το Α λιγότερο σημαντικό ο αριθμός σου θα είναι

    X = Α + (Β * 256)

     

    Ελπίζω να έγινα κατανοητός.

  •  24-11-2008, 13:55 46438 σε απάντηση της 46434

    Απ: Convert WORD

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