我有 EK-TM4C1294XL,但这可能是一个一般的 C 代码问题,如果我进入该板,我就会被锁定在板论坛上发布!?
我通过 UDP 接收命令字符串。 处理完命令后、我返回一个字符串、该字符串包含许多在新字符串中拼接在一起的元素。
或者、如果出现未知命令或某些转换错误、我将返回非确认(NAC)。
我以某种方式遇到了一个问题。 如果返回字符串太长、堆栈上的返回地址将被覆盖!
如果返回字符串足够短、则一切都适用于数千条命令!
void ACK (char Cmd[]、char answ[]) { 字符 res[]="0"; strcat (res、Cmd); strcat (res、"); strcat (res、answ);//如果 res 字符串结束太长,则返回地址被覆盖! udp_server_send (res); } void udp_incomming (void * arg、struct udp_PCB * PCB、struct pbuf * p、struct ip_addr * addr、u16_t port) { 字符命令[25]; 字符 cat[5]、SweepParam[9]; char answe[]="---"; char b[10]; 无符号短整型 c; int a、i、j; uint32_t Cardinal; if (p!= NULL){ memcpy (命令、p->payload、p->len); Command[p->len]=0; memcpy (catch、Command、4); cat[4]='\0'; ConvertError=false; //catch 是一个短字符串,用于确定我收到了哪个命令 --- IF (转换错误) NAC (命令); 其他 ACK (命令,应答); } pbuf_free (p); }
在 C 语言方面、我并不是都受过良好的教育、但我应该在堆栈上留出更多空间、或者也许可以开始使用指针。
但所有这些“大”的东西对我来说还是相当陌生的!
如何继续?