Pic Programlayıcı

Başlatan eldirr, 29 Ağustos 2008 - 01:06:05

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

eldirr

Merhabalar,

Konuyla ilgilenen kişiler sitede var mı bilmiyorum fakat, elimde K128 model bir usb pic programlayıcı var ve bunu linuxte nasıl çalıştırabilirim bilemedim.

Aslında seri port ile çalışan bir programlayıcı fakat içerisindeki USB-RS232 dönüştürücü ile USB'den bağlantı yapıyor. Programlayıcıyı bağladığımda USB port üzerinden dönüştürücü tipini vs. görüyor. Fakat programlayıcıyı çalıştırıcak program mevcut mu bilmiyorum. Windows altında çalışan programı ise Wine ile çalışıyor fakat programlayıcıyı görmüyor, büyük ihtimalle USB-RS232 dönüşümü sorun oluyor.

Piklab programını kurdum, denedim, bir çok derleyiciyi desteklemesi, ara yüzünün güzel tasarlanmış olması hoşuma gitti. Fakat  JDM programlayıcıları destekliyor. Aslında bir de 'custom programmer' bölümü var fakat orada da nasıl tanıtacağımı bilemedim.

Bu konuyla ilgilenmiş olanlar varsa eğer yardımcı olurlarsa sevinirim.

eldirr

2 Sene önce yazılmış küçük bir yazılım buldum konuyla ilgili. Ara yüzü yok ama eğer çalıştırabilirsem basit bir ara yüz yapılabilir belki.

http://sourceforge.net/projects/tetsujin/#item3rd-1

Çalıştırabilirsem sonuçlarını yazarım.

erginemr

Bir de, ne kadar işinize yarar bilemiyorum ama; Enixma dergisi de Lazarus (Delphi klonu) ile PIC programlama ile ilgili bir yazı serisi yayınlamıştı, şöyle 5-6 sayı sürmüştü. İlk sayısı için:
http://www.enixma.org/dergiler/0803/0803.php
(En sondaki 53 no.lu madde) 

Eren

Maalesef, Pic programlayıcılarda Linux zayıf durumda.

eldirr

Açıkçası ben de bunun farkındayım ve bir şekilde çözmem lazım bu durumu. O yüzden bulduğum bu yazılımı anlayabilirsem eğer bu konuda çalışmak istiyorum. C/C++'da daha önce bir çok proje yaptım fakat linux ortamına pek alışık değilim (Gerçi bulduğum program Python ile hazırlanmış fakat çok zor olacağını sanmıyorum yine de). Önümde 1 ay kadar boş bir süre var ve eğer basit bir şekilde elimdeki programlayıcıyı çalıştırabilirsem basit bir arayüz'ün tasarlanması pek zor olmasa gerek. Sadece şu an konsoldan alınan parametreleri bir ara yüz'e eklemek kalıyor. Tabii bu kadarını başarabilirsem daha da geliştirmek isterim.

Eğer bu konuyla ilgilenen kişiler var ise birlikte de çalışabiliriz.

Eren

GTK ya da QT ile GUI yazabilirsiniz ancak bu dilleri bilmeniz lazım, forumda bu alanda bilgili arkadaşlar var, onlardan yardım alabilirsiniz.

maxspacemax

Alıntı yapılan: Eren - 29 Ağustos 2008 - 19:02:34
GTK ya da QT ile GUI yazabilirsiniz ancak bu dilleri bilmeniz lazım, forumda bu alanda bilgili arkadaşlar var, onlardan yardım alabilirsiniz.

http://qt.comu.edu.tr/

Eren

Alıntı yapılan: maxspacemax - 29 Ağustos 2008 - 22:26:01
Alıntı yapılan: Eren - 29 Ağustos 2008 - 19:02:34
GTK ya da QT ile GUI yazabilirsiniz ancak bu dilleri bilmeniz lazım, forumda bu alanda bilgili arkadaşlar var, onlardan yardım alabilirsiniz.

http://qt.comu.edu.tr/

Bu adresi bende bilmiyorum, paylaştığınız için teşekkürler. Çok işe yarar belgelere sahip bir site.

eldirr

Arkadaşlar teşekkür ederim ilginiz için. QT ile ilgili bişeyler okudum biraz, hatta 'QT designer' kurup biraz kurcaladım. Fakat şimdi kafam karışmaya başladı, QT dediğimiz şey bir grafik kütüphanesi mi yoksa ayrı bir programlama dili mi? Verilen linkte python, C++ vs. ile kullanılabildiği söylenmiş.

Bir de şöyle bir soru sorayım, python ile yazılmış bir programa en kolay ara yüz hangi kütüphane ve dillerle hazırlanabilir? Çünkü bulduğum program biraz aksaklık çıkarsa da çalışıyor ve ben basit ara yüz hazırlamaya karar verdim.

eldirr

