Struct pointer fonksiyona aktarmak

Başlatan volkanunal, 13 Ekim 2017, 15:34:03

volkanunal

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.
Primum nil nocere

JKramer

Message->Len=0; (Serial_Init)
unsigned char data_size=Message->Len-4; (crc_hesapla)
Hepsine bakmadım, başka sorun da olabilir.

volkanunal

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.
Primum nil nocere