Modul 1

advertisement
Modul 2
Akuisisi Dan Visualisasi
1.
User Interface
User interface (UI) adalah cara bagaimana komputer dan pengguna dapat
berkomunikasi. UI yang baik adalah yang ramah terhadap pengguna (user friendly), baik
pengguna yang masih awam (baru menggunakan program yang kita buat) maupun
yang sudah mahir (sudah terbiasa menggunakan program yang kita buat).
Sebenarnya UI ini bukanlah hal yang baru, PC (Personal Computer) yang ada
saat ini tentu tidak akan pernah dipakai orang jika tidak memiliki UI. UI yang paling
mendasar dari tiap PC adalah keyboard dan layar monitor.
Pada modul ini kita akan mempelajari bagaimana membuat UI dalam bahasa C
yang berikutnya akan digunakan pada program-program selanjutnya.
2.
Akuisisi Data
Program-program yang telah kita buat sebelumnya senantiasa menggunakan
nilai masukan yang menjadi bagian dari program itu sendiri, sehingga pengguna tidak
bisa mengubah atau memasukan nilai. Pada bagian ini kita akan mempelajari beberapa
cara untuk membuat program yang dapat meminta masukan ke pengguna.
2.1
Masukan String
Fungsi yang dapat digunakan adalah gets() atau scanf()
yang
keduanya merupakan fungsi dari pustaka stdio.h. Sebagai contoh
perhatikan dan coba program instring.c.
2.2
Masukan Integer
Untuk masukan integer, karena tidak ada fungsi di standard library C yang
mendukungnya,
maka
kita
bisa
melakukan
trik
dengan
cara
meenggunakan gets() lalu data yang tersimpan dikonversi ke integer
dengan fungsi atoi(). Sebagai contoh perhatikan dan coba program
inint.c.
2.3
Membuka dan Menyimpan File
Untuk kemudahan dalam penggunaan data bersama antar dua program,
atau untuk keperluan penyimpanan, maka suka tidak suka kita harus
bermain dengan file. Dalam bahasa C sendiri, operasi file adalah sangat
mudah, yang perlu anda lakukan adalah membuka file dengan fopen(),
lalu tergantung tipe operasinya anda dapat membaca, mengubah atau
menambahkan isi file tersebut.
Sintaks dari fopen adalah :
file_pointer = fopen("namafile", "tipe");
tipe sendiri dapat berupa salah satu dari berikut :
"r"
Membuka file hanya untuk dibaca (read-only)
"w"
Membuat file baru (hapus jika sudah ada)
"a"
Buka file untuk ditambahkan (buat jika belum ada)
"r++"
Buka file untuk dibaca dan ditulis
"w++"
Buat file baru untuk dibaca dan ditulis
"a++"
Buka file untuk ditambahkan, dibaca dan ditulis
Untuk sistem operasi seperti MS-DOS yang memberikan perlakuan beda
pada file teks dan binary, maka anda harus menambahkan b pada tipe di
atas, semisal "rb" atau "w+b".
Tapi untuk OS lain seperti UNIX hal
tersebut tidak perlu.
Setelah diperoleh file pointer, maka berikutnya adalah mengakses isi dari
file tersebut, fungsi-fungsi yang dapat digunakan antara lain fgets(),
fputs(), fread() atau fwrite().
Sebagai contoh perhatikan dan coba program file.c.
ELatihan:
Buatlah sebuah program yang meminta masukan berupa sinyal kepada
pengguna, dengan panjang tertentu, lalu hasilnya disimpan ke dalam file
dengan nama tertentu.
3.
Visualisasi
Visualisasi yang dimaksud di sini adalah respon tampilan di layar monitor
sesuai masukan yang kita berikan. Lebih khusus lagi, pada modul ini, kita akan
mempelajari cara membuat plot sinyal.
2.1
Borland Graphic Interface (BGI)
BGI merupakan fasilitas yang disediakan Borland Turbo C untuk
melakukan interfacing dengan tampilan layar monitor. Biarpun sederhana,
namun pada pelatihan ini konsep penggunaan layar monitor dan trik
penggambaran sinyal yang lebih ditekankan, yang sangat berguna untuk
pemrograman lainnya. Jangan lupa sertakan graphics.h di tiap awal
program anda.
2.2
Inisialisasi
Sebelum menggunakan BGI ini, hal pertama yang harus anda lakukan
adalah melakukan inisialisasi. Caranya adalah sebagai berikut :
int drv = VGA, mode = VGAHI;
initgraph(&drv, &mode, "c:/tc/");
2.3
Memberi Warna
Sebelum membuat objek di dalam layar, anda harus terlebih dahulu
mensetting warna objek tersebut, menggunakan fungsi setcolor() dengan
sintaks :
setcolor(warna);
warna adalah bernilai integer yang menyatakan indeks warna , misal 0
untuk hitam dan 7 untuk putih.
2.4
Menggambar Garis
Untuk menggambar sebuah garis digunakan fungsi line(), dengan
sintaks sebagai berikut :
line(x1,y1,x2,y2);
yang akan menggambar garis dari koordinat (x1,y1) ke (x2,y2).
2.5
Menggambar Lingkaran
Untuk menggambar sebuah lingkaran digunakan fungsi circle(),
dengan sintaks sebagai berikut :
circle(x,y,d);
yang akan menggambar lingkaran berdiameter d pada posisi pusat di
koordinat (x,y).
ELatihan:
Buatlah sebuah fungsi bernama stem() dan plot() yang masing-masing
berfungsi untuk menggambar sinyal dalam waktu diskrit dan kontinyu.
4.
Format File WAVE
Salah satu format file yang paling sering digunakan, khususnya di Windows,
adalah file WAVE (dengan ekstensi .wav). Format ini digunakan untuk menyimpan
informasi audio digital. Pada bagian ini, kita akan mencoba membaca file WAVE lalu
mengambil isinya untuk dianalisa kemudian.
Nama Field
Ukuran (byte)
4
chunk_size
4
format
4
subchunk1_ID
4
subchunk1_size
4
audio_format
2
num_channel
2
sample_rate
4
byte_rate
4
block_align
2
bitpersample
2
subchunk2_ID
4
subchunk2_size
4
data
subchunk2_size
chunk_ID
"data"
"fmt "
"RIFF"
ID Blok
gambar 2.1
Format file WAVE mengikuti aturan RIFF (Resource Interchange File Format)
yang dibuat oleh Microsoft.
Alokasi bit untuk WAVE terlihat seperti gambar 2.1,
dengan keterangan masing-masing adalah sebagai berikut :
Nama
Tipe
Ukuran
Deskripsi
(byte)
chunk_ID
char
4
chunk_size
long
4
String yang bertuliskan "riff", jika benar
formatnya adalah RIFF.
Berisi panjang keseluruhan data dalam file,
tidak termasuk ke dalamnya chunk_ID
dan chunk_size.
format
char
4
Untuk file WAV harus berisi "WAVE".
Berisi "fmt ", perhatikan spasi setelah
subchunk1_ID
char
4
fmt, ini digunakan agar ukurannya tetap 4
byte atau 4 karakter.
subchunk1_size
long
4
audio_format
int
2
num_channel
int
2
sample_rate
long
4
Panjang dari format header (dalam byte).
Untuk PCM bernilai 16.
Berisi 1 untuk PCM dan 2 untuk ADPCM.
Jumlah channel, bernilai 1 jika mono dan 2
jika stereo.
Sampling rate dalam sample/second.
Misal 22050 untuk sampling rate 22 Khz.
Jumlah byte per second yang harus
byte_rate
long
4
dibangkitkan player untuk mengeluarkan
suara secara real time.
Jumlah byte yang dikeluarkan tiap waktu.
block_align
int
2
Sama dengan byte per sample dikali
jumlah channel.
Jumlah bit per sample kuantisasi. Biasanya
bitpersample
int
2
subchunk2_ID
char
4
ID untuk chunk data. Berisi "data".
subchunk2_size
long
4
Panjang data audio dalam byte.
berisi 8 atau 16.
Program wavread.c memperlihatkan contoh pembacaan file WAVE.
ELatihan:
Buatlah sebuah fungsi bernama wavread() dan wavwrite() masingmasing untuk membaca dan menulis file WAVE.
Download