基于Qt搭建的智慧停车平台的客户端

本文详细描述了一个客户端应用程序的功能,包括网络连接、使用线程进行读写操作、文件分割、图片处理(如车牌识别、摄像头抓取和级联器识别)、视频播放以及信息展示。作者强调了测试的重要性,并分享了项目开发过程中的经验和教训。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

源码链接

功能介绍

1.网络连接

2.读写线程

3.文件的分割

4.图片的处理

4.1 车牌识别

4.2 摄像头获取

4.3 级联器识别处理

5.视频的播放

5.1 视频播放界面

6.相关信息显示

感悟

联系我


源码链接

如果觉得不错给个start吧

功能介绍

1.网络连接

这里只是客户端,首先需要连接服务端

bool conneet::Conneet(QString ip,int port)
{
    fd = socket(AF_INET,SOCK_STREAM,0);
    if(-1 == fd)
    {
        return false;
    }

    addr.sin_addr.s_addr = inet_addr(ip.toLatin1().data());
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);

    if(-1 == ::connect(fd,(struct sockaddr*)&addr,sizeof (addr)))
    {
        perror("连接失败");
        return false;
    }

    return true;
}

使用socket进行连接,是否成功返回一个标志位

2.读写线程

因为需要间断的进行读写,并且无法确定什么时候进行读写,所以这里封装了两条线程进行这两个任务

void WriteThread::run()
{
    int res = 0;
    while(true)
    {
        if(len != 0)
        {
            qDebug() << len;
            res = write(conneet::getmyconneet()->getFd(),buf,len);
            qDebug() << res;
            bzero(buf,sizeof (buf));
            len = 0;
        }
    }
}

void WriteThread::sendLogin(QString name, QString pwd)
{
    HEAD myHead = {0};
    LOGIN myLogin = {0};

    myHead.bussinessType = 1;
    myHead.bussinessLength = sizeof (LOGIN);
    memcpy(myHead.cheakCoke,"abc",sizeof (myHead.cheakCoke));

    memcpy(myLogin.account,name.toStdString().c_str(),sizeof (myLogin.account));
    memcpy(myLogin.pwd,pwd.toStdString().c_str(),sizeof (myLogin.pwd));

    memcpy(buf,&myHead,sizeof (HEAD));
    memcpy((void *)(buf + sizeof (HEAD)),&myLogin,sizeof (LOGIN));

    len = sizeof (HEAD) + sizeof (LOGIN);
}

这里是写线程,通过槽函数触发比如这里的sendLogin,在更新len后run中条件达成进进行发送

读线程也是类似,接收到信息通过信号槽机制传输出去

3.文件的分割

因为涉及到图片的传输,所以这里需要用到分割(建议不要传输png,我这里测试传输很慢)

主要思路:分割  ----》 传送   -----》 失败重传

分割部分

 char buf[1000] = {0};
    int fd;
    int num = 1;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值