标题: 基于Linux的WiFi智能小车实训 [打印本页]

作者: 帅萌萌小阿嗲    时间: 2018-7-18 10:04
标题: 基于Linux的WiFi智能小车实训
最近实训的.c文件,分享给大家。


单片机源程序如下:
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"

  3. MainWindow::MainWindow(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::MainWindow)
  6. {
  7.     ui->setupUi(this);
  8.     socket = NULL;
  9.     timer = NULL;
  10. }

  11. MainWindow::~MainWindow()
  12. {
  13.     delete ui;
  14. }

  15. void MainWindow::net_recv_data()
  16. {

  17.     //3.recv piclen of picture from server

  18.     char headbuf[20];
  19.     int piclen,ret;
  20.     char picbuf[60*1024];

  21.     switch(flag)
  22.     {
  23.     case 1:
  24.         memset(headbuf,0,sizeof(headbuf));
  25.        //  socket->waitForReadyRead(300);
  26.         ret = socket->read(headbuf, sizeof(headbuf));//piclen len eg:6479len
  27.         if(-1 == ret)
  28.         {
  29.             qDebug()<<"read piclen error";
  30.             socket->close();
  31.             socket = NULL;
  32.         }
  33.         qDebug()<<"headbuf:"<<headbuf;

  34.         sscanf(headbuf,"%dlen",&piclen);//piclen=6479
  35.         qDebug()<<"piclen="<<piclen;
  36.         flag = 2;

  37.         if(socket->bytesAvailable() >= piclen)
  38.              goto STMP_DATA;
  39.         break;
  40. STMP_DATA:
  41.     case 2:


  42.         //4.recv data of picture from server


  43.         memset(picbuf, 0,sizeof(picbuf));
  44.     //    socket->waitForReadyRead(300);


  45.         int count = 0;
  46.         while(count < piclen)
  47.         {
  48.             ret = socket->read(picbuf+count, piclen-count);
  49.             if(-1 == ret)
  50.             {
  51.                 qDebug()<<"read data error";
  52.                 socket->close();
  53.                 socket = NULL;
  54.             }
  55.             else
  56.                 count = count + ret;

  57.         }


  58.         qDebug()<<"ret="<<ret;

  59.         //5.display video
  60.         QPixmap pixmap;
  61.         pixmap.loadFromData((uchar *)picbuf, piclen, "jpg");
  62.         ui->label->setPixmap(pixmap);

  63.         qDebug()<<"display success";

  64.         flag = 0;
  65.         break;



  66.     }


  67. }

  68. void MainWindow::net_send_cmd()
  69. {

  70.     //2.send request cmd to server

  71.     char buf[10] = "pic";
  72.     if(0 == flag)
  73.     {
  74.         int ret = socket->write(buf, sizeof(buf));
  75.         if(-1 == ret)
  76.         {
  77.             qDebug()<<"write pic error";
  78.             socket->close();
  79.             socket = NULL;
  80.         }
  81.         socket->flush();
  82.         flag = 1;
  83.     }


  84. }


  85. void MainWindow::net_connectd()
  86. {
  87.     qDebug()<<"connect success\n";

  88.     timer->start(200);//200ms

  89. }



  90. void MainWindow::on_btnStart_clicked()
  91. {
  92.     //1.connect to server
  93. ……………………

  94. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
car.rar (5.88 KB, 下载次数: 16)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1