QSerialPort可以读取超过512字节的数据吗?

2024-04-04

我想使用 QSerialPort 读取从设备传输的数据。设备每次发送一帧4000个数据字节。我尝试使用以下简单的代码

QSerialPort *serialPort;
char receivedData[4000];
int numRead = 0;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    /* Initialize serial port*/
    serialPort = new QSerialPort(this);
    QString portName = "COM6";
    qint32 baudRate = 460800;
    serialPort->setPortName(portName);
    serialPort->setBaudRate(baudRate);
    serialPort->setDataBits(QSerialPort::Data8);
    serialPort->setParity(QSerialPort::NoParity);
    serialPort->setStopBits(QSerialPort::OneStop);
    serialPort->setFlowControl(QSerialPort::NoFlowControl);
    serialPort->setReadBufferSize(4000);
    if (!serialPort->open(QIODevice::ReadOnly)) {
        qDebug() << "Cannot open comport";
    }
    connect(serialPort, SIGNAL(readyRead()), this, SLOT(serialReceived()));
}

void MainWindow::serialReceived()
{
    numRead = serialPort->read(receivedData, 4000);
    serialPort->flush();
}

问题是:总是显示只读取了512个数据字节。如何读取整个4000字节的数据帧? (当我使用Matlab读取这个4000字节的帧时,它工作正常)


没有限制,但您不一定会收到单个块中的所有数据。 您必须继续监听,直到达到您正在等待的字节数(或超时)。

