原创 QT 保存日志 用例

2023-6-9 10:31 1146 6 6 分类: MCU/ 嵌入式 文集: QT
最近在使用串口读一些数据,但是总会出现些发、送之间的冲突问题,为了弄清楚问题的所在,于是产生了想法,做了一个日志保存。
  1. void Widget::SaveLogTxt(QString dat )
  2. {
  3. QDateTime currenttime = QDateTime::currentDateTime();
  4. QString strDate = currenttime.toString("yyyy/MM/dd");
  5. QString strTime = currenttime.toString("hh:mm:ss.zzz");
  6. QString path = QCoreApplication::applicationDirPath();
  7. QString strPath = "C://Users//user//Desktop//RS485/log.txt";
  8. qDebug()<<strPath;
  9. QFile file(strPath);
  10. bool isOK = file.open(QIODevice::WriteOnly|QIODevice::Append);
  11. if(isOK){
  12. QTextStream stream(&file);
  13. stream<<strDate<<strTime<<"\r\n";
  14. stream<<dat<<"\r\n";
  15. }
  16. qDebug()<<dat;
  17. file.close();
  18. }



  1. void Widget::getData()
  2. {
  3. // QByteArray rxData;
  4. QString strTemp;
  5. uint8_t index = 0;
  6. QByteArray datTemp ,temp;
  7. strLog = "";
  8. strLog += "收到的数据";
  9. strLog += "\r\n";
  10. rxData = serial_device->readAll();
  11. for(int i = 0 ; i < rxData.size() ; i++){
  12. //解析到帧头
  13. if(0x55 == rxData[i] && 0xaa == (uint8_t)rxData[i+1]){
  14. index = i;
  15. qDebug()<<"index"<<index;
  16. //拷贝剩余数据
  17. for(int j = 0 ; j < rxData.size() - index; j++){
  18. datTemp[j]= rxData[index+j];
  19. }
  20. qDebug()<<"datTempSize"<<datTemp.size()<<"datTemp"<<datTemp.toHex(':');
  21. SaveLogTxt("解析到指令数据\r\n"+datTemp.toHex(':'));
  22. writedata();
  23. }else{
  24. index = 0;
  25. datTemp.clear();
  26. }
  27. }
  28. for(int i = 0 ; i < rxData.size() ; i++){
  29. strTemp.sprintf("%02x",(uint8_t)rxData[i]);
  30. strLog += strTemp + " ";
  31. }
  32. rxData.clear();
  33. SaveLogTxt(strLog);
  34. }

  1. void Widget::writedata()
  2. {
  3. QString strTemp;
  4. strLog = "";
  5. strLog += "发送的数据";
  6. strLog += "\r\n";
  7. uint8_t TxData[6]={0x55 ,0xaa, 0x03, 0x82, 0x02};//获取市电状态
  8. TxData[5] = (TxData[0] + TxData[1] +TxData[2] + TxData[3] + TxData[4])&0xff;
  9. for(int i = 0 ; i < 6 ; i++){
  10. strTemp.sprintf("%02x",TxData[i]);
  11. strLog += strTemp + " ";
  12. }
  13. serial_device->write((const char*)TxData , 6);
  14. SaveLogTxt(strLog);
  15. }
QT

作者: E_ARM, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3989713.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条