完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题已经解决:在telnet数据反馈添加格式符号处理,遍历所有将要输出的数据BUF,取出每一条完整的字符串分别发送出去。
具体代码实现如下: rt_uint8_t *send_ptr = RT_NULL; rt_uint8_t *send_ptr_t = RT_NULL; rt_uint8_t *send_ptr_t2 = RT_NULL; rt_base_t level = rt_hw_interrupt_disable(); int send_len = rt_ringbuffer_peak(telnet.tx_rb, &send_ptr); rt_hw_interrupt_enable(level); if(send_len > 0) { send_ptr_t = send_ptr; send_ptr_t2 = send_ptr; m = 0; for(i = 0; i < send_len; i++) { if(*send_ptr_t == '\n'){ memset(readbuf,'\0',512); memcpy(readbuf, send_ptr_t2 + m, (i+1) - m); if(readbuf[0] == '\n') { ; } else if(readbuf[6] == '\n') { send(telnet.client_fd, readbuf, 6, 0); } else { readbuf[(i+1) - m] = '\r'; readbuf[(i+2) - m] = '\n'; send(telnet.client_fd, readbuf, (i+2) - m, 0); } m = i + 1; } else if(*send_ptr_t == '\b') { memset(readbuf,'\0',512); memcpy(readbuf, send_ptr_t2 + m, (i+1) - m); readbuf[(i+1) - m] = '\r'; send(telnet.client_fd, readbuf, (i+2) - m, 0); m = i + 1; } send_ptr_t++; } client_tick_timeout = rt_tick_get() + rt_tick_from_millisecond(telnet.client_timeout * 60000); } |
|
|
|
这里是变量i和m的定义
/* telnet server thread entry */ static void telnet_thread(void* parameter) { int i = 0; int m = 0; rt_uint8_t readbuf[512] = {0}; #define RECV_BUF_LEN 64 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式-ELFBOARD 常用的USB接口及其不同版本介绍第1期
797 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board上OSPI-Flash实践
1322 浏览 0 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 应用层更改引脚复用的方法
3590 浏览 0 评论
1709 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】串口测试标准输入输出重定向
1231 浏览 0 评论
60117 浏览 21 评论
野火 ISO STM32资料合集(程序、原理图、项目初高级篇)
19044 浏览 49 评论
288508 浏览 79 评论
13649 浏览 52 评论
16497 浏览 55 评论
54330 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-6-26 14:29 , Processed in 0.603329 second(s), Total 68, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191