关于linux下QIODevice类进行读取的几个方法的理解

  Qt中对读写设备的支持力度很大,其都继承与QIODevice类,其中有几个方法是非常值得注意的,不管是在用原始的serial port进行通信还是使用网络的TCP/IP 或者UDP或者HTTP等协议时,其实用的方法其实都差不多,主要的有read(int size),readall(),readLine(const char* ,int size),canReadLine(),bytesAvailable(),readData(),write(),flush(),

waitBytesWritten(int msec),readData(char* ,int size),bytesToWritten(),以及几个重要的信号,onReadyRead(),接下来对几个难以理解的函数进行解析。

  其中read(int size)是返回QByteArray的,size是你想读取的长度,如果超过buffer中有的数据将会只返回现有的所有数据。

  readAll()将读取所有的数据以QByteArray返回。

  readLine()函数需要之前开辟一个固定大小的char *,然后调用该函数将制定长度的数据读取到这个指针里面去,size是你想读取的长度,超过将返回全部。

  canReadLine()用于读取一行行的数据,当buffer中有换行符号出现的时候就会返回true,这个对于读取以\n或这\r结尾的数据行非常有效。

  bytesAailable()用于返回buffer中读取到的数据,千万不要以为读取了以后这个数字会归零,如果这样,那你就打错热错了,这个数字我觉得是用来统计这个IODevice的总的大小的。

  readDtata()的使用和readLine()差不多,都是需要先开辟一个char数组,唯一不同的地方在于readData()可以读取任意长度而不是以回车符号进行判断。

  write()将字符串写出去;

  flush()的作用其实就是冲马桶,你要写的东西都是放在马桶里面的,不会调用write()就发送,而需要使用flush(),意思时说,全部冲走。

  waitBytesWritten(int msec)用于统计现在还存在与buffer中的char数,一边与buffer的写管理。

  onReadyRead()主要用于触发,当有字符写进buffer的时候就会出发一次onReadyRead()

 

转载于:https://www.cnblogs.com/luomingchuan/p/3645718.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值