char asciiHex[sizeof(kolchislo)];
memcpy(asciiHex, kolchislo, 2);
int decValue = strtol(asciiHex, NULL, 16);
// Добавление +1
decValue += 1;
snprintf(asciiHex, sizeof(asciiHex), "%X", decVal)
.byte kolchislo[]={0x00,0x00,0x00,0x00,0x00};
razmer=1;// может и 2 и 3 быть, от этого завесить дальнейший размер
char asciiHex[razmer];
for(int i = 0;i<razmer;i++){
asciiHex[i]=kolchislo[i];
}
int decValue = strtol(asciiHex, NULL, 16);
decValue++;
char hexAscii[]={0x00,0x00,0x00,0x00};
sprintf(hexAscii, "%02X", decValue);
for (int i=0;i<sizeof(hexAscii);i++){
Serial.printf("%X\n", hexAscii[i]);
}
char asciiHex[razmer];
char asciiHex[sizeof(kolchislo)];
asciiHex[razmer] = 0;
Serial.printf("%X\n", decValue);
char asciiHex[sizeof(kolchislo)+1];
for(int i = 0;i<razmer;i++){
asciiHex[i]=kolchislo[i];
}
asciiHex[sizeof(kolchislo)]='\0';
for (int i=0;i<sizeof(asciiHex);i++){
Serial.printf("%X\n", asciiHex[i]); // 30
}
int decValue = strtol(asciiHex, NULL, 16);
byte kolchislo[]={0x00,0x00,0x00,0x00,0x00};
razmer=1;// может и 2 и 3 быть, от этого завесить дальнейший размер
char asciiHex[sizeof(kolchislo) + 1];
for(int i = 0;i<razmer;i++){
asciiHex[i]=kolchislo[i];
}
asciiHex[razmer] = 0;
int decValue = strtol(asciiHex, NULL, 16);
decValue++;
Serial.printf("%X\n", decValue);
Как сделать так, чтобы он не 25, а сразу 19 писал?
Serial.printf("%X\n", decValue);
Buffer[iBuf] = Serial2.read();
byte buffff[Buffer[11]];// знаю что в 11 находиться всегда длина
if (Buffer[11]==1){
buffff[0]=Buffer[12];
razmer=1;
for(int i = 0;i<razmer;i++){
kolchislo[i]=buffff[i];
}
}else if(Buffer[11]==2){
razmer=2;
buffff[0]=Buffer[12];
buffff[1]=Buffer[13];
for(int i = 0;i<razmer;i++){
kolchislo[i]=buffff[i];
}
}
char asciiHex[sizeof(kolchislo) + 1];
for(int i = 0;i<razmer;i++){
asciiHex[i]=kolchislo[i];
}
asciiHex[razmer] = 0;
int decValue = strtol(asciiHex, NULL, 16);
decValue++;
Serial.printf("%X\n", decValue);
int mon = 65478;
int count = snprintf(NULL, 0, "%i", mon); // Определяем количество символов
char hexAsciimon[count];
for (int i=0;i<sizeof(hexAsciimon);i++){
hexAsciimon[i]=0x00;
}
sprintf(hexAsciimon, "%i", mon);
в Serial2.available() я проверяю всё что мне приходит
вчера работала ,сегодня нет
Ваш код пробую пишет 2А в первую ячейку, голова кругом
не переводить из HEX ASCII в DEC, а потом обратно, а сразу на его уровне прибавить
А ещё один момент, когда я вывожу на экран в формате допусти "%X" он же не меняет сам себя, а только нам отображать да?
printf("%s\n", asciiHex);
с делал вот так
strtol(asciiHex, NULL, 0);
реально?
unsigned int str_to_uint(char *str) {
unsigned int result = 0;
while (*str != '\0') {
result = result * 10 + *str - '0';
}
return result;
}
void uint_to_str(unsigned int val, char *buf, int bufsize) {
unsinged int div = 1;
while (val / div > 10) {
div *= 10;
}
while (div > 0 && bufsize > 1) {
*(buf++) = '0' + (val / div);
val = val % div;
div /= 10;
bufsize -= 1;
}
*buf = '\0';
return;
}
byte kolchislo[]={0x00,0x00,0x00,0x00,0x00};
razmer=1;// может и 2 и 3 быть, от этого завесить дальнейший размер
char asciiHex[razmer+1];
for(int i = 0;i<razmer;i++){
asciiHex[i]=kolchislo[i];
}
asciiHex[razmer+1]='\0';
int decValue = strtol(asciiHex, NULL, 16);
decValue++;
char hexAscii[]={0x00,0x00,0x00,0x00};
sprintf(hexAscii, "%02X", decValue);
for (int i=0;i<sizeof(hexAscii);i++){
Serial.printf("%X\n", hexAscii[i]);
}