CCS C rs 232 den veri okumak...

Katılım
26 Ağu 2008
Mesajlar
124
Puanları
1
Yaş
40
CCS C ile;

bir cihazın seri (rs232) çıkışında, 4800 baud rate oranında "x1y1z0","x1y0z0" şeklinde datalar bulunmaktadır. Bu datalardaki rakamlar(1,0 lar) binary tabanda olup, ben bu dataları alıp desimale çeviricem ve gene pic'in seri portundan 4800 baudrate hızı ile aşağıdaki formatta başka bir pc'ye göndericem...

$GPRMA, X ,*hh

bu formatta sadece X değişkendir ve X yukarıda bahsettiğim binary sayıların desimale çevrilmiş halidir.

Bunu yapan ccs c kodunu yazabilir misiniz acaba ve proteuste sergileyebilir miyiz ?
 
S.A.
picin seri portundan bircihazdan verileri alacaksın 2. portundanda pc ye mi yollayacaksınız ?
 
evet aynen öyle...
x cihazından bahsettiğim formatta aldığım veriyi göndermek istediğim formata sokacağım ve y cihazına bahsettiğim baud rate oranında göndereceğim...


tşkler.
 
proteusda sergilemek için senin cihazın gönderdiği verileri sürekli gönderen veya senin cihaz gibi gönderen bir yazilim yazmak lazım. Veya bunu seri portdan monitorunden elle yollayabilirsin. Böyle birşeyi proteusda simule etmek için bence aşamaları kullan. Aşama bir veriyi doğru alıyor musun? Bağla bir Lcd aldıgın veriyi yaz. Aşama 2 - veriyi dogru yolluyor musun şeklinde ayrı ayrı simulasyonlar kur.

3. Olarak bunu birinin oturup yazması ciddi emek ister.
4.Olarak bu sistem kurgun veri yolu tek mi,yani PC ve cihaz aynı seri yola mı bağlı, öyle ise aynıa anda veri basmalarını mutlaka engellemek gerekiyor. Buna da bir çözüm bulmalısın.

Söylediklerim kafanı kariştirmadı umarım yapmak mümkün ama oturup uğraşmak lazım yani birine bir yazsana deneyecek program değil , iş sana düşer gibi geldi. Sen hazırladıkça kodlarını yaz , biz destek olamya çalişalım. Saygılarımla...
 
ben bi kısmını tamamladım. klavyeden elle girdiğiniz veriyi pic alıyor ve seri porttan gönderiyor. veriyi x cihazından alıp, y cihazına göndermek istediğimi söylemiştim. x cihazından alacağı veri 4800 baud oranında ve veri formatı şu şekilde "t3y1z6u4W", bana gerekli olan ise sadece bu veri içerisindeki değişken rakamlar. örneğin gelen data "t3y1z6u4W" ise göndereceğim data sadece "3164". ben klavyeden "t3y1z6u4W" şeklinde el ile yazınca, bunun sadece rakam kısmını alıp Lcd'de sergilen programı yazdım ancak ben el ile "t3y1z6u4W" yazıp, enter tuşuna basınca 3164 sayısını elde ediyorum, sonuçta gerçekte enter a basmak diye birşey yok... yazdığım programı birazdan paylaşacağım... ilginiz için tşk ederim.
 
işte yazdığım kod ve yanında açıklamalarını da yazdım. amacım x cihazından gelen ve harflarin içerisindeki rakamlar ile oluşan sayıyı y cihazına göndermek... o rakamlar ile oluşan 4 basamaklı sayı, derinlik bilgisidir.
hrcqm.jpg


hrctb.jpg
 
kodlar görunmuyor sanırım tekrar paylaşıyorum.

hsdqg.jpg


el ile "t4y2o5v3" yazıp enter'a basınca bunun sadece rakam kısmını seri porttan gönderen programı linkte paylaştım, üsttede proteusta sergilenmiş hali var. ancak "t4y2o5v3" şeklinde veriler gerçekte seri porttan devamlı olarak pic'e gelicek, yani benim yaptığım gibi el ile "t4y2o5v3" yazmak diye bişi yok aslında. Bunu nasıl yapabilirim ? mesela pic'e seri porttan gelen "t4y2o5v3" şeklinde verileri "char klavye[8]" değişkenine aktarabilirsem olur mu?
 
yapmak istediğim özetle şu:
hsjld.jpg
 
entera basma diye birşey yoksa veriyi böyle alma hep t geleceği kesinse!!!!

interrupta söyle yaz;
{
unsigned char karakter;
karakter=getch();
if(karakter=='T')
{
tampon[0]=getch();
tampon[1]=getch();
tampon[2]=getch();
.
.
.
tampon[7]=getch();

esasveri[0]=tampon[1];
esasveri[1]=tampon[3];
esasveri[2]=tampon[5];
eassveri[3]=tampon[7];
}

else
return;
}

Bu işlemin sonucunda istedigin veriyi esasveriye aldık. Geriye onu yollamak kalıyor. Hepsi bu kadar.
Burda unsigned char tampon[10]
ve unsigned char esasveri[5] şeklinde iki genel değişken tanımlaman lazım. Yani use RS232 in altına yazabilirsin. Sonucu merakla beklemekteyim. Profosyonel tarzda yapılsaydı her interrupta bir karakter circual bir buffer tanımlanabilirdi ama senin işini bu çözer...

Yabancıları boşver , biz sana yardım ederiz :)
 
hahaha... zaten bıraktım o cavurları :D sinirimi bozdular. tşkler dostum saolasın :)
bu arada kesmeye gerek yok sanki the_dalga, ? ?
 

Forum istatistikleri

Konular
129,755
Mesajlar
929,687
Kullanıcılar
452,504
Son üye
davut111

Yeni konular

Geri
Üst