ComPort Veri Alma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
com port okuma
Bende bir ikigundur aynı bileşenle pro_imaj arkadaşın bahsettiği sorunla ugrasıyorum gercekten nedir bunun sebebi acaba bilen varsa yardımcı olursa cok sevinirim 3 gundur ugrasıyorum ama bulamadım sorunu bir turlu
-----Aldığım veriler
0
04
047
0470
04701
047010
0470100
04701005
047010050
0470100505
04701005050
047010050500
0470100505000
04701005050000
047010050500001
0470100505000010
04701005050000104
047010050500001047
0
01
010
0100
01005
010050
0100504
01005040
010050400
0100504000
01005040000
010050400001
0100504000010
01005040000104
010050400001047
0100504000010470
01005040000104701
010050400001047010
0
05
050
0503
05030
050300
0503000
05030000
050300001
0503000010
05030000104
050300001047
0503000010470
05030000104701
050300001047010
0503000010470100
05030000104701005
050300001047010050
2
20
200
2000
20000
200001
2000010
20000104
200001047
2000010470
20000104701
200001047010
2000010470100
20000104701005
200001047010050
2000010470100501
20000104701005010
200001047010050100
0
00
001
0010
00104
001047
0010470
00104701
001047010
0010470100
00104701005
001047010050
0010470100500
00104701005000
001047010050000
0010470100500000
00104701005000000
001047010050000001
-----Olması gereken veriler![]()
047010050500001
047010050400001
047010050300001
047010050200001
047010050100001
Merhaba Recep Hocam.rsimsek yazdı:Okunan değer istediğin uzunlukta değilse işlem yaptırma.
Bahsettiğiniz şekilde düşündüm ve öyle yapmaya çalışıyyordumki şöyle bir sorunla karşılaştım. Barkod numaralarını sizde dikkat ettiyseniz 13 hane bir barkod için her okumada baştan 3 tane sona atıyor yani yabit bişey yok hocam .Keşke sizin bahsettiğiniz şelikde olsaydı verilere ulaşmak gerçekten çok rahat olurdu.
Not:anlamadığım bir nokta heyper terminal ile veri aldığımda böyle bir sorun vermiyor okunan barkodları yanyana atıyor.
Saygılarımla
Teşekkür Ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
hocam gerçi recep hocam da bahsetmiş ama bende söyleyeyim normalde bi değişkene at gelen veriyi atıyorum str diye bi değişken daha sonra 2.bi değişken ile 1.değişkene ekle sürekli yani toplam:=toplam+str; ile halledebilirsin.2 adet memo koy memo1.lines.add(str) olsun memo2.lines.add(toplam); bu şekilde dene goreceksinki gelen veri değişecektir yani memo1e yine bahsettiğin şekilde veri gelecek ama memo2 ye sadece barkod numarası gelecek..kolay gelsin
Merhaba;
@cuneyt22 sizin belirttiğiniz şekilde bişeyin olması ihtimal değil. Recep abinini belirtiği şekilde bileşen ayarlarıyla vs oynadım değişen bişey olmadı.
Bu işi bu kadar zor olmaması gerek aslında. yani componenet ile yapıldığından dolayı bağlantı ayarları yapıldıktan sonra ilgili veriyi atması gerek diye düşünüyorum.
Saygılarımla
Teşekkür ederim
@cuneyt22 sizin belirttiğiniz şekilde bişeyin olması ihtimal değil. Recep abinini belirtiği şekilde bileşen ayarlarıyla vs oynadım değişen bişey olmadı.
Bu işi bu kadar zor olmaması gerek aslında. yani componenet ile yapıldığından dolayı bağlantı ayarları yapıldıktan sonra ilgili veriyi atması gerek diye düşünüyorum.
Saygılarımla
Teşekkür ederim
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
hocam denedinizmi.. ben her seferinde 2 adet memo koyuyorum bi.memoya str yi yazdırıyorum 2.memoya sonuc:=sonuc+str yi yani sonucu yazdırıyorum memo1 e bahsettiğin şekilde geliyor ama memo2 ya çok anlaşılır şekilde geliyor bi deneyin
bunu bi deneyin...
Kod: Tümünü seç
private
{ Private declarations }
SonucStr: String;
procedure TGensFrm.Comm1RxChar(Sender: TObject; Count: Integer);
var
str :String;
begin
Str:='';
SetLength(Str, Count);
Comm1.Read(Str[1], Count);
SonucStr :=(SonucStr + Str);
Memo1.Text := Memo1.Text + Str;
memo2.Lines.Add(Sonucstr);
end;
selam
cuneyt22 üstadın çözümü oldukça kısa ve güzel bi çözüm.
ancak;sorunu yaşıyan arkadaşın gelen verilerinin formatı farklı olabilir.
örnek:
memo ya ('cüneyt22'+#13#10+'cüneyt22' ) gibi birstring yazılırsa sonuç altalta olur.
demek istediğim comporta veri gönderen arayüz ya da cihaz, istemediğiniz yerlere #10 koyuyor olabilir.
iyi çalışmalar.
not:
#13:carriage return
#10:newline
cuneyt22 üstadın çözümü oldukça kısa ve güzel bi çözüm.
ancak;sorunu yaşıyan arkadaşın gelen verilerinin formatı farklı olabilir.
örnek:
memo ya ('cüneyt22'+#13#10+'cüneyt22' ) gibi birstring yazılırsa sonuç altalta olur.
demek istediğim comporta veri gönderen arayüz ya da cihaz, istemediğiniz yerlere #10 koyuyor olabilir.
iyi çalışmalar.
not:
#13:carriage return
#10:newline
Merhaba;cuneyt22 yazdı:Kod: Tümünü seç
private { Private declarations } SonucStr: String; procedure TGensFrm.Comm1RxChar(Sender: TObject; Count: Integer); var str :String; begin Str:=''; SetLength(Str, Count); Comm1.Read(Str[1], Count); SonucStr :=(SonucStr + Str); Memo1.Text := Memo1.Text + Str; memo2.Lines.Add(Sonucstr); end;
SetLength(Str, Count); bu satırdaki count nedir hocam neyin sayısı ?
[Error] Unit1.pas(173): Undeclared identifier: 'Count'
Comm1.Read(Str[1], Count); bu satırdaki Comm1.Read comport 1den
bilgi almayamı yarıyor. bu iki satırda hata oluşuyorda
[Error] Unit1.pas(174): Undeclared identifier: 'Comm1'
Sizin yapmak istdiğiniz işlemi yanlış bir yol galiba hocam tam anlayamadım.
Yani bu işlem ile direk porttan bilgi alıp onuda ilgili işlemden sonra memo2 yemi atıyorsunuz anlayamadım.
Saygılarımla
Teşekkür ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
Merhaba;kutal yazdı:selam
ekrana yazdırmak için yazdığınız kod satırını yollarsanız sorunu çözebiliriz sanırım..
iyi çalışmalar.
İlgili kod 1. sayfadaki @mege hocamın verdiği koddur.
Saygılarımla
Teşekkürler.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________
@cuneyt22 de bahsetmiş, porttan sürekli bilgi aktığı için okunan bilgiler bayt bazında ise bir string değişkende toplanabilir ve bu değişkende istenen uzunluğa eriştiğinde değişmiyorsa "budur" denebilir.. Daha önce elektronik terazilerden bilgi alış-verişi yapmıştım. Bir de kullanılan bileşenin satır bazında yada bayt bazında okuma durumu olabilir.. Buffer/tampon olayına da dikkat etmek lazım 

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Re: com port okuma
selamargetek yazdı:Bende bir ikigundur aynı bileşenle pro_imaj arkadaşın bahsettiği sorunla ugrasıyorum gercekten nedir bunun sebebi acaba bilen varsa yardımcı olursa cok sevinirim 3 gundur ugrasıyorum ama bulamadım sorunu bir turlu-----Aldığım veriler
.
.
.
0
00
001
0010
00104
001047
0010470
00104701
001047010
0010470100
00104701005
001047010050
0010470100500
00104701005000
001047010050000
0010470100500000
00104701005000000
001047010050000001
-----Olması gereken veriler![]()
047010050500001
047010050400001
047010050300001
047010050200001
047010050100001
aldığınız verilere bakınca belli bir sırayla gelmekteolduğu görülüyor. yapmanız gereken yazdığınız kodu bu sıraya uydurmak. aslında gönderilenle aldıgınız şey aynı, ancak siz bunu ekrana bastırdığınızda farklıymış gibi görünüyr hepsi bu.
bide olması gerekenlerin içinde gelen verilere bakarak şu 13 byte ında en sonda olması gerekir:
047010050000001
not: veriyi gönderen arayüzün ya da cihazın veri göndermede kulandıgı formatı bilirseniz sorun kalmayacaktır.
Merhaba;
Konuyla ilgili birsürü msj yazıldı bu yüzden tekrar bişeyler sormaya utanıyorum:oops: Sizlerinde belirttiği şekilde tüm çözüm yollarını denedim.
Şu an barkod bitimine nokta koyduruyorum. ilk başka oldu diye çok sevinmiştim ama olmadı nedeni ise şöyle
6 tane barkod okuttum ve çıkan sonuç.
Olması gereken
Yukarıdaki doğru sonucu heyper terminal ile elde ettim. Bu kadar garip bir olay olurmu bişlmiyorum nerede yanlış yapıyorum acaba. bu el terminalinden bilgi almak bu kadar zormu ya. artık ne yapacağımı bilmiyorum...
Saygılarımla
Teşekkürler.[/quote]
Konuyla ilgili birsürü msj yazıldı bu yüzden tekrar bişeyler sormaya utanıyorum:oops: Sizlerinde belirttiği şekilde tüm çözüm yollarını denedim.
Şu an barkod bitimine nokta koyduruyorum. ilk başka oldu diye çok sevinmiştim ama olmadı nedeni ise şöyle
6 tane barkod okuttum ve çıkan sonuç.
Kod: Tümünü seç
0
04
047
0470
04701
047010
0470100
04701005
047010050
0470100505
04701005050
047010050500
0470100505000
04701005050000
047010050500001
047010050500001.
047010050500001.0
047010050500001.04
7
70
701
7010
70100
701005
7010050
70100504
701005040
7010050400
70100504000
701005040000
7010050400001
7010050400001.
7010050400001.0
7010050400001.04
7010050400001.047
7010050400001.0470
1
10
100
1005
10050
100503
1005030
10050300
100503000
1005030000
10050300001
10050300001.
10050300001.0
10050300001.04
10050300001.047
10050300001.0470
10050300001.04701
10050300001.047010
0
05
050
0502
05020
050200
0502000
05020000
050200001
050200001.
050200001.0
050200001.04
050200001.047
050200001.0470
050200001.04701
050200001.047010
050200001.0470100
050200001.04701005
0
01
010
0100
01000
010000
0100001
0100001.
0100001.0
0100001.04
0100001.047
0100001.0470
0100001.04701
0100001.047010
0100001.0470100
0100001.04701005
0100001.047010050
0100001.0470100500
0
00
000
0000
00001
00001.
00001.
Kod: Tümünü seç
047010050500001.047010050400001.047010050300001.047010050200001.047010050100001.
047010050000001.
Saygılarımla
Teşekkürler.[/quote]
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
_________________