Gui kullanımıyla ilgili bir soru?

Başlatan Ali Çetinkaya, 02 Temmuz 2013, 11:16:57

Ali Çetinkaya

Üniversite son sınıf öğrencisiyim. Bu yaz staj döneminde Matlab üzerinden bir çalışma yapıyoruz. Gui üzerinden arayüz tasarlayıp PIC ile Matlab'ı rs232 üzerinden haberleştirip;

1) PIC yazılımı tamam rs232 üzerinden virtual terminal'den istedğim verileri alabiliyorum.

2) Matlab üzerinden gönderdiğim verileri PIC algılayıp istededğim fonksiyonları yaptırabiliyorum.

Yapmaya çalıştığım çalışma Matlab üzerinde push buttona bastığımızda Pıc'ten Rs232 ile gelen ısı bilgilerini static text'e göndermek.  Com1 ve Com2'yi Virtual Serial Port Driver ile birbirine bağlıyorum. Bu programın demosu var şuan acaba demo olduğu için mi? alamıyorum verileri. Anlayamadım bir türlü yaklaşık 1 haftadır bakmadığım ingilizce kaynak okumadığım makale kalmadı desem doğrudur. Ya ben yanlış iz üzerine gidiyorum yada yüzdüm yüzdüm kuyruğuna geldim anlamamıyorum bir türlü. Hani konu üzerinde söyleyeceğiniz en ufak bir yorum bile beni aydınlatmaya yeteceğini düşünüyorum. Yardımlarınızı bekliyorum. Şimdiden teşekkür ediyorum.

clear all;
close all;
clc
seri=serial('COM1','BaudRate',9600, 'Terminator', 'CR');
fopen(seri);
handles.da=fgets(seri);
str=get(handles.da,'String');
set(alma,'String',str);         %buradaki alma static text'in tagı.
fclose(seri);
delete(seri);
clear seri;
     
Aldığım hata ise "Error using get Invalid handle" dır. Bu kodu direk command window içinde çalıştırıdığımda bu haya geliyor. M.file içinde de aynı hatayı alıyorum.

gumush

Gui icinde handles'i daha once kullandiniz degil mi ?

Kullanacaginiz fonksiyonlar icinde

guidata(hObject,handles)

seklinde once deklare etmek gerekiyor.

Aklima test etmek icin once
-farkli bir textbox'dakini alip bir baska textbox'a yazan minik bir deneme
-sonra console altinda dosyaya yazma denemesi
-debug ile satir satir bakarak nerede terlik oldugunu bulmak

geliyor.


Hikmet Gumus  izmir

Ali Çetinkaya

Hocam öncelikle cevapladığınız için teşekkür ederim. Aynen dediğiniz gibi handles'leri programın veya yazıldığı yerde update etmemiz gerekiyormuş. Buğün buraya yazdıktan sonra araştırmalarımda öğrendim. Fscanf(seri,'String',4); ifadesini yeni kullandım. kod içindeki 4'ün anlamı benim cektiğim örneğin 36.2 gibi bir değerin toplam karakter sayısı olduğunu yeni öğrendim. artık değeri command menü içerisinde görebiliyorum ama değeri çekmeme ragmen yine hata veriyor. m.file içerisinde yine hata veriyor. Anlayamadım bir türlü.

clear all;
close all;
clc
seri=serial('COM1','BaudRate',9600, 'Terminator', 'CR');
fopen(seri);
handles.da = fscanf(seri,'String',4);
handles.str=get(handles.da);
set(alma,'String',handles.str);            %buradaki alma static text'in tagı.
fclose(seri);
delete(seri);
clear seri;

% Update handles structure
guidata(hObject, handles);

Warning: Unsuccessful read: Matching failure in format. Error using get Invalid handle diyede hata alıyorum.