5.7.11

First Python Visual Program

Program visual python ini digenerate menggunakan wxGlade.

import wx

class MyFrame(wx.Frame):

def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.label_1 = wx.StaticText(self, -1, "Coba", style=wx.ALIGN_CENTRE)
self.button_1 = wx.Button(self, -1, "Click me!")

self.__set_properties()
self.__do_layout()

self.Bind(wx.EVT_BUTTON, self.Btn1Click, self.button_1)
# end wxGlade

def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle("frame_1")
# end wxGlade

def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
sizer_1.Add((20, 40), 0, 0, 0)
sizer_1.Add(self.label_1, 0, wx.EXPAND, 2)
sizer_1.Add((40, 40), 0, 0, 0)
sizer_1.Add(self.button_1, 0, 0, 0)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
self.Layout()
# end wxGlade

def Btn1Click(self, event): # wxGlade: MyFrame.
self.label_1.SetLabel("Hey! at last you found me!")
#event.Skip()

if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, -1, "")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()

Kecuali tentu saja perintah pada baris
self.label_1.SetLabel("Hey! at last you found me!")
yang dibuat sendiri.
Hasilnya? Silakan dicoba, sebuah interaktif sederhana dengan python.

Memprogram hardware dengan python?

Python tampaknya telah terinstal secara default pada sistem operasi GNU/Linux. Jadi, mengapa tidak diupayakan akses hardware dengan python?

Kelebihan dan kekurangan jika menggunakan python untuk akses hardware:
1. tidak perlu instal kompiler atau interpreter. Begitu OS terintal, program siap dijalankan.
2. python adalah interpreter, jadi relatif lebih lambat daripada program yang ditulis dalam bahasa C.
3. dukungan library untuk python sangat besar, nyaris semua hal bisa dikerjakan dengan mudah.

13.11.09

A new way to present ideas

Flash has become an alternative way to do presentation

5.8.09

Program robotmu dengan bahasa C

Barangkali ini cara menyenangkan untuk membuat program komputer, dalam hal ini program bahasa C.

Sebuah kit robot dengan unjuk kerja tinggi telah dirancang sebagai eksperimen bagi mereka yang hobi. Tapi kali ini tidak sembarang merancang robot. Karena anda harus menggunakan bahasa C untuk memprogram dan menjalankannya. Nah kalau anda sedang belajar bahasa C, ini bisa menguji kepiawaian anda memprogram.

Adalah kit robot yang diberi nama Interactive C Robot Kit. Kit ini dibuat berbasis mikrokontroler 68HC11 pada papan rangkaian AX-11. Kit ini dilengkapi sensor reflektor infra merah, detektor lingkaran Ranger-Encoder, 2 buah kotak roda gigi DC serta spare part mekanik untuk membangun dan memodifikasi 8 buah sample robot.

