Witam. tworzę sobie łańcuch przy pomocy funkcji sprintf celem wysłania go przez interfejs szeregowy.
case 1: { sprintf(cOutBuff,"N4=%d;%d;%d",ulCount4,usBridgeSignalValue,usBridgePhaseValue); // sprintf(cOutBuff,"%s","N4=12345;9876;1234"); break;
zmienne są typu unsigned short. No i od czasu do czasu losowo coś się zacina np po 20 albo po 150 transmisjach. Jeśli zamiast tej linii dam tę zakomentowaną to wszystko chodzi dobrze czyli stale wysyła ten ciąg znaków. Jeśli zamienię %d na %s to program chodzi ale oczywiście wysyła robaczki zamiast ciągów cyfr. Czyli tak jakby wysypywała się konwersja z int na ascii wymuszona parametrem %d. Czy ktoś wie czemu? Pewnie mógłbym to zastąpić funkcją itoa ale żal mi rezygnować ze zwięzłego zapisu. Programik jest na ARMa pod Freertosem.