Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: volkanunal - 13 Ekim 2017, 15:34:03

Başlık: Struct pointer fonksiyona aktarmak
Gönderen: volkanunal - 13 Ekim 2017, 15:34:03
Merhabalar , şöyle bir yapım var.


#define BT_MESSAGE_LEN 64
struct Message_Inc{
unsigned char Stx;
unsigned char Len;
unsigned char Command;
unsigned char Data[BT_MESSAGE_LEN];
unsigned char Etx;
unsigned char Crc;

};


CRC değeri diğer üyelerin toplamını vermesi gerekiyor , bir nevi checksum diyebilirim.Şöyle bir şey hazırladım


unsigned char crc_hesapla(struct Message_Inc *Message)
{
unsigned char data_size=Message->Len-4;
unsigned char sum_index=0;
unsigned char crc_sum=0;
for(sum_index=0; sum_index<data_size; sum_index++)
{
crc_sum +=Message->Data[sum_index];

}
crc_sum  += ( Message->Stx + Message->Command + Message->Etx + Message->Len);
cout<<crc_sum;

return crc_sum;
}


Başlangıç için mevcut değerim bu şekilde

void Serial_Init(struct Message_Inc *Message)
{
Message->Stx=0x02;
Message->Etx=0x03;
Message->Command=0;
Message->Len=0;
Message->Crc=crc_hesapla(Message);
int i;
for(i=0; i<BT_MESSAGE_LEN; i++)
{
Message->Data[i]=0;
}


}


int main(int argc, char** argv) {
struct Message_Inc test;
Serial_Init(&test);

return 0;
}

Kullandığım da ekranda anlamsız ifadeler ile karşılaşıyorum ve ifadeler değişken geliyor.Burada temel olarak 1byte stx , etc ,crc değerleri almam gerekiyor.Ancak bir yerlerde hata yapıyorum sanırım.
Başlık: Ynt: Struct pointer fonksiyona aktarmak
Gönderen: JKramer - 13 Ekim 2017, 15:43:21
Message->Len=0; (Serial_Init)
unsigned char data_size=Message->Len-4; (crc_hesapla)
Hepsine bakmadım, başka sorun da olabilir.
Başlık: Ynt: Struct pointer fonksiyona aktarmak
Gönderen: volkanunal - 13 Ekim 2017, 15:56:33
Message_Header ::= SEQUENCE
{
STX ::= OCTET STRING ( SIZE(1) ),
Len ::= OCTET STRING ( SIZE(1) ),
Command ::= OCTET STRING ( SIZE(1) ),
Data ::= OCTET STRING( Len - SIZE(4) ),
ETX ::= OCTET STRING ( SIZE(1) ),
CRC ::= OCTET STRING ( SIZE(1) )
}

Genel olarak hazırlamaya çalıştığım yapım şu şekilde.
Alıntı yapılan: JKramer - 13 Ekim 2017, 15:43:21
Message->Len=0; (Serial_Init)
unsigned char data_size=Message->Len-4; (crc_hesapla)
Hepsine bakmadım, başka sorun da olabilir.