http://www.spinellis.gr/pubs/trade/1993-Winmag/fastwin5/html/win5.html This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
|
Σε προηγούμενα άρθρα της σειράς αυτής είχαμε αναφερθεί στη δυνατότητα ελέγχου συσκευών multimedia μέσω της οικογενείας οδηγών MCI των Windows. Ο οδηγοί αυτοί παρέχουν έναν ομοιόμορφο τρόπο αντιμετώπισης όλων των συσκευών multimedia και διευκολύνουν την ανάπτυξη και χρήση λογισμικού συγγραφής τέτοιων εφαρμογών (authoring software).
Το πρότυπο επικοινωνίας MCI (Media Control Interface) καθορίζει μια σειρά από εντολές που υποστηρίζονται από συσκευές multimedia για την επικοινωνία τους με το λογισμικό εφαρμογών. Έτσι όπως το BIOS (Basic Input Output System) των προσωπικών υπολογιστών παρέχει μία τυποποιημένη δυνατότητα ελέγχου της οθόνης, του δίσκου και του πληκτρολογίου μέσω των αντίστοιχων κλήσεων σε ρουτίνες εξυπηρέτησης (interrupt service routines), έτσι και το πρότυπο MCI παρέχει την τυποποιημένη δυνατότητα ελέγχου περιφερειακών συσκευών multimedia. Για την επίτευξη όσο το δυνατό μεγαλύτερης συμβατότητας με πολλά περιβάλλοντα προγραμματισμού οι κλήσεις στον οδηγό MCI δεν είναι απαραίτητα συνδεδεμένες με κάποια συγκεκριμένη γλώσσα προγραμματισμού όπως η C, αλλά αποτελούνται από απλές συμβολοσειρές (strings) με τις οποίες τα Windows επικοινωνούν με την αντίστοιχη συσκευή.
Εικόνα
1. Εγκατάσταση
συσκευών
με έλεγχο MCI
μέσα από τον
Πίνακα Ελέγχου.
Τύπος συσκευής | Περιγραφή |
cdaudio | Δίσκος ήχου CD |
mciavi | Ψηφιακή κινούμενη εικόνα |
overlay | Αναλογική κινούμενη εικόνα |
sequencer | Συσκευή συνθετικών ήχων MIDI |
waveaudio | Ψηφιοποιημένοι ήχοι |
videodisc | Δίσκος Video |
Όπως αναφέραμε παραπάνω οι εντολές MCI μπορούν να δοθούν με τη μορφή συμβολοσειρών. Έτσι για παράδειγμα η σειρά εντολών
open c:\wingk\chimes.wav type waveaudio alias chimes play chimes close chimesμπορεί να χρησιμοποιηθεί για να αναπαραχθεί το αρχείο ήχου chimes. Οι εντολές MCI συνήθως αποτελούνται από το βασικό ρήμα (λ.χ. play, stop) μία λέξη που προσδιορίζει τη συσκευή (λ.χ. wav) και, προαιρετικά, προσθετές παραμέτρους της συγκεκριμένης εντολής (λ.χ. χρονική διάρκεια για την εντολή play). Στο τέλος κάθε εντολής MCI μπορούν να προστεθούν οι παράμετροι notify και wait. Η πρώτη ορίζει ότι η εφαρμογή μας πρέπει να δεχτεί ένα μήνυμα όταν περατωθεί η συγκεκριμένη εντολή, ενώ η δεύτερη ορίζει ότι η εντολή πρέπει να εκτελεστεί σύγχρονα, δηλαδή με αναμονή μέχρι την περάτωσή της.
Οι βασικές εντολές MCI είναι παρόμοιες με τις δυνατότητες ελέγχου που έχουν οι αντίστοιχες συσκευές. Η συνομιλία με μια συγκεκριμένη συσκευή αρχίζει πάντα με την εντολή open και περατώνεται με την εντολή close. Ενδιάμεσα μπορούν να παρεμβληθούν εντολές όπως play, pause, record, resume και stop. Στις παρακάτω παραγράφους παρουσιάζουμε αναλυτικά τις βασικές εντολές MCI.
Εικόνα
2. Ελέγχος συσκευών
MCI με το πρόγραμμα
mcitest.
open c:\usr\sounds\walkuere.wav type waveaudio alias wav play wav close wavΣε κάρτες που υποστηρίζουν συνθετητές MIDI FM η επόμενη σειρά εντολών παίζει τα πρώτα 50 τμήματα του αρχείου canyon.mid.
open c:\wingk\canyon.mid type sequencer alias canyon play canyon from 1 to 50 close canyonΕπιπλέον, αν το σύστημα μπορεί να ελέγξει μια μονάδα CD τότε η παρακάτω σειρά εντολών παίζει από το πέμπτο μέχρι το δέκατο λεπτό του δίσκου.
open cdaudio alias cd set cd time format tmsf play cd from 5 to 10 wait close cd
open overlay alias sm window sm handle default set sm video on freeze sm save sm <clipboard> best quarter close sm
open d:\kids\birthday.avi type mciavi alias avi window avi handle default play avi close avi
Εικόνα 3. Βάση δεδομένων multimedia στο περιβάλλον Access Basic με την Screen Machine II.
Πρώτο βήμα για τη χρήση του προτύπου MCI μέσα από την Access Basic είναι ο ορισμός της συνάρτησης επικοινωνίας του MCI μέσα στην Access Basic. Αυτό επιτυγχάνεται με την ακόλουθη εντολή:
Declare Function mciSendString Lib "MMSYSTEM" (ByVal cmd As String, res As String, ByVal reslen As Integer, ByVal callback As Integer) As LongΑπό αυτό το σημείο και μετά μπορούμε να χρησιμοποιούμε μέσα από την Access Basic την συνάρτηση mciSendString για να στέλνουμε εντολές MCI. Μάλιστα για να απλουστεύσουμε ακόμα πιο πολύ τη ζωή μας μπορούμε να ορίσουμε μια πιο απλή συνάρτηση την mci η οποία παίρνει σαν μόνη παράμετρο την εντολή που θέλουμε να στείλουμε.
Στη συνέχεια ορίζουμε την μορφή της βάσης δεδομένων και τις διάφορες φόρμες και οθόνες που θα χρησιμοποιηθούν. Για τα κουμπιά του παραθύρου Database Image Handler που φαίνεται στην εικόνα ορίζουμε τον κώδικα που ανταποκρίνεται σε αυτά με τις αντίστοιχες εντολές MCI. Έτσι για παράδειγμα το πλήκτρο pause συσχετίζεται με τον ακόλουθο κώδικα:
Function LiveUpdate () If Forms![SaveImage]![Pause] Then mci ("freeze sm") Else mci ("unfreeze sm") End If End FunctionΤέλος, για τον έλεγχο των παραμέτρων παρουσίασης και αποθήκευσης της εικόνας μπορούμε να χρησιμοποιήσουμε τις πρόσθετες εντολές MCI που διαθέτει η Screen Machine. Αυτές εμφανίζουν στην οθόνη τυποποιημένα παράθυρα διαλόγου (dialog boxes) μέσα από τα οποία μπορούμε να ορίσουμε τις αντίστοιχες παραμέτρους. Έτσι λ.χ. ο έλεγχος των χρωμάτων επιτυγχάνεται με την εντολή dialog sm open color.
(C) Copyright 1993-97 Διομήδης Σπινέλλης. Επιτρέπεται η ελεύθερη ανάγνωση από browsers του WWW και παρόμοια προγράμματα. Με την επιφύλαξη κάθε άλλου δικαιώματος.