成都微信网站设计,wordpress缓存插件对比,网站建设 三乐,青岛注册公司在哪个网站申请【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 视觉算法出了结果之后#xff0c;一般都要通知到其他设备进行某些动作的。以前通信的方式#xff0c;一般都是有线的#xff0c;什么232、485、…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 视觉算法出了结果之后一般都要通知到其他设备进行某些动作的。以前通信的方式一般都是有线的什么232、485、can之类的协议。但是现在很多工厂都在弄数字工厂里面的设备传输转变成了网络设备所以网络应用的场景也是越来越多了。所以今天这里讨论的主要就是qmacvisual怎么通过网络把数据结果发出去。 1、创建工程和创建流程 工程、流程的创建是使用qmacvisual的第一步。 2、准备tcp server设备或者程序 前面我们测试串口的时候是用虚拟串口实现的。这里因为没有tcp设备所以也打算写一个tcp server程序来代替。当然实际使用的使用大家可以自己准备一个具体的设备比如基于网络的io设备、采集设备都是可以的电商网站都可以买得到。 这里的tcp server程序我们是借助于chatgpt完成的比较方便。
// server.cpp : 此文件包含 main 函数。程序执行将在此处开始并结束。
//#include iostream
#include winsock2.h
#include ws2tcpip.h#pragma comment(lib, Ws2_32.lib)int main() {// 初始化Winsock库WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0) {std::cerr WSAStartup failed. std::endl;return 1;}// 创建服务器的socketSOCKET listenSocket socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (listenSocket INVALID_SOCKET) {std::cerr Error creating socket: WSAGetLastError() std::endl;WSACleanup();return 1;}// 设置服务器地址和端口sockaddr_in serverAddr;serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr htonl(INADDR_ANY); // 接受来自任何地址的连接serverAddr.sin_port htons(12000); // 设置端口为12000// 绑定socket到服务器地址if (bind(listenSocket, reinterpret_castsockaddr*(serverAddr), sizeof(serverAddr)) SOCKET_ERROR) {std::cerr Bind failed with error: WSAGetLastError() std::endl;closesocket(listenSocket);WSACleanup();return 1;}// 开始监听连接if (listen(listenSocket, SOMAXCONN) SOCKET_ERROR) {std::cerr Listen failed with error: WSAGetLastError() std::endl;closesocket(listenSocket);WSACleanup();return 1;}std::cout Server started, waiting for connections... std::endl;// 接受客户端连接SOCKET clientSocket;sockaddr_in clientAddr;int clientAddrSize sizeof(clientAddr);while (true) {clientSocket accept(listenSocket, reinterpret_castsockaddr*(clientAddr), clientAddrSize);if (clientSocket INVALID_SOCKET) {std::cerr Accept failed with error: WSAGetLastError() std::endl;closesocket(listenSocket);WSACleanup();return 1;}std::cout Client connected. std::endl;// 接收数据char buffer[1024];int bytesReceived recv(clientSocket, buffer, sizeof(buffer), 0);if (bytesReceived SOCKET_ERROR) {std::cerr Recv failed with error: WSAGetLastError() std::endl;closesocket(clientSocket);continue;}// 打印接收到的数据buffer[bytesReceived] \0; // 添加字符串结束符std::cout Received data from client: buffer std::endl;// 发送响应const char* response Hello from server!;int bytesSent send(clientSocket, response, strlen(response), 0);if (bytesSent SOCKET_ERROR) {std::cerr Send failed with error: WSAGetLastError() std::endl;}// 关闭连接closesocket(clientSocket);std::cout Client disconnected. std::endl;}// 关闭监听socketclosesocket(listenSocket);// 清理Winsock库WSACleanup();return 0;
}3、配置设备连接 使用设备收发数据之前先要配置一下设备这部分可以通过配置【仪器通讯】窗口来完成的。当然前提还是打开tcp server程序 首先需要选择TCP/IP通信紧接着就是选择TCP Client。这里先学习TCP client的使用方法。其他就是配置ip和port。使用之前需要单击一下保存参数按钮。这样没有问题之后通过添加仪器就能把这个配置保存下来。继续单击连接仪器没有多大问题的话就可以看到我们和目标程序已经连接上了。而且在tcp server程序可以看到相关的打印。 4、使用TCP client收发数据 相关插件来自于【通信工具】的【TCP/IP客户端】插件。双击打开 如图所示首先需要选择通讯设备因为我们可能连接好几个设备。选择好设备之后紧接着选择发送内容内容形式为QString单击执行按钮就可以将相应的数据发送出去。这是比较理想的情况还有一种情况就是我们需要用script对数据组织之后再进行发送。这个时候如果有数据显示也会在下面的方框中看到。