树莓派智能监控小车(QT+树莓派)------客户端(PC)和服务器(树莓派)
来源:互联网 发布:知乎 核安全所 编辑:程序博客网 时间:2024/06/11 11:08
客户端是用QT写的,利用QT(C++)中的QTcpSocket实现TCP传输的客户端一方;服务端是用python写的TCP传输的服务器。
QT部分:
UI主页面界面用到了QWebview(显示视频,同一局域网内只需打开http://树莓派ID:8080/?action=stream)、PushButton(控制小车移动和灯的开关),setting界面用到了Label、QPushButton、LineEdit(用于获取输入的地址和端口号)。这些界面的设计和信号与槽的连接在百度里有很多的例子可供学习,QT学习起来也相对简单。以下是
我写的界面,很糟见谅....
接下来主要讲TCP部分,想必socket编程大家都遇到过很多了,在QT中更是简单
步骤1:首先添加 头文件
include <QTcpSocket>
步骤2:定义一个QTcoSocket对象
QTcpSocket tcpsocket;
步骤3:连接服务器
this->tcpsocket.connectToHost(“服务器地址”,“端口号”);
this->tcpsocket.waitForConnected(1000); //据说此行代码必须有,否则无法进行连接
步骤4:发送数据, if(this->tcpsocket.state()==QAbstractSocket::ConnectedState) //对应某个Button,比如上图的W键
{
this->tcpsocket.write("你要发的信息,比如前进后退等");
this->tcpsocket.waitForBytesWritten(300);//据说此行代码必须有,否则无法发送
}
else
...
步骤5:结束操作,断开连接
if(this->tcpsocket.state()==QAbstractSocket::ConnectedState)
{
this->tcpsocket.disconnectFromHost();
this->tcpsocket.waitForDisconnected(1000);
}
树莓派部分:
树莓派端上的服务器端是用python写的,python也是较为简单的,不过还是与C++,JAVA等的语法有点不同,以下代码不全都是按python的语法规则写的,示例而已
步骤1:导入socket库
import socket
步骤2:定义socket类型
raspiServer = socket.socket(scoket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信
raspiServer .bind((客户端地址,端口号))#客户端地址可以空即只绑定端口号
步骤3:开始TCP监听
while 1:
raspiServer.listen(1)#监听
while 1:
conn,addr=raspiServer.accept()
print 'connect by' addr
while 1:
try:
data=conn.recv(1024)#接收数据
print data #显示在屏幕中,以便测试是否能够通信
#然后处理数据,判断然后驱动小车移动
except socket.error,arg:
(errno,err_msg)=arg
print errno
if errno == 32:
break;
步骤4:关闭连接
conn.close()
两边的代码敲完后,将PC和树莓派放在局域网中(同一WIFI下即可),尝试是否可以通信。
有需要QT源码的可联系我。python的代码比较简单网上很多就不放出来了(毕竟 我也是网上学的....)
- 树莓派智能监控小车(QT+树莓派)------客户端(PC)和服务器(树莓派)
- 树莓派智能监控小车(QT+树莓派)------整体思路
- 树莓派智能监控小车(QT+树莓派)------视频流的获取及硬件
- 树莓派 智能小车 语音控制系统
- 【STM32 .Net MF开发板学习-21】蓝牙遥控智能小车(PC模式)
- 【STM32 .Net MF开发板学习-1】蓝牙遥控智能小车(PC模式)
- 树莓派 智能小车 自动抓取乒乓球
- 智能小车的制作(一)
- 智能小车的制作(二)
- 智能小车的制作(三)
- 智能小车的设计(四)
- 智能小车的制作(五)
- 智能小车的制作(六)
- 智能小车的制作(七)
- 智能小车的制作(八)
- 智能小车的制作(九)
- 智能小车的制作(十)
- 智能小车的制作(十一)
- 自写 strlen strcpy函数
- 即将出版《Java EE 互联网轻量级框架整合开发》封面,准备源码中
- 软件测试习题附答案
- 【MySql】MySql之安装
- jquery鼠标移动图片上实现放大效果
- 树莓派智能监控小车(QT+树莓派)------客户端(PC)和服务器(树莓派)
- 转:JAVA实现word doc docx pdf excel的在线浏览
- 回调函数与状态清理
- C++知识点复习(二)
- 转:Java-Swing嵌入浏览器
- MSSQL:ADO openschema提取数据库结构
- 《Google软件测试之道》读书笔记
- 37、不一样的C++系列--C语言异常处理
- 智能指针——c++primer第五版12章——个人总结