hocam ters porta ters göndermem gerekli .ben şidmi baştan bidaha anlatim.şimdi benim program harici bu işi yapan başka bir programın hesaplama sistemini gösterim daha iyi kavramış olursunuz.
bakın bu comporttan istediğim numarayı istediğim şekilde hesaplıyan program.
şu text yazdığımız numaramız.
bu ikili bölümlere ayırdığımız yer(ilk te yazan karakter haric onun yanına "A"ekleyik geri kalan 14 karakteri 2şer sayıya bölüyor.)
buda bize verdiği sonuc.
bu veriyi comporttan gönderiği hali şu.
Kod: Tümünü seç
$3A $56 $46 $98 $74 $56 $98 $54 $9B $A2 $7E
bunu kendi programıma ayarladığım zaman.
yani bu programa göre sistem söyle işliyor.
x stirng olarak alalım.
c CRC hesaplamasının sonucu olarak alalım.
Kod: Tümünü seç
x:=Chr('$3A')+Chr('$56')+Chr('$46')+Chr('$98')+Chr('$74')+Chr('$56')+Chr('$98')+Chr('$54')+c+Chr('$7E')
olarak doğru gönderiyor.ve işlem başarıyor.
ben yukardaki gibi yaptığım zaman yani. bir text sayı yazıp ters cevirip+sonuc aldığımda araya sayılar ekliyor.bakın ben söyle yapıyorum.
Kod: Tümünü seç
Var
strVeri : String;
Sonuc : Cardinal;
k:string;
a:string;
b:string;
c:string;
d:string;
g:string;
h:string;
x:string;
begin
k:=copy(sedit45.Text,2,2);
a:=copy(sedit45.Text,4,2);
b:=copy(sedit45.Text,6,2);
c:=copy(sedit45.Text,8,2);
d:=copy(sedit45.Text,10,2);
g:=copy(sedit45.Text,12,2);
h:=copy(sedit45.Text,14,2);
x:=Chr( StrToInt( '$' + sEdit45.Text[1]+'A'))+ Chr(StrToInt( '$' +yaziyicevir(k) ))+ Chr(StrToInt( '$' +yaziyicevir(a) ))+ Chr(StrToInt( '$' +yaziyicevir(b) ))+ Chr(StrToInt( '$' +yaziyicevir(c) ))+ Chr(StrToInt( '$' +yaziyicevir(d) ))+ Chr(StrToInt( '$' +yaziyicevir(g) ))+ Chr(StrToInt( '$' +yaziyicevir(h) ));
Sonuc := CRC16_ozel(x);
strVeri :=Chr($27)+Chr($26)+Chr($02)+Chr($08)+ Chr( StrToInt( '$' + sEdit45.Text[1]+'A'))+ Chr(StrToInt( '$' +yaziyicevir(k) ))+ Chr(StrToInt( '$' +yaziyicevir(a) ))+ Chr(StrToInt( '$' +yaziyicevir(b) ))+ Chr(StrToInt( '$' +yaziyicevir(c) ))+ Chr(StrToInt( '$' +yaziyicevir(d) ))+ Chr(StrToInt( '$' +yaziyicevir(g) ))+ Chr(StrToInt( '$' +yaziyicevir(h) ))+Tersle( Sonuc )+Chr($7E);
ShowMessageFmt( '%x', [ Sonuc ] );
ben yaptığımda comporta veriyi.söyle gönderiyor.
Kod: Tümünü seç
#27#26#02#08#3A#65#64#89#47#65#89#45#33#39#36#33#7E
bana showmessagenın verdiği sonuc.doğru bir sonuc yani.
burda doğru sonuc veriyor yani burdaki sonuc
ve veriyede doğru gönderiyor ama araya iki tane #33 ekliyor.işte ben neden araya 2 tane #33 eklediğini bulamadım hocam benım sorunum bu.