gpt4 book ai didi

c++ - Linux串口RAW模式

转载 作者:行者123 更新时间:2023-11-30 19:31:58 25 4
gpt4 key购买 nike

Linux 版本:4.9.59

平台:Raspberry Pi 3 Model B

USB 转串口:FTDI4232

我希望从机器读取大量数据(大约 4096 字节)。所有可打印数据均采用 ASCII 格式。数据在一次传输中连续不断地到来;一旦用户按下数据传输按钮。此操作每 30 分钟进行一次。数据中包含多个CR LF。

我已将串口配置为RAW输入模式。

config.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOE);
this->minChars = 5000;
this->timeOut = 100000;
if(this->timeOut > 0)
config.c_cc[VTIME] = this->timeOut;
else
config.c_cc[VTIME] = 0;

if(this->minChars > 0)
config.c_cc[VMIN] = this->minChars;
else
config.c_cc[VMIN] = 0;
<小时/>

阅读功能:

ready = epoll_wait(this->epfd, &this->events, 1, this->ePollTimeout);
returnVal = read(this->fd, readDataBuffer, 8192);

但是,当我从串行端口读取时,系统将传入的 blob 分成多个数据包,并且一些数据包丢失。

例如。 :我发送了278字节的数据。系统将其分成 3 个随机长度的数据包。每次执行时数据包的长度都会变化。请多多指教。

最佳答案

read 将读取您提供的字节数,但不能保证实际会读取许多字节。 read的返回值是实际读取的字节数。通常,读取系统调用被放置在 while 循环中,直到实际读取所需的字节数、发生错误或到达文件/流末尾。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html

关于c++ - Linux串口RAW模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com