Bir de merak ettiğim bir şey var. Şimdi elimdeki program sonuçta konsoldan çalışması için tasarlanmış. Ve gördüğüm kadarıyla da çok güzel yazılmış. Ben bu programın yapısını hiç bozmadan, bir ara yüz programı oluşturarak, ara yüzde girilen verileri sonuçta bir konsol komutuna çevirip, arka planda konsolda çalışacak şekilde yapsam daha mantıklı di mi?

Hem ara yüzden hem de konsoldan çalışan programların mantığı da bu şekilde mi?

egitimist

Python ile grafik arabirimli yazılımlar oluşturmak için bir çok seçenek vardır. Bunlar; qt (KDE), gtk (Gnome), MFC/win32, wxpython ve tkinter olarak sayılabilir.
...
Tkinter, python kurulu tüm sistemlerde bir modül olarak bulunmaktadır. Gui için en kolay yol tkinter araçlarını kullanmaktır. Nesneleri tkinter modülünden çağırarak kullanırız. Örneğin;


#!/usr/bin/python/

from tkinter import *             #tkinter modülüden nesneleri çağırır.
AnaPencere=Tk()                  #Tk() anapenceresini AnaPencere değişkenine atadık.
widget=Label(anapencere)   #Ana pencere üzerinde bir Label widget'i oluşturduk.
widget.config(text="Ubuntu altında PIC programlama")  # Pencere içinde görünecek metni config() fonksiyonuyla yazdık
widget.pack()                         # En kolay kullanımlı geometri yöneticisi olan pack() fonksiyonunu kullandık. Geometri yöneticileri widgetlerin pencere içinde görünmesini sağlar.
anapencere.mainloop()          # anapencere adlı ana döngüyü başlattık.

Not:"#" karakteriyle başlayan satırlar açıklama satırlarıdır.

Bu kodu bir metin editörü ile yazıp .py uzantılı olarak kaydedin ve çalıştırma hakları chmod ile verin. Daha sonra konsolda dosyamızın olduğu düzin altında ./programadı.py  koduyla çalıştırın.

eldirr

cnr@cnr-laptop:~/Desktop/kitsrus_pic_programmer$ ./deneme.py
from: can't read /var/mail/tkinter
./deneme.py: line 5: syntax error near unexpected token `('
./deneme.py: line 5: `AnaPencere=Tk()                  #Tk() anapenceresini AnaPencere değişkenine atadık.'


Gibi bir hata aldım çalıştırmak istediğimde. Nelerin yüklü olması gerekiyor çalışması için? 'python-tk' diye bir şey yükledim ama başka kütüphaneler de gerekli sanırım? /var/mail/tkinter diye bir klasör yok zira.

egitimist

Yorum satırlarını silip bir dene.

eldirr

Yorum satırlarından olduğunu sanmıyorum, çünkü tıpkısının aynısını bu programda da yapıyor ki temelde aynı şeyler.

from Tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")
w.pack()

root.mainloop()


cnr@cnr-laptop:~/Desktop/kitsrus_pic_programmer$ ./deneme2.py
from: can't read /var/mail/Tkinter
./deneme2.py: line 3: syntax error near unexpected token `('
./deneme2.py: line 3: `root = Tk()'


Anlamadım..

egitimist

http://wiki.pardus-linux.org/index.php/Programlama:%C4%B0%C3%A7indekiler


Bu adreste python tkinter ile ilgili bilgi var. Python sürümü ve modülleri hakkında da bilgi mevcut.

eldirr

python deneme.py şeklinde çalıştırınca oldu.. Anlamadım gerçi sorunu tam olarak ama. Bir de anapencere değişkenini harf duyarlı olduğu için hata verdi ama önemli değil tabii bunlar..

Verdiğin adresteki rehberi okuyorum şu an.. Teşekkür ederim ilgilendiğin için.

erginemr

Sanırım betikteki yorumlayıcı satırı: "#!/usr/bin/python/" yerine "#!/usr/bin/python" olmalı.

egitimist

Alıntı yapılan: erginemr - 31 Ağustos 2008 - 00:11:25
Sanırım betikteki yorumlayıcı satırı: "#!/usr/bin/python/" yerine "#!/usr/bin/python" olmalı.

"#!/usr/bin/python/" şeklinde kullanım sorun çıkarmıyor. Betikler yorumlanıyor. Linuxta bir dizini hedef göstereceksek "#!/usr/bin/python/" ifadesi "#!/usr/bin/python" ifadesinden farksız.

Betikteki hata aşağıdaki kodda Büyük T yerine küçük t kullanılmış olması. Bunu da eldirr düzeltmiş.
from Tkinter import *

erginemr

#18
Ama bende "/usr/bin/python/" kullanınca betik şu hatayı veriyor:
bash: ./dene.sh: /usr/bin/python/: bad interpreter: Not a directory

"/usr/bin/python/" olmayan bir dizini, "/usr/bin/python" ise, /usr/bin altındaki python derleyici dosyasını (aynı dizindeki python2.5 uygulamasına kısayol olarak) gösteriyor. @eldirr, bu yüzden "python deneme.py" diye yazmak zorunda kaldı.

