一、简介
现在有一个需求,不能联网的机器端想要与pc端的qt程序通信,所以在中间添加了一块转接板。
工作模式:机器端串口通信转接板,转接板wifi通信pc端(内网模式下)
那么在你出厂的时候,转接板肯定是不知道你工作环境的wifi账号和密码的,此时你可以:
1、机器端设置wifi的账号和密码以及pc的ip,不做介绍
2、转接板和pc端通过网线直连,pc端设置静态ip(与转接板出厂默认的处于同一网关),此时可以通过socket通信
pc端设置静态ip和恢复动态ip的链接点击此处
二、确定通信建立
2.1、转接板端:开机默认状态:
2.2、pc端:设置的静态ip,有线连接选择 以太网
2.3、查看是否设置成功
2.4、测试,pc端ping转接端ip pc端使用ping 192.168.1.136
2.5、此时在无网络情况下,通过网线直接pc端和转接板端已经可以ping通,接下来就是简单的客户端和服务端通信即可
三、代码实现
3.1、转接板端:用的是部分代码,主要是思路
/* 新建了一个线程专门等待有线接口 */
factoryConfig::factoryConfig(QObject *parent):QThread(parent)
{
/* fix host ip */
hostAddress = "192.168.1.135";
tcpSocket = NULL;
}
void factoryConfig::run()
{
QFile f("/sys/class/net/eth0/carrier");
while(1){
if(f.open(QIODevice::ReadOnly|QIODevice::Text)){
QByteArray ba = f.read(1);
/* wired connect success!!! */
if(!ba.isEmpty() && ba.toInt()){
if(tcpSocket == NULL){
tcpSocket = new QTcpSocket;
}
tcpSocket->connectToHost(hostAddress,8888);
sleep(3);
}
f.close();
}
tcpSocket->disconnectFromHost();
delete tcpSocket;
tcpSocket = NULL;
}
}
3.2、运行之前链接中所说的pc端设置静态ip和恢复动态ip软件,观看打印数据即可
3.3、剩下的就只是写和读了