chksum -checksum - comport

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zalimsevki
Üye
Mesajlar: 38
Kayıt: 02 Ara 2005 07:36
Konum: Denizli

chksum -checksum - comport

Mesaj gönderen zalimsevki »

comporttan <STX> <ETX> protokolü ile comporttan veri yolarken .. CHKSUM bilgisininde gönderilmesi gerekiyor ..
<SOH> <ETX> MESSAGE <STX> CHKSUM <EOT>
Şimdiye kadar bulabildiğim yerlerden gönderdiğimiz her karakterin DEC değerlerini bulup topladıktan sonra 256 ya bölümünden sonra kalanını HEXADECIMAL sayıya çevirerek bu değerin bulunabileceği şeklinde bilgilere ulaştım .. Bu işlemi uyguladığımda elimdeki dökümandaki CHKSUM örneklerindeki değerlerin ya bi gerisine ya iki ötesi gibi bi değere ulaşabiliyorum .. STX ETX protokolündeki doğru CHKSUM değerini hesaplanın yolu nedir ..
Tüm forum üyelerine selamlar ..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

1 byte mı 2 byte mı Checksum?
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Aklıma gelen şeylerden birisi de ya fazladan karakter topluyorsun veya eksik.

Genellikle sadece MESSAGE içindekiler toplanarak hesaplanır.
zalimsevki
Üye
Mesajlar: 38
Kayıt: 02 Ara 2005 07:36
Konum: Denizli

çözüm

Mesaj gönderen zalimsevki »

Şu şekilde uyguladığımda sorun çözüldü .. Aynı sorunu yaşayabicek arkadaşlar için ..

CHKSUM= TOTAL- ((TOTAL DIV 256)*256)

ÇIKAN DEĞERİ HEXADECİMAL SAYIYA ÇEVİRİYORUZ ..
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Para makinalarıyla alakalı bir uygulama yazarken, bozuk para makinasını sorgularken CheckSum yöntemi ile sorguluyordum. Ve şöyle bir yapı vardı.

Sorguyu COM port ile gönderirken:

Komut := Chr(10) + Chr(5) + Chr(20)
CheckSum := Chr(221);

ComPortaGonder(Komut + CheckSum);

Çözüm ise şudur.

CheckSum := Chr(256 - ((10+5+20) Mod 256));

Sizin gösteriminiz ile;

CHKSUM= 256 - (TOTAL MOD 256);

Saygılar..
Cevapla