egitimist

[b]egitimist@pardus Desktop $ ./deneme.py
bash: ./deneme.py: /usr/bin/python/: bad interpreter: Bir dizin değil[/b]


@Ergin, sen haklısın. Son mesajımdan önce yaptığım denemelerde beni yanıltan deneme.py dosyalarının karışması olmuş.

#!/usr/bin/python/ bu kullanım yanlış.

eldirr

Bu arada ben de program için ara yüz çalışmalarına başladım. Zaten çok zor bir şey değil, 3-4 buton ve bir textboxtan oluşucak temel olarak. Fakat Python ile yazdığım ilk program olduğu için alışmak biraz vakit alıyor. (Her satırın sonuna ';' koyuyorum sürekli :D)  Belki ilerleyen zamanlarda canım sıkıldıkça biraz daha estetik şeyler ekleyebilirim. (Program yüklenirken bir yükleme barı gibi..)

#!/usr/bin/python
from Tkinter import *
from tkMessageBox import *
from tkColorChooser import askcolor             
from tkFileDialog   import askopenfilename     

#Functions
def OpenFuseWindow():
'Opens the fuse setting window'
FuseWindow = Toplevel()
FuseWindow.geometry("400x400+600+100")
FuseTitle = FuseWindow.title("Fuses")
FuseExit = Button(FuseWindow, text="OK", command = FuseWindow.destroy)
FuseExit.place(relx=0.8, rely=0.9)

def OpenFile():
'Opens the file select dialog'
askopenfilename()

#Main Window initialization 
MainWindow = Tk()
MainTitle = MainWindow.title("Pic Programmer For K128")
MainWindow.geometry("400x300+15+100")

#Main Window Menu initialization 
menu = Menu(MainWindow)
MainWindow.config(menu=menu)
filemenu = Menu(menu, tearoff=0)
menu.add_cascade(label="File", menu = filemenu)
filemenu.add_command(label="Open File", command = OpenFile)
filemenu.add_command(label="Exit", command = MainWindow.quit)
toolmenu = Menu(menu, tearoff=0)
menu.add_cascade(label="Tools", menu = toolmenu)

#Main Window Buttons initialization 
FileButton = Button(text="Open File", command = OpenFile)
FileButton.place(relx=0.1, rely=0.1)

FuseButton = Button(text="Set Fuses", command = OpenFuseWindow)
FuseButton.place(relx=0.1, rely=0.3)

ExitButton = Button(text="Exit", command = MainWindow.quit)
ExitButton.place(relx=0.8, rely=0.8)

MainWindow.mainloop()


Açıkçası kütüphane pek estetik değil gibi geldi bana (belki benim temadan kaynaklanıyordur ama) QT'de oluşturduğum dialoglar daha güzel görünüyordu diye hatırlıyorum.. Her neyse, önemli olan işlevsellik zaten şu aşamada.

Şimdi benim aklıma takılan nokta şu; asıl programda bütün girdiler komut satırından alınıyor. Burada hepsini ara yüzden alacağım. Sanırım bunu yaparken de komut satırından alınan verinin fonksiyonlara girmeden önceki noktayı yakalayıp, orayı iptal edip ara yüzden mesela bir listbox'tan alınan veriyi oraya koyacağım. Gibi geliyor bana :D Fakat bu sefer de program konsol işlevini kaybedicek ve bence kaybetmese daha iyi. Yani nasıl bir yöntem izlemek lazım ki hem konsoldan hem de ara yüzden çalışsın ?

*Bu arada konu donanımdan çıkıp iyice yazılıma kaydı. Forum yöneticilerinden özür dilerim böyle dağıttığım için konuyu  ::)

MrT3chn0

#21
Merhabalar...

Ben daha Ubuntu'ya başlamış durumda değilim, araştırmaktayım, böyle giderse kullanacağım, çünkü hoşuma gitti.
Küçük bir sorum olacak kullanmakta olduğunuz programlama dili nedir ?

MrT3chn0

#22
Pardon, sanırım Python.

eldirr

Evet Python.

Konsoldan da çalışma işini yapamıcam sanırım. Yani en azından şimdilik arka plana attım.

if (__name__ == '__main__'):
    handle_command_line(sys.argv)


Bu nokta program çalıştırılınca konsoldan argümanları alıp onlara işlemeye başlamasına yarıyor. Ben burayı iptal edip ara yüzü çalıştırıcam. Ama eğer konsoldan çalışma ile arayüzden çalıştırılma arasındaki farkı belirleyen bir parametre varsa buraya basit bir if koyarak her ikisini de çalışır hale getirebilirim belki daha sonra.

eldirr

Bir de Tkinter içerisinde 'Combo Box' mevcut değilmiş sanırım, OptionMenu gibi bir şey var ama o da aslında ComboBox'ın yerini pek tutmuyor..