硬汉嵌入式论坛

 找回密码
 立即注册
查看: 958|回复: 3
收起左侧

[RL-TCPnet] stm32f407用rl-tcpnet和rtx5发送用tcp客户端发送json格式数据

[复制链接]

2

主题

1

回帖

7

积分

新手上路

积分
7
发表于 2024-10-24 14:22:57 | 显示全部楼层 |阅读模式
stm32f407用rl-tcpnet和rtx5发送用tcp客户端发送json格式数据,发送前几条数据没问题,十几条数据之后,发送出去的字符串前会多个脏字符.  进调试模式,在发送前打打断点看申请的内存中,数据没问题.这个是什么导致的哇
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-10-24 15:00:19 | 显示全部楼层
楼主方便的话,分享发送代码看下
回复

使用道具 举报

2

主题

1

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2024-10-24 15:24:03 | 显示全部楼层
eric2013 发表于 2024-10-24 15:00
楼主方便的话,分享发送代码看下

[C] 纯文本查看 复制代码
				iCount = 0;
				if(netTCP_GetState(tcp_client_sock) == netTCP_StateESTABLISHED)
				{
					iCount = watch_data_send(send_ssssbuff);
					do
					{
						if(netTCP_SendReady(tcp_client_sock) == true )
						{
							maxlen  = netTCP_GetMaxSegmentSize (tcp_client_sock);
							
							iCount -= maxlen;
							
							if(iCount < 0)
							{
								/* 这么计算没问题的 */
								maxlen = iCount + maxlen;
							}
							sendbuf = netTCP_GetBuffer(maxlen);
							memcpy(sendbuf,send_ssssbuff,maxlen);
							/* 必须使用申请的内存空间 */
							netTCP_Send (tcp_client_sock, sendbuf, maxlen);
							memset(send_ssssbuff,0,sizeof(send_ssssbuff));
						};
					}while(iCount > 0);
				}	[mw_shl_code=c,true]	uint16_t lenght = 0;
	cJSON* cjson_test = NULL;
	cJSON* cjson_buff_watch = NULL;
	cJSON* cjson_skwatch = NULL;	
	char* str = NULL;	
	cjson_test = cJSON_CreateObject();	
	cJSON_AddStringToObject(cjson_test, "msgType","dataPost");
	cJSON_AddStringToObject(cjson_test, "inid","9b7c");	
	cJSON_AddStringToObject(cjson_test, "outid","b4e5");	
	cJSON_AddNumberToObject(cjson_test, "outsoc",98);	
	cJSON_AddNumberToObject(cjson_test, "insoc",98);		
	cJSON_AddNumberToObject(cjson_test, "outlowpow",0);	
	cJSON_AddNumberToObject(cjson_test, "inlowpow",0);			
	cjson_buff_watch = cJSON_CreateArray();
	for(uint8_t i = 0; i < dev_num; i++)
	{
			cjson_skwatch = cJSON_CreateObject();
			cJSON_AddStringToObject(cjson_skwatch, "mac",user_watch_data[i].mac_add_str);//手环mac地址
			cJSON_AddStringToObject(cjson_skwatch, "ID",user_watch_data[i].SN_add_str);//手环卡号
			cJSON_AddNumberToObject(cjson_skwatch, "dis",user_watch_data[i].tof);//距离网关距离
			cJSON_AddNumberToObject(cjson_skwatch, "heart",user_watch_data[i].heart_beat);//心率
			cJSON_AddNumberToObject(cjson_skwatch, "oxy",user_watch_data[i].blood_o2);//血氧
			cJSON_AddNumberToObject(cjson_skwatch, "temp",user_watch_data[i].temp);//体温
			cJSON_AddNumberToObject(cjson_skwatch, "pre",user_watch_data[i].blood_pre);//血压
			cJSON_AddNumberToObject(cjson_skwatch, "hot",user_watch_data[i].hot);//热量
			cJSON_AddNumberToObject(cjson_skwatch, "walk",user_watch_data[i].walk);//步数
			cJSON_AddNumberToObject(cjson_skwatch, "soc",user_watch_data[i].soc);//设备电压
			cJSON_AddNumberToObject(cjson_skwatch, "sos",user_watch_data[i].sos_falg);//设备求救信号
			cJSON_AddNumberToObject(cjson_skwatch, "sta",user_watch_data[i].stat);//手表链接状态
			cJSON_AddNumberToObject(cjson_skwatch, "heartala",user_watch_data[i].heart_alarm);//手表链接状态
			cJSON_AddNumberToObject(cjson_skwatch, "powsta",user_watch_data[i].lowpower);//手表链接状态
			cJSON_AddItemToArray(cjson_buff_watch,cjson_skwatch);//将当前数据加入数据
	}
	cJSON_AddItemToObject(cjson_test, "watch", cjson_buff_watch);
	str = cJSON_PrintUnformatted(cjson_test);
	if(str != NULL)
	{
		lenght = strlen(str);
		memcpy(send_buffff,str,lenght);
		send_buffff[lenght] = 0x0a;
		send_buffff[lenght+1] = 0x00;				
		free(str);		
	}
  cJSON_Delete(cjson_test);	
	return lenght+1;	
[/mw_shl_code]
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-10-25 09:38:14 | 显示全部楼层
18537180623 发表于 2024-10-24 15:24
[mw_shl_code=c,true]                                iCount = 0;
                                if(netTCP_GetState(tcp_client_sock) == netTCP_StateESTABL ...

这个写法没问题,有没有测试过,是我们那个例子里面原始的发送方式,发送10M字节大小,看看正常不,接收端用网络助手,如果没问题,说明你的网络是没问题的。得查查接收端等其他问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:38 , Processed in 0.041433 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表