OPT小讲堂 ∣ SciSmart通讯配置之TCP/IP通讯应用

本文是SciSmart智能视觉软件培训的第十五课,重点讲解如何使用TCP/IP通讯方式进行数据交互。内容包括IP配置准则、SciSmart软件作为服务器和客户端的设置步骤,以及如何添加和设置TCP/IP通讯算子进行数据发送和接收。文中还提供了一个案例,展示了如何通过TCP/IP通讯算子控制流程执行并获取结果。
摘要由CSDN通过智能技术生成

导语:SciSmart智能视觉软件培训系列第十五课

在第十四课里,我们讲了图像识别中的条形码识别、二维码识别

今天,我们将为大家讲解通讯工具应用。通讯工具用于实现信息交互(数据接收和发送),本课以TCP/IP通讯方式为例进行阐述。

通讯工具详解

打开SciSmart智能视觉软件,在主界面右下方工具箱栏点击通讯工具的图标,如图1所示。通讯工具包含TCP/IP、串口、通用I/O、Modbus、USB-HID、键盘事件、其它等几大模块。各模块作用见表1:
图1  通讯工具界面图
图1 通讯工具界面图
表1 通讯工具模块及作用
表1 通讯工具模块及作用

TCP/IP 通讯创建详解

下面,我们先通过微视频来看下SciSmart是如何实现数据交互的。

一. IP配置准则
服务器与客户端PC进行连接通讯,需要服务器PC端的IP地址与客户端的PC的IP地址设置在同一网段及同一通讯端口号,例如图2:
在这里插入图片描述
图2 服务器与客户端连接示意图

二. SciSmart软件实现TCP/IP通讯步骤
点击“

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 libevent 实现 TCP/IP 客户端通信,可以按照以下步骤进行: 1. 创建一个 event_base 对象,用于事件驱动循环。 2. 创建一个 TCP/IP 客户端套接字,并连接到服务器。 3. 创建一个 bufferevent 对象,用于处理套接字的读写事件。 4. 设置 bufferevent 的回调函数,处理读写事件和错误事件。 5. 将 bufferevent 添加到 event_base 中,开始事件循环。 以下是一个简单的示例代码: ```c #include <event2/event.h> #include <event2/buffer.h> #include <event2/bufferevent.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> void read_cb(struct bufferevent *bev, void *ctx) { struct evbuffer *input = bufferevent_get_input(bev); char buf[1024]; size_t len = evbuffer_remove(input, buf, sizeof(buf)); // 处理接收到的数据 } void write_cb(struct bufferevent *bev, void *ctx) { // 数据已发送完成 } void error_cb(struct bufferevent *bev, short events, void *ctx) { if (events & BEV_EVENT_EOF) { // 连接已关闭 } else if (events & BEV_EVENT_ERROR) { // 发生错误 } else if (events & BEV_EVENT_TIMEOUT) { // 超时 } bufferevent_free(bev); } int main() { struct event_base *base = event_base_new(); int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons(12345); inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr); connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); struct bufferevent *bev = bufferevent_socket_new(base, sockfd, BEV_OPT_CLOSE_ON_FREE); bufferevent_setcb(bev, read_cb, write_cb, error_cb, NULL); bufferevent_enable(bev, EV_READ|EV_WRITE); event_base_dispatch(base); event_base_free(base); return 0; } ``` 在这个示例中,我们创建了一个 event_base 对象,一个 TCP/IP 客户端套接字,并连接到服务器。然后创建了一个 bufferevent 对象,并设置了读写回调函数和错误回调函数。最后将 bufferevent 添加到 event_base 中,开始事件循环。在事件循环中,libevent 会自动处理套接字的读写事件和错误事件,调用相应的回调函数进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值