完善资料让更多小伙伴认识你,还能领取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 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1039 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3425 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1465 浏览 0 评论
2146 浏览 0 评论
1640 浏览 0 评论
75352 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 18:22 , Processed in 0.682515 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号