Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

SeriPort Sorun

Başlatan avignon, 05 Mayıs 2009, 17:57:05

avignon



Yukarıdaki devreyi seri iletişim için board üzerine kurdum fakat hem PIC'den hemde veri gönderdiğim zaman hemde PC den gönderdiğim zaman veriyi okuyamıyorum. PC den veri okumaya çalıştığım değişkene devamlı 0 değeri veriyor. PIC'den gönderdiğim veriyi alamıyor. Devrede mi yanlışlık var yoksa kodlar da mı çözemedim. Aşağıda hem PC için Java kodlarını ve PIC için Proton basic kodlarını veriyorum.

Java kodları
import app.*;
import core.*;
public class asd 
{
public static void main(String[] args)throws Exception
	{
		Parameters param = new Parameters();
		param.setPort("COM2");
		param.setBaudRate("9600");
		param.setParity("E");
		Com com2 = new Com(param);
                int veri;
                while(true){
                veri=com1.receiveSingleDataInt();
                System.out.println(veri);
	}
}


Proton Basic Kodları
device=16f628
Config INTRC_OSC_CLKOUT, MCLRE_OFF, LVP_OFF, WDT_OFF, PWRTE_OFF, CP_OFF, BODEN_OFF
trisb=%00000000
declare SERIAL_PARITY EVEN
DECLARE SERIAL_DATA 9
input porta.1
output porta.0
dim veri as byte
veri=10
BASLA:
serout porta.0,9600,[dec2 veri]
goto basla
end


Java seri port okuma için native kod kullandım.

lojikmemo1

Alıntı yapılan: "avignon"(Resim gizlendi görmek için tıklayın.)

Yukarıdaki devreyi seri iletişim için board üzerine kurdum fakat hem PIC'den hemde veri gönderdiğim zaman hemde PC den gönderdiğim zaman veriyi okuyamıyorum. PC den veri okumaya çalıştığım değişkene devamlı 0 değeri veriyor. PIC'den gönderdiğim veriyi alamıyor. Devrede mi yanlışlık var yoksa kodlar da mı çözemedim. Aşağıda hem PC için Java kodlarını ve PIC için Proton basic kodlarını veriyorum.

Java kodları
import app.*;
import core.*;
public class asd 
{
public static void main(String[] args)throws Exception
	{
		Parameters param = new Parameters();
		param.setPort("COM2");
		param.setBaudRate("9600");
		param.setParity("E");
		Com com2 = new Com(param);
                int veri;
                while(true){
                veri=com1.receiveSingleDataInt();
                System.out.println(veri);
	}
}


Proton Basic Kodları
device=16f628
Config INTRC_OSC_CLKOUT, MCLRE_OFF, LVP_OFF, WDT_OFF, PWRTE_OFF, CP_OFF, BODEN_OFF
trisb=%00000000
declare SERIAL_PARITY EVEN
DECLARE SERIAL_DATA 9
input porta.1
output porta.0
dim veri as byte
veri=10
BASLA:
serout porta.0,9600,[dec2 veri]
goto basla
end


Java seri port okuma için native kod kullandım.


Merhaba javadan çok fazla anlamasam da java kodları doğru görünüyor. PIC programında port a için port yönlenlendirmesi yok yani Porta1 input ve Porta0 output olarak trisa dan ayarlanmamış birde en önemlisi cmcon=0x07 diyerek cmcon registerine 7 değerini atamalısın çünki analog comparator lar normalde açıktır bunu bu register ile kapatmalıyız.

Bu adreste de java com örneği var bunu da bir incele istersen.

Kolay gelsin
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

ferdem

Adım adım gitmekte fayda var:
Adım 1) Herhangi bir terminal programı(docklight tavsiye edilir) ile max232 nin RX-TX kısa devre olduğunda gönderdiğiniz bilginin aynen geri geldiğinden emin olun.

Adım1 tamam değilse bilgisayar "comport" u görmüyor veya farklı bir donanım arızası var.

Adım1 tamamsa:
Adım 2) Gönderdiğiniz veriyi PIC in RX bacağına bağlayıp doğru data geldiğinde PIC e led yaktırın.

Adım2 tamam değilse PIC yazılımında bir sorun var, yazılımı düzeltmeye uğraşmalısınız. Simülasyon yardımı alabilirsiniz.

Adım2 tamamsa:
Adım 3) Aynı datayı java programınızla gönderin ve ledin yandığından emin olun.

Adım3 tamam değilse yazdığınız java kodunda bir problem var demektir.

Adım3 de tamamsa:
Bilgisayardan PIC e veri aktarımı gerçekleşiyor, projeye devam.

Kolay gelsin.

avignon

ferdem arkadaşım dediklerini yaptım. 2. ve 3. durumları uyguladım düzgün bir şekilde çalşıyor. Belirli aralıkta sinyal gönderdim buna karşılık led o aralıkta yandı. Fakat bahsettiğin birinci durum için verinin geri dönmesi olmadı. Daha doğrusu docklight programında veri gönderme ve alma işlemini tam olarak çözemedim. Alınan verilerin nerede görüntülendiğini çözemedim. RS232 çıkış bacaklarındaki rx/tx bacaklarını birbirine bağladım ve veri geri gelmedi. Ancak java programında portun görüldüğüne dair mesaj alıyorum. Docklight programında tam olarak veri nerden gönderiliyor ve alınan verileri nerden görüntüleneceğine dair biraz bilgi verebilirsen çok sevinirim.

ferdem

Docklight'ta veri geldiği zaman ana ekranda görülür, verinin görüntülenmesi için ek herhangi bir ayarlama yapmaya gerek yok. Ana ekranda sizin gönderdikleriniz mavi, gelen veriler kırmızı olarak gösteriliyor, veri geldiğinde görmeme gibi bir risk olmaz, ondan emin olabilirsiniz.(Kısa devre testi örnek ekran görüntüsü)

2. ve 3. adımlar çalışıyorsa demek ki veriyi gönderebiliyorsunuz. 2. ve 3. adımın çalışıp 1. nin çalışmaması RX de bir sorun olduğunu gösteriyor. Verinin TX ten çıktığına eminiz, RX ile kısa devre yaptığımızda geri gelmiyorsa sorun RX pinindedir. RX in bağlantısını bir yerlerde(max232 de mesela) yanlış yapmış olabilirsiniz.

İyi çalışmalar, kolay gelsin.