CH395Q WEB服务器网页,客户端(电脑)丢包问题

函数如下:

void CH395SendHTMLHead()

{

CH395SendSys(HtmlHead,sizeof(HtmlHead));

printf(HtmlHead);

delay_ms(4000);

CH395SendSys(HtmlBody,sizeof(HtmlBody));

printf(HtmlBody);

delay_ms(4000);

}


void HTMLHomePage()

{

CH395SendHTMLHead();

delay_ms(4000);

CH395SendSys(HtmlHomePageBody,sizeof(HtmlHomePageBody));

printf(HtmlHomePageBody);

delay_ms(4000);

}

字符串如下:

联想截图_20241017115827.png


问题是:

使用CH395SendData ,依次发送HtmlHead HtmlBody HtmlHomePageBody字符串给客户端(电脑);

1. 加的有打印,发送没问题;

2. 使用调试工具,看客户端接收字符串,发现HtmlBody丢失,一前一后没问题;

3. 无论按什么顺序对以上三个字符发送,客户端接收时,总是丢中间的字符;


您好,CH395每次发送数据前,需要判断发送缓冲区空闲这个中断,只有产生了此中断,才可发送下一包数据。可以在电脑上用wireshark抓个包看一下这三包数据的实际传输过程。

可以将抓的包邮件发来分析下,同时可以将您的部分测试代码邮件发来看一下。后续可直接邮件沟通。我的邮箱:lq@wch.cn

image.png


CH395每次发送数据前,需要判断发送缓冲区空闲这个中断,只有产生了此中断,才可发送下一包数据

=== 使用空闲中断,下一包数据发送成功了;

       但是,有个问题再请教下,使用空闲中断,会一直发包一直发包;我怎么样只发送一次,是自己设置类似标志位,去做处理吗


代码如下:

   sock_int_socket = CH395GetSocketInt(sockindex);                   /* 获取socket 的中断状态 */

   if(sock_int_socket & SINT_STAT_SENBUF_FREE)                       /* 发送缓冲区空闲,可以继续写入要发送的数据 */

   {

   CH395SendData(sockindex,(unsigned char*)http_html_data,sizeof(http_html_data));

   delay_ms(50);

   }



会一直连续发送http_html_data包内容


可以通过置不同标志的方式实现功能。


请问有使用缓冲区空闲中断,连续百次发送的案例吗


这个百次是指,使用发送函数,依次发送100个不同数据


您好,暂无此例程


只有登录才能回复,可以选择微信账号登录