Ok, Thank you. I modified the code as follows
Code:
#include <stdio.h>
typedef unsigned char uint8_t;
typedef unsigned long uint64_t;
/*
The partnumber should be transmitted as BCD
The version suffix should be transmitted as Ascii
*/
struct SwPartNumber_tag
{
uint8_t partNumber[10];
uint8_t versionSuffix[4];
}SwPartNumber={"1234567","A"};
void SwPartNumberRightAdjustFunction(uint8_t *);
void ConvertToBCDFunction(uint8_t *s);
void VersionFillSpace(uint8_t *s);
uint8_t finalResult[20];
uint8_t g_finalcount_u8=0;
int main(void)
{
uint8_t stringRightJustified[10];
uint8_t i=0;
SwPartNumberRightAdjustFunction(SwPartNumber.partNumber);
printf("%s\n",SwPartNumber.partNumber);
ConvertToBCDFunction(SwPartNumber.partNumber);
VersionFillSpace(SwPartNumber.versionSuffix);
for (i = 0; i < g_finalcount_u8; ++i)
{
printf("%x\n", finalResult[i]);
}
return 0;
}
void SwPartNumberRightAdjustFunction(uint8_t *s)
{
uint8_t l_index_u8=0;
uint8_t l_stringlength_u8=0;
uint8_t l_count_u8=0;
uint8_t stringNew[10];
l_index_u8=0;
l_stringlength_u8 = strlen(s);
l_count_u8 = 9 - l_stringlength_u8;
if(l_stringlength_u8 - 1 < 8)
{
while(--l_count_u8)
{
stringNew[l_index_u8] = '0';
l_index_u8++;
}
}
stringNew[l_index_u8] = '\0';
strcat(stringNew,s);
strcpy(s,stringNew);
//printf("PartNumber=%s\n", s);
}
void ConvertToBCDFunction(uint8_t *s)
{
uint8_t l_index_u8=0;
uint8_t l_data_one_u8=0;
uint8_t l_data_two_u8=0;
uint8_t l_final_data_u8=0;
uint8_t l_stringlength_u8=strlen(s);
for(l_index_u8=0; l_index_u8 < 8; l_index_u8 += 2)
{
l_data_one_u8 = s[l_stringlength_u8-1] - '0'; /* Will extract the data */
l_data_two_u8 = s[l_stringlength_u8-2] - '0'; /* Will extract the data */
l_final_data_u8 = (l_data_one_u8 | (l_data_two_u8 << 4));
l_stringlength_u8 -= 2;
printf("%d\t%d\t%d\n",l_data_two_u8,l_data_one_u8,l_final_data_u8);
finalResult[g_finalcount_u8++]=l_final_data_u8;
}
}
void VersionFillSpace(uint8_t *s)
{
uint8_t l_versionLen_u8=0;
uint8_t l_count_u8 =0;
uint8_t versionFill[10];
uint8_t l_index_u8=0;
uint8_t i=0;
//printf("s=%s\n",s );
l_versionLen_u8 = strlen(s);
l_count_u8 = 4 - l_versionLen_u8;
if(l_versionLen_u8 <= 3)
{
while(--l_count_u8)
{
versionFill[l_index_u8] = ' ';
l_index_u8++;
}
}
versionFill[l_index_u8]='\0';
strcat(versionFill,s);
//versionFill[3]='\0';
//printf("Version= %s\n",versionFill);
strcpy(s,versionFill);
for (i = 0; i < 3; ++i)
{
finalResult[g_finalcount_u8++] = s[i];
}
printf("Version=%s\n",s);
}