找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2905|回复: 0
打印 上一主题 下一主题
收起左侧

基于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)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表