Board AX-11 dapat digunakan dalam pelajaran desain robot baik untuk perlombaan, hobi maupun mempelajari teknik kontrol industri. Papan rangkaian ini menggunakan mikrokontroler 68HC11, 32 KB RAM dengan sistem back-u[, 9 input digital, 21 input analog, 4 driver motor DC, 6 driver motor servo, modul LCD 16x2 untuk display dan port serial RS-232 untuk donlod program dari komputer.


Mechanical parts for build and modified 8 sample robot. Complete with manuals for learning the kit yourself.

Specifications:
  • Controlled by 68HC11 Microcontroler
  • 32 KB RAM with backup system
  • PC Serial port interface
  • LCD 16x2 display
  • Piezo speaker
  • 4 DC-motor ports
  • 6 Servo motor ports
  • 6 Digital input
  • 8 Digital output
  • 21 Analog input
  • 6 x AA battery holder
More about robot kit: http://2r-he.blogspot.com/search/label/robot

9.4.09

Tutorial pengembangan sistem embedded Linux

LinuxDevices has posted the second in a series of tutorials on embedded Linux system development written by ARM Linux kernel hackers Vincent Sanders and Daniel Silverstone of the UK-based development firm, Simtec Electronics. Part Two explains how to construct a simple web server with a command shell on the console.

Part one of the series, written by Simtec Senior Software Engineer Sanders and Simtec Software Engineer Silverstone, walked new Linux developers through the construction of a simple embedded Linux system. Principal sections of the new web server tutorial include:
  • Automated, reproducible, reliable building -- Shortening the edit, build, and test cycle via automation, including use of a Revision Control System (RCS), or for larger systems, a full build manager

  • Scripting builds and common tasks -- using a shell script to add functions to copy executables and their library dependencies, configure a DHCP
    client, and copy kernel modules from the host to the target

  • Creating a web server's file system -- Choosing and configuring a web server, acquiring the Thttpd binary, and testing with the QEMU emulator
The remaining tutorials, to be published in the coming weeks, include:
  • Building an embedded Linux web kiosk
  • Building an ARM-based embedded Linux web kiosk
  • Improving an embedded Linux system
  • Deploying embedded Linux systems
The new web server tutorial is available here: Tutorial: Web Server Embedded Linux System

18.11.08

Akses Memori PCI

(bagian akhir dari 7 artikel - ke artikel utama)

Untuk mengakses memori PCI milik sebuah devais, harus digunakan beberapa fungsi umum dan tidak disarankan untuk mengakses alamat memori secara langsung. Berbagai hardware mempunyai cara berbeda saat mengakses bus PCI. Jika digunakan fungsi umum, maka driver PCI yang dibuat akan dapat dijalankan di berbagai sistem linux (sehingga menjadi portabel)

Untuk membaca data dari bus PCI digunakan fungsi-fungsi berikut ini:


int pci_read_config_byte (struct pci_dev * dev , int where , u8 * val );
int pci_read_config_word(struct pci_dev *dev, int where, u16 *val);
int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);

sedangkan untuk menuliskan data digunakan fungsi-fungsi ini:
int pci_write_config_byte(struct pci_dev *dev, int where, u8 val);
int pci_write_config_word(struct pci_dev *dev, int where, u16 val);
int pci_write_config_dword(struct pci_dev *dev, int where, u32 val);

Fungsi-fungsi di atas memungkinkan penulisan data berukuran 8, 16 atau 32 bit ke lokasi tertentu yang ditempat devais PCI. Jika diinginkan mengakses lokasi memori suatu devais PCI yang belum diinisialisasi oleh inti Linux PCI, maka dapat digunakan fungsi-fungsi berikut ini (yang terdapat dalam kode inti pci_hotplug:


int pci_read_config_byte_nodev(struct pci_ops *ops, u8 bus, u8 device, u8 function, int where, u8 *val);
int pci_read_config_word_nodev(struct pci_ops *ops, u8 bus, u8 device, u8 function, int where, u16 *val);
int pci_read_config_dword_nodev(struct pci_ops *ops, u8 bus, u8 device, u8 function, int where, u32 *val);
int pci_write_config_byte_nodev(struct pci_ops *ops, u8 bus, u8 device, u8 function, int where, u8 val);
int pci_write_config_word_nodev(struct pci_ops *ops, u8 bus, u8 device, u8 function, int where, u16 val);
int pci_write_config_dword_nodev(struct pci_ops *ops, u8 bus, u8 device, u8 function, int where, u32 val);

Contoh cara membaca dan menulis memori PCI yang dilakukan melalui driver dapat dilihat pada driver USB OHCI driver pada berkas drivers/usb/host/usb-ohci.c:


pci_read_config_byte(dev, PCI_LATENCY_TIMER, &latency);
if (latency) {
pci_read_config_byte(dev, PCI_MAX_LAT, &limit);
if (limit && limit < latency) {
dbg("PCI latency reduced to max %d", limit);
pci_write_config_byte(dev, PCI_LATENCY_TIMER, limit);
ohci->pci_latency = limit;
} else {
/* it might already have been reduced */
ohci->pci_latency = latency;
}
}