VisionPro二开之网口通讯设计

CommunicateService

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceAOI外观检测软件.Communicate{/// <summary>/// 通讯服务类/// </summary>publicclassCommunicateService{// 单例模式:使类成为全局唯一的存在//优点1:方便使用//优点2:节省资源//单例模式://1. 私有静态变量(在第四步供外界使用),创建类的实例//2. 私有构造函数,确保外部无法直接实例化(确保是单个实例)//3. 确定供外界调用的代码资源//4. 公开静态属性,供外界使用(把第一步类的实例,开放出去)//5. 外界使用//1. 私有静态变量(在第四步供外界使用),创建类的实例// static 静态: 类 方法 等 (1)在程序启动之前就生成,(2)在程序结束之后,才会消失,(3)全局唯一的存在。privatestaticCommunicateServiceintance=newCommunicateService();//2. 私有构造函数,确保外部无法直接实例化(确保是单个实例)// private 修饰 就变成私有的 ,不允许外界调用,确保单例模式,唯一的特性privateCommunicateService(){}//4. 公开静态属性,供外界使用(把第一步类的实例,开放出去)// public static 构建了开发publicstaticCommunicateServiceInstance{get{returnintance;}}//3. 确定供外界调用的代码资源HttpServerserver=newHttpServer();/// <summary>/// 启动服务端/// </summary>/// <returns></returns>publicboolStart(stringip,intport){server.IP=ip;server.Port=port;if(server.Start()){returntrue;}else{returnfalse;}}/// <summary>/// 发送数据/// </summary>/// <param name="content"></param>publicvoidSend(stringcontent){server.SendMsg(content);}}}

HttpServer

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingAOI外观检测软件.Camera;namespaceAOI外观检测软件.Communicate{/// <summary>/// 服务端/// </summary>publicclassHttpServer{// Http-Server(服务端):// 1:创建socket()// 2:设置IP和端口// 3. 绑定ip和端口// 4:listen()监听,确定能连接多少个客户端// 5:accept()函数接受客户端的连接// 6:接受数据// 7: 发送数据// 8:终止连接。// 1:创建socket()publicSocketSocketSever;// 创建接受客户端的字典(就是成对放的数组),发送数据给客户端的时候要用publicDictionary<string,Socket>CurrentClientlist=newDictionary<string,Socket>();#region属性/// <summary>/// 服务IP/// </summary>publicstringIP{get;set;}/// <summary>/// 端口/// </summary>publicintPort{get;set;}#endregion/// <summary>/// 启动/// </summary>publicboolStart(){try{// 1:创建socket()SocketSever=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);// 2:设置IP和端口。IPEndPointipe=newIPEndPoint(IPAddress.Parse(IP),Port);try{// 3. 绑定ip和端口SocketSever.Bind(ipe);}catch(Exceptionex){MessageBox.Show("服务器开启失败:"+ex.Message);returnfalse;}// 4:listen(),确定能连接多少个客户端: 10 允许最多10个连接在队列中等待SocketSever.Listen(10);// 5.创建一个监听的线程Task.Run(newAction(()=>{AcceptClients();}));returntrue;}catch(Exceptionexp){MessageBox.Show("服务器开启失败:"+exp.Message);returnfalse;}}/// <summary>/// 监听客户端连接/// </summary>publicvoidAcceptClients(){while(true){// 5:accept()函数接受客户端的连接SocketsocketClient=SocketSever.Accept();stringclient=socketClient.RemoteEndPoint.ToString();// 将客户端保存起来CurrentClientlist.Add(client,socketClient);// 6:接受数据Task.Run(newAction(()=>{ReceiveMessage(socketClient);}));}}/// <summary>/// 监听接收客户端数据/// </summary>/// <param name="socketClient"></param>privatevoidReceiveMessage(SocketsocketClient){while(true){// 创建一个缓冲区byte[]buffer=newbyte[1024*1024*10];// 数据长度intlength=-1;stringclient=socketClient.RemoteEndPoint.ToString();try{length=socketClient.Receive(buffer);}catch(Exception){MessageBox.Show(client+"下线了");CurrentClientlist.Remove(client);break;}if(length>0){stringmsg=string.Empty;// 以utf8的格式接受msg=Encoding.UTF8.GetString(buffer,0,length);//MessageBox.Show("接受信息:"+msg);// 触发拍照(在上位机或者PLC发送这个通讯信息的时候,我们进行解析以后,进行拍照)CameraService.Instance.SnapImage();// 显示接受内容。需要使用Invoke,跨线程,跨UI//Invoke(new Action(() =>//{// rtb_Receive_server.AppendText(msg + "\n");//}));}else{MessageBox.Show(client+"下线了");CurrentClientlist.Remove(client);break;}}}/// <summary>/// 发送数据utf8/// </summary>/// <param name="sender"></param>/// <param name="e"></param>publicvoidSendMsg(stringContent){// 获取信息byte[]sendMsg=Encoding.UTF8.GetBytes(Content);// 对客户端发送信息foreach(variteminthis.CurrentClientlist){// 发送数据item.Value?.Send(sendMsg);}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1136395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用Sambert-HifiGan为在线课程添加AI讲师?

如何用Sambert-HifiGan为在线课程添加AI讲师&#xff1f; 引言&#xff1a;让AI讲师“开口说话”——中文多情感语音合成的教育新范式 在当前在线教育快速发展的背景下&#xff0c;课程内容的呈现方式正经历深刻变革。传统录播课程依赖真人讲师录制&#xff0c;成本高、更新慢、…

如何用Sambert-HifiGan为智能体重秤生成健康提示

如何用Sambert-HifiGan为智能体重秤生成健康提示 引言&#xff1a;让体重秤“会说话”——语音合成在智能硬件中的新实践 随着智能家居设备的普及&#xff0c;用户对交互体验的要求不断提升。传统的智能体重秤大多依赖手机App或屏幕显示来传递健康数据&#xff0c;缺乏即时性、…

elasticsearch安装详解:日志分析架构核心要点

Elasticsearch 部署实战&#xff1a;从零构建高可用日志分析平台你有没有遇到过这样的场景&#xff1f;线上服务突然报错&#xff0c;客户投诉接踵而至&#xff0c;可翻遍服务器日志却像大海捞针——关键字搜不到、时间范围对不上、响应慢得让人崩溃。传统greptail -f的方式&am…

吐血推荐MBA必用TOP9 AI论文平台

吐血推荐MBA必用TOP9 AI论文平台 2026年MBA学术写作工具测评&#xff1a;精准筛选&#xff0c;高效助力 随着AI技术在学术领域的深入应用&#xff0c;越来越多的MBA学生和从业者开始依赖智能写作工具提升论文效率与质量。然而&#xff0c;面对市场上琳琅满目的AI平台&#xff…

image2lcd色彩深度设置对LCD驱动性能影响全面讲解

image2lcd色彩深度设置对LCD驱动性能影响全面讲解在嵌入式显示系统开发中&#xff0c;图像资源的处理与显示是绕不开的核心环节。随着智能设备、工业HMI面板和消费类电子产品的普及&#xff0c;开发者对屏幕画质、响应速度以及内存效率的要求越来越高。而image2lcd这个看似简单…

PyTorch 2.5新功能实测:云端GPU 10分钟跑通案例,成本仅3元

PyTorch 2.5新功能实测&#xff1a;云端GPU 10分钟跑通案例&#xff0c;成本仅3元 引言&#xff1a;为什么选择云端GPU测试PyTorch 2.5&#xff1f; 作为一名技术博主&#xff0c;每次测试新框架版本最头疼的就是本地环境配置。不同版本的CUDA驱动、Python环境冲突、显存不足…

语音合成支持长文本吗?实测万字小说可分段合成且语调连贯

语音合成支持长文本吗&#xff1f;实测万字小说可分段合成且语调连贯 引言&#xff1a;中文多情感语音合成的现实挑战 随着AIGC技术的快速发展&#xff0c;语音合成&#xff08;Text-to-Speech, TTS&#xff09; 已从实验室走向实际应用&#xff0c;广泛用于有声书、智能客服、…

用Sambert-HifiGan为智能电视生成节目推荐

用Sambert-HifiGan为智能电视生成节目推荐 引言&#xff1a;语音合成在智能电视场景中的价值 随着智能家居生态的不断演进&#xff0c;自然、拟人化的语音交互已成为提升用户体验的核心要素。在智能电视场景中&#xff0c;传统的文字推荐已难以满足用户对“陪伴感”和“沉浸式…

对比测试:本地部署vs云API,Sambert-Hifigan在隐私与成本上胜出

对比测试&#xff1a;本地部署 vs 云API&#xff0c;Sambert-Hifigan在隐私与成本上胜出 &#x1f4cc; 引言&#xff1a;中文多情感语音合成的现实需求 随着智能客服、有声阅读、虚拟主播等应用场景的普及&#xff0c;高质量的中文多情感语音合成&#xff08;TTS&#xff09; …

Scanner类输入异常处理操作实践

如何优雅地处理 Scanner 输入异常&#xff1f;这些坑你一定要避开&#xff01;在 Java 编程中&#xff0c;我们经常需要和用户“对话”——比如写一个计算器、学生成绩管理系统&#xff0c;或者算法题的控制台输入。这时候&#xff0c;Scanner类就成了最顺手的工具之一。它简单…

CUDA out of memory错误终极解决方案

CUDA out of memory错误终极解决方案 问题背景与核心挑战 在深度学习模型推理和训练过程中&#xff0c;CUDA out of memory (OOM) 是开发者最常遇到的显存相关错误之一。尤其是在运行高资源消耗的生成式AI应用&#xff08;如Image-to-Video图像转视频生成器&#xff09;时&am…

ffmpeg处理前必看:如何用AI生成原始动态素材?

ffmpeg处理前必看&#xff1a;如何用AI生成原始动态素材&#xff1f; Image-to-Video图像转视频生成器 二次构建开发by科哥核心提示&#xff1a;在使用 ffmpeg 进行视频后处理之前&#xff0c;高质量的原始动态素材至关重要。本文介绍基于 I2VGen-XL 模型的 Image-to-Video 图像…

Sambert-HifiGan GPU资源占用分析:如何选择合适配置

Sambert-HifiGan GPU资源占用分析&#xff1a;如何选择合适配置 引言&#xff1a;中文多情感语音合成的现实需求与挑战 随着AI语音技术在客服、教育、有声内容生成等场景的广泛应用&#xff0c;高质量的中文多情感语音合成&#xff08;Text-to-Speech, TTS&#xff09; 成为智能…

零基础学嘉立创PCB布线:EasyEDA界面与工具介绍

从零开始玩转嘉立创PCB布线&#xff1a;EasyEDA实战入门全指南 你是不是也有过这样的经历&#xff1f;想做个智能小车、做个物联网传感器&#xff0c;甚至只是点亮一颗LED&#xff0c;结果卡在了“怎么画电路板”这一步。打开Altium Designer&#xff0c;满屏英文、复杂设置&a…

从电源到程序:全面讲解LCD1602只亮不显的成因

从电源到程序&#xff1a;彻底搞懂LCD1602“只亮不显”的根源与实战解决方案在单片机开发的入门阶段&#xff0c;几乎每位工程师都曾面对过这样一个令人抓狂的问题&#xff1a;LCD1602背光亮了&#xff0c;但屏幕一片空白&#xff0c;啥也不显示。你确认代码烧录成功、接线无误…

Sambert-HifiGan在智能农业设备中的语音指导应用

Sambert-HifiGan在智能农业设备中的语音指导应用 引言&#xff1a;让农田“听懂”农事指令——中文多情感语音合成的落地价值 随着智慧农业的快速发展&#xff0c;智能农机、环境监测系统、自动化灌溉设备等正逐步替代传统人工操作。然而&#xff0c;大多数设备仍依赖屏幕提示或…

基于双向时序卷积网络(BiTCN)与支持向量机(SVM)混合模型的时间序列预测代码Matlab源码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

多语言语音合成趋势:中文情感模型的技术突破点

多语言语音合成趋势&#xff1a;中文情感模型的技术突破点 引言&#xff1a;语音合成的演进与中文多情感表达的核心挑战 随着人工智能在人机交互领域的深入发展&#xff0c;语音合成&#xff08;Text-to-Speech, TTS&#xff09; 已从早期机械、单调的“机器人音”逐步迈向自然…

UDS协议物理层与数据链路层对接:操作指南

UDS协议底层通信实战&#xff1a;从物理层到数据链路层的无缝对接你有没有遇到过这样的场景&#xff1f;UDS诊断请求发出去了&#xff0c;上位机却迟迟收不到响应&#xff1b;或者多帧传输进行到一半突然中断&#xff0c;日志里只留下一个模糊的“超时”错误。更让人抓狂的是&a…

高可用镜像源推荐:国内加速下载方案汇总

高可用镜像源推荐&#xff1a;国内加速下载方案汇总 在深度学习与AI应用开发中&#xff0c;依赖项的快速安装和模型资源的高效获取是项目顺利推进的关键。尤其是在使用如 Image-to-Video 图像转视频生成器 这类基于大模型&#xff08;如 I2VGen-XL&#xff09;的项目时&#x…