void MainWindow::serialReceived()
{
    receivedData.append(serialPort->readAll());
    if(receivedData.size() >= 4000) {
       // we're full
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QSerialPort可以读取超过512字节的数据吗? 的相关文章

  • json.net自定义jobject反序列化

    我正在尝试使用 JsonConvert DeserializeObject string 将字符串反序列化为可与动态一起使用的 jobject 来动态访问 json 文档 但是我想避免知道文档的大小写 以便我可以输入 dynamic doc
  • 您可以从基本 Win32 控制台模板应用程序中的 C#/Winrt 组件调用(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)吗?)

    我有一个现有的程序 win32 x86 控制台应用程序 需要调用托管代码 来自 Net 的 C dll The dll不暴露给 COM 但可以从 C WinRT 组件调用并由 C WinRT 控制台模板应用引用 BUT即使安装了 C Win
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 如何在运行时以编程方式将选项卡添加到表单?

    我用谷歌搜索了这个 但仍然无法让它工作 我知道如何使用工具箱添加选项卡 我还阅读了如何以编程方式执行此操作 但我仍然不明白 MSVC Express 2010 我有一个简单的项目设置 只是一个带有 TabControl 的 Windows
  • 在Datagridview中显示子对象的属性

    如何在 datagridview 中显示对象的选定属性以及第一个对象的成员对象的选定属性 我认为我不会要求绑定 而是依赖硬编码更新 因为更新将在非 UI 线程上启动 而且我认为绑定不会那么容易 至少我在其他项目中遇到过问题 基本上我想了解有
  • 如何执行下一个按钮操作?

    我在显示下一个问题时在 下一步 按钮中遇到问题 在我第一次设置文本时 我得到了正确的问题并匹配了四个选项答案 我需要的是 我有一个 下一步 按钮 用于显示下一个问题和答案 当我单击 下一步 按钮时 我可以获得下一个问题的接下来的四个选项 但
  • 如何在 C# 中绘制面板?

    嘿 我需要在 C 中的面板上进行绘图 但没有将绘图代码放在 panel1 Paint 中 我该怎么做 顺便说一句 我正在使用 WinForms Update 我忘了说清楚 我不需要将绘图代码放在绘图处理程序中 因为我需要根据按钮的事件开始绘
  • 打印一个字符*

    我提前为这个愚蠢的问题道歉 这是我的结构定义 struct vcard char cnet char email char fname char lname char tel 我正在尝试使用函数 vcard show vcard c 打印此
  • 使用 gridSVG 和 ggplot2 v.0.9.0 进行交互式点标签

    我想以交互方式在 ggplot 中标记点 以便将鼠标悬停在点上会显示标签 我正在尝试调整给出的答案这个问题 https stackoverflow com questions 8972642 how do you relate ggplot
  • 贝叶斯评级

    avg num votes 18 Average number of votes in all products avg rating 3 7 Average rating for all products this num votes 6
  • 如何在 Highcharts 组织结构图中启用拖放功能?

    我需要设置一个 组织 类型的 Highcharts 图表 它应该支持相互拖放节点 以移动树内的节点 目前 我得到了一个 组织 图表 其中显示了所有需要的信息 我尝试使用Highcharts plotOptions series dragDr
  • 使用文件夹结构迭代 S3 存储桶中的文件

    我有一个 S3 存储桶 在存储桶内 我们有一个 2018 年的文件夹 以及我们每个月和每天收集的一些文件 例如 2018 3 24 2018 3 25 等等 我们没有将日期放入每天存储桶内的文件中 基本上 我想遍历存储桶并使用文件夹结构按
  • 张量流中值

    如何计算张量流中列表的中值 喜欢 node tf median X X 是占位符在numpy中 我可以直接使用np median来获取中值 如何在tensorflow中使用numpy运算 用于计算数组的中位数tensorflow你可以使用p
  • Angular.js - 使用间隔应用过滤器

    我正在对日期时间对象使用自定义 angular js 过滤器 function relativeTimeFilter return function dateObj return getRelativeDateTimeString date
  • 与 SVN 上游同步工作[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个使用开源项目代码的项目 要求之一是将尽可能多的代码推回到上游 远程项目正在使用 Subversion 不是很好 我当前的
  • 为什么我不能转换 ref 参数?

    我有一个带有 ref 控件类型参数的方法 我想通过传递 ref 按钮类型参数来调用该方法 那么编译器不接受这一点 我必须将引用控件类型更改为引用按钮类型 Why 因为这会带来很多问题 public void DoDarkMagic ref
  • 克隆 MongoDB 中的集合

    我想克隆 MongoDB 集合并将其以不同的名称保存在同一服务器上 例如 现在我有以下集合 demo1 categories demo1 users 和 demo2 users 我想要一个与 demo1 categories 相同的 dem
  • 如何转义双引号作为 NUnit TestCase 的参数?

    我尝试为用 VB net 编写的 NUnit 测试编写以下 TestCase
  • 如何将同义词词典添加到mysql全文搜索?

    这样 如果我搜索术语 男士 术语 绅士 就会匹配 我试过这个 SELECT FROM cart product WHERE MATCH product name product description product brand metal
  • AppSync BatchResolver AssumeRole 错误

    我正在尝试使用新的 DynamoDB BatchResolvers 写入 AppSync 解析器中的两个 DynamoDB 表 当前使用 Lambda 函数来执行此操作 但是 在查看 CloudWatch 日志时 我收到以下权限错误 Use
  • Patindex() 函数的用法

    我在用patindex用于 MD 或 DO 的模式搜索 下面的语句返回3 我是否以错误的方式使用它 或者是否有其他检查条件的方法 select PATINDEX MD DO FHoisegh MD select T Value from v
  • angular2 – 通过自定义管道使用全局服务

    我正在玩一点 Angular 2 到目前为止 我构建了一个拥有接口的全局服务 其他组件正在使用这个全局服务的接口 如果通过组件更改界面 则子组件的界面也会更改 现在我正在尝试通过管道来处理这个问题 但是 当我通过子组件更改接口值时 其他组件
  • QSerialPort可以读取超过512字节的数据吗?

    我想使用 QSerialPort 读取从设备传输的数据 设备每次发送一帧4000个数据字节 我尝试使用以下简单的代码 QSerialPort serialPort char receivedData 4000 int numRead 0 M