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 ..
chksum -checksum - comport
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
-
- Üye
- Mesajlar: 38
- Kayıt: 02 Ara 2005 07:36
- Konum: Denizli
çözüm
Ş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 ..
CHKSUM= TOTAL- ((TOTAL DIV 256)*256)
ÇIKAN DEĞERİ HEXADECİMAL SAYIYA ÇEVİRİYORUZ ..
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
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..
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..