Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据

本示例使用设备介绍:液显WIFI无线网络HTTP协议RFID云读卡器可编程实时可控开关TTS语-淘宝网 (taobao.com) 

unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, ScktComp, StdCtrls, ScktComp7, ExtCtrls,Clipbrd;typeTForm1 = class(TForm)ServerSocket1: TServerSocket;Button1: TButton;Button2: TButton;Edit1: TEdit;Edit2: TEdit;Label1: TLabel;ListBox1: TListBox;ListBox2: TListBox;Button3: TButton;CheckBox1: TCheckBox;Panel1: TPanel;RadioButton1: TRadioButton;RadioButton2: TRadioButton;RadioButton3: TRadioButton;RadioButton4: TRadioButton;Label6: TLabel;Label2: TLabel;Edit3: TEdit;Button4: TButton;Button5: TButton;Button6: TButton;Button7: TButton;RichEdit10: TRichEdit;UpDown7: TUpDown;ComboBox1: TComboBox;ComboBox3: TComboBox;RichEdit1: TRichEdit;UpDown1: TUpDown;RichEdit2: TRichEdit;UpDown2: TUpDown;Label3: TLabel;Label5: TLabel;Label7: TLabel;RadioButton5: TRadioButton;RadioButton6: TRadioButton;Label8: TLabel;Label9: TLabel;Label10: TLabel;CheckBox2: TCheckBox;Label4: TLabel;Button8: TButton;Button9: TButton;procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);procedure ServerSocket1ClientDisconnect(Sender: TObject;Socket: TCustomWinSocket);procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);procedure Button1Click(Sender: TObject);procedure FormActivate(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button6Click(Sender: TObject);procedure Button5Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure Button7Click(Sender: TObject);procedure Button8Click(Sender: TObject);procedure Button9Click(Sender: TObject);procedure CheckBox1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);private{ Private declarations }procedure Responsedata();procedure GetSenddata(respcode:integer);procedure ButtonSend(sendcode:integer);public{ Public declarations }ResponseBuff:Array of Byte;end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;  Socket: TCustomWinSocket);
beginButton3.Click();
end;procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;  Socket: TCustomWinSocket);
beginButton3.Click();
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
varRemotAddPort,DispStr,HexStr:String;i,GetDataLen:integer;GetBuff:Array of Byte;SendBuff:Array of Byte;respcode:integer;
begintryRemotAddPort:=Socket.RemoteAddress+':'+inttostr(Socket.RemotePort);GetDataLen:= Socket.ReceiveLength;SetLength(GetBuff, GetDataLen);Socket.ReceiveBuf(GetBuff[0],GetDataLen);   //Socket.ReceiveText;DispStr:='';for i:=0 to GetDataLen-1 dobeginDispStr:=DispStr+inttohex(GetBuff[i],2)+' ';end;if ListBox2.Count >100 then ListBox2.Clear();ListBox2.Items.Add('Get Data From  '+RemotAddPort+' : '+DispStr);case GetBuff[0] of$C1,$CF:beginif GetBuff[0]= $C1 thenDispStr:='数据解析:IC读卡器上传卡号,'elseDispStr:='数据解析:IC卡离开读卡器,';DispStr := DispStr+'设备IP['+IntToStr(GetBuff[1]) + '.' + IntToStr(GetBuff[2]) + '.' + IntToStr(GetBuff[3]) + '.' + IntToStr(GetBuff[4])+'],';DispStr := DispStr+'机号['+IntToStr(GetBuff[5] + GetBuff[6]*256)+'],';DispStr := DispStr+'数据包号['+IntToStr(GetBuff[7] + GetBuff[8]*256)+'],';DispStr := DispStr+'卡号长度['+IntToStr(GetBuff[9])+'],';HexStr:='';for i:=10 to 10+GetBuff[9]-1 doHexStr:=HexStr+inttohex(GetBuff[i],2);DispStr := DispStr+'16进制卡号['+HexStr+'],';HexStr:='';for i:=10+GetBuff[9] to GetDataLen-1 doHexStr:=HexStr+inttohex(GetBuff[i],2);DispStr := DispStr+'唯一硬件序号['+HexStr+']';ListBox2.Items.Add(DispStr);ListBox2.Items.Add('');listbox2.ItemIndex :=listbox2.Items.Count-1;if CheckBox1.Checked thenbeginResponsedata() ;Socket.SendBuf(ResponseBuff[0],Length(ResponseBuff));DispStr:='Send Data To  '+RemotAddPort+' : ';for i:=0 to Length(ResponseBuff)-1 doDispStr:=DispStr+inttohex(ResponseBuff[i],2)+' ';ListBox2.Items.Add(DispStr);ListBox2.Items.Add('');listbox2.ItemIndex :=listbox2.Items.Count-1;end;end;$D1,$DF:beginif GetBuff[0]= $D1 thenDispStr:='数据解析:ID读卡器上传卡号,'elseDispStr:='数据解析:ID卡离开读卡器,';DispStr := DispStr+'设备IP['+IntToStr(GetBuff[1]) + '.' + IntToStr(GetBuff[2]) + '.' + IntToStr(GetBuff[3]) + '.' + IntToStr(GetBuff[4])+'],';DispStr := DispStr+'机号['+IntToStr(GetBuff[5] + GetBuff[6]*256)+'],';DispStr := DispStr+'数据包号['+IntToStr(GetBuff[7] + GetBuff[8]*256)+'],';HexStr:='';for i:=9 to 13 doHexStr:=HexStr+inttohex(GetBuff[i],2);DispStr := DispStr+'16进制卡号['+HexStr+'],';HexStr:='';for i:=14 to GetDataLen-1 doHexStr:=HexStr+inttohex(GetBuff[i],2);DispStr := DispStr+'唯一硬件序号['+HexStr+']';ListBox2.Items.Add(DispStr);ListBox2.Items.Add('');listbox2.ItemIndex :=listbox2.Items.Count-1;if CheckBox1.Checked thenbeginResponsedata() ;Socket.SendBuf(ResponseBuff[0],Length(ResponseBuff));DispStr:='Send Data To  '+RemotAddPort+' : ';for i:=0 to Length(ResponseBuff)-1 doDispStr:=DispStr+inttohex(ResponseBuff[i],2)+' ';ListBox2.Items.Add(DispStr);ListBox2.Items.Add('');listbox2.ItemIndex :=listbox2.Items.Count-1;end;end;$F3:beginDispStr:='数据解析:读卡器心跳包,';DispStr := DispStr+'设备IP['+IntToStr(GetBuff[1]) + '.' + IntToStr(GetBuff[2]) + '.' + IntToStr(GetBuff[3]) + '.' + IntToStr(GetBuff[4])+'],';DispStr := DispStr+'机号['+IntToStr(GetBuff[5] + GetBuff[6]*256)+'],';DispStr := DispStr+'数据包号['+IntToStr(GetBuff[7] + GetBuff[8]*256)+'],';DispStr := DispStr+'心跳包标识['+inttohex(GetBuff[9],2)+'],';DispStr := DispStr+'长度['+IntToStr(GetBuff[10])+'],';DispStr := DispStr+'继电器状态['+inttohex(GetBuff[11],2)+'],';DispStr := DispStr+'输入口状态['+inttohex(GetBuff[12],2)+'],';DispStr := DispStr+'随机校验码['+inttohex(GetBuff[13],2)+inttohex(GetBuff[14],2)+inttohex(GetBuff[15],2)+inttohex(GetBuff[16],2)+'],';HexStr:='';HexStr:='';for i:=17 to GetDataLen-1 doHexStr:=HexStr+inttohex(GetBuff[i],2);DispStr := DispStr+'唯一硬件序号['+HexStr+']';ListBox2.Items.Add(DispStr);ListBox2.Items.Add('');listbox2.ItemIndex :=listbox2.Items.Count-1;  end;end;exceptend;
end;procedure TForm1.Responsedata();           //根据选择的回应方式生成回应数据缓冲
beginif RadioButton1.Checked thenGetSenddata(0)elseif RadioButton2.Checked thenGetSenddata(1)elseif RadioButton3.Checked thenGetSenddata(2)elseGetSenddata(3);
end;procedure TForm1.GetSenddata(respcode:integer);         //根据发送方式生成发送数据缓冲
var
delaytime,i,voicelen,displen:integer;
strls,voicestr:string;
begincase respcode of0:beginSetLength(ResponseBuff, 39);ResponseBuff[0]:=$5A;   //命令字:驱动显示文字+蜂鸣器响声ResponseBuff[1]:=$00;   //机号低ResponseBuff[2]:=$00;   //机号高,0000表示任意机号if(CheckBox2.Checked) thenbeginResponseBuff[3]:=ComboBox1.ItemIndex;   //蜂鸣器响声代码if RadioButton6.Checked then  ResponseBuff[3]:=ResponseBuff[3] xor 128; //背光灯状态不改变endelsebeginResponseBuff[3]:=$ff;          //不响声if RadioButton6.Checked then  ResponseBuff[3]:=ResponseBuff[3] xor 127; //背光灯状态不改变end;delaytime:=StrToInt(RichEdit10.Lines[0]);ResponseBuff[4] := delaytime mod 256;    //显示时长strls := Edit1.Text + '                                        ';for i := 1 to 34 doResponseBuff[4+i] := Byte(strls[i]);end;1:beginvoicestr:='[v'+ trim(RichEdit2.Lines[0])+']';   //本次播报TTS语音的音量大小,取值范围v0 到 v16voicestr:= voicestr+trim(edit3.Text);voicelen:=length(voicestr); //语音长度displen:=34;             //满屏显示长度SetLength(ResponseBuff, 11+displen+voicelen+4);ResponseBuff[0]:=$5C;   //命令字:驱动显示文字+蜂鸣器响声+开启继电器+播报TTS语音ResponseBuff[1]:=$00;   //机号低ResponseBuff[2]:=$00;   //机号高,0000表示任意机号if(CheckBox2.Checked) thenbeginResponseBuff[3]:=ComboBox1.ItemIndex;   //蜂鸣器响声代码if RadioButton6.Checked then  ResponseBuff[3]:=ResponseBuff[3] xor 128; //背光灯状态不改变endelsebeginResponseBuff[3]:=$ff;          //不响声if RadioButton6.Checked then  ResponseBuff[3]:=ResponseBuff[3] xor 127; //背光灯状态不改变end;case ComboBox3.ItemIndex of       //开启的继电器号1: ResponseBuff[4]:=$f1;2: ResponseBuff[4]:=$f2;3: ResponseBuff[4]:=$f3;4: ResponseBuff[4]:=$f4;5: ResponseBuff[4]:=$f5;6: ResponseBuff[4]:=$f6;7: ResponseBuff[4]:=$f7;8: ResponseBuff[4]:=$f8;else ResponseBuff[4]:=$f0;end;delaytime:=StrToInt(RichEdit1.Lines[0]);ResponseBuff[5] := delaytime mod 256;ResponseBuff[6] := (delaytime div 256) mod 256;delaytime:=StrToInt(RichEdit10.Lines[0]);ResponseBuff[7] := delaytime mod 256;    //显示时长ResponseBuff[8] :=0;ResponseBuff[9] :=displen;ResponseBuff[10] :=voicelen;strls := Edit1.Text + '                                        ';for i := 1 to displen doResponseBuff[10+i] := Byte(strls[i]);for i := 1 to voicelen doResponseBuff[10+displen+i] := Byte(voicestr[i]);ResponseBuff[10+displen+voicelen+1]:=$55; //防干扰固定后缀ResponseBuff[10+displen+voicelen+2]:=$aa;ResponseBuff[10+displen+voicelen+3]:=$66;ResponseBuff[10+displen+voicelen+4]:=$99;end;2:beginSetLength(ResponseBuff, 4);ResponseBuff[0]:=$96;   //命令字:驱动蜂鸣器响ResponseBuff[1]:=$00;   //机号低ResponseBuff[2]:=$00;   //机号高,0000表示任意机号ResponseBuff[3]:=ComboBox1.ItemIndex;   //蜂鸣器响声代码end;3:beginSetLength(ResponseBuff, 6);ResponseBuff[0]:=$78;   //命令字:驱动开启继电器ResponseBuff[1]:=$00;   //机号低ResponseBuff[2]:=$00;   //机号高,0000表示任意机号case ComboBox3.ItemIndex of       //开启的继电器号1: ResponseBuff[3]:=$f1;2: ResponseBuff[3]:=$f2;3: ResponseBuff[3]:=$f3;4: ResponseBuff[3]:=$f4;5: ResponseBuff[3]:=$f5;6: ResponseBuff[3]:=$f6;7: ResponseBuff[3]:=$f7;8: ResponseBuff[3]:=$f8;else ResponseBuff[3]:=$f0;end;delaytime:=StrToInt(RichEdit1.Lines[0]);ResponseBuff[4] := delaytime mod 256;ResponseBuff[5] := (delaytime div 256) mod 256;end;4:beginSetLength(ResponseBuff, 6);ResponseBuff[0]:=$78;   //命令字:驱动关闭已开启继电器ResponseBuff[1]:=$00;   //机号低ResponseBuff[2]:=$00;   //机号高,0000表示任意机号case ComboBox3.ItemIndex of       //继电器号1: ResponseBuff[3]:=$e1;2: ResponseBuff[3]:=$e2;3: ResponseBuff[3]:=$e3;4: ResponseBuff[3]:=$e4;5: ResponseBuff[3]:=$e5;6: ResponseBuff[3]:=$e6;7: ResponseBuff[3]:=$e7;8: ResponseBuff[3]:=$e8;else ResponseBuff[3]:=$e0;end;delaytime:=StrToInt(RichEdit1.Lines[0]);ResponseBuff[4] := delaytime mod 256;ResponseBuff[5] := (delaytime div 256) mod 256;end;end;
end;procedure TForm1.ButtonSend(sendcode:integer);
var
i:integer;
RemotAddPort,DispStr:string;
beginif ServerSocket1.Active thenbegini:=ListBox1.ItemIndex ;if i>=0 thenbegintryGetSenddata(sendcode);ServerSocket1.Socket.Connections[i].SendBuf(ResponseBuff[0],Length(ResponseBuff));RemotAddPort:= ServerSocket1.Socket.Connections[i].RemoteAddress+':'+inttostr(ServerSocket1.Socket.Connections[i].RemotePort);DispStr:='Send Data To  '+RemotAddPort+' : ';for i:=0 to Length(ResponseBuff)-1 doDispStr:=DispStr+inttohex(ResponseBuff[i],2)+' ';ListBox2.Items.Add(DispStr);ListBox2.Items.Add('');listbox2.ItemIndex :=listbox2.Items.Count-1;exceptend;endelseApplication.MessageBox('请先选择要向其发送指令的在线客户端!', '警告', MB_OK+MB_ICONSTOP);endelseApplication.MessageBox('请先启动TCP服务监听!', '警告', MB_OK+MB_ICONSTOP);
end;procedure TForm1.Button1Click(Sender: TObject);
beginButtonSend(0);
end;procedure TForm1.FormActivate(Sender: TObject);
begin
if ServerSocket1.Active thenbeginButton2.Caption := '停止';end
elsebeginButton2.Click();end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if not ServerSocket1.Active thenbegintryServerSocket1.Port := StrToInt(Edit2.Text);ServerSocket1.Active := True;Button2.Caption := '停止';Edit2.Enabled := False;exceptApplication.MessageBox('启动TCP服务监听失败!可能端口已被其他应用占用。', '警告', MB_OK+MB_ICONSTOP);end;endelsebeginServerSocket1.Active := False;Button2.Caption := '启动TCP服务监听';Edit2.Enabled := True;ListBox1.Items.Clear();ListBox2.Items.Clear();end;end;procedure TForm1.Button3Click(Sender: TObject);
vari,links:integer;
beginListBox1.Items.Clear();links:=ServerSocket1.Socket.ActiveConnections;for i:=0 to links-1 dobeginListBox1.Items.Add(inttostr(i)+'|'+ServerSocket1.Socket.Connections[i].RemoteAddress+':'+inttostr(ServerSocket1.Socket.Connections[i].RemotePort));end;
end;procedure TForm1.Button6Click(Sender: TObject);
beginButtonSend(3);
end;procedure TForm1.Button5Click(Sender: TObject);
beginButtonSend(2);
end;procedure TForm1.Button4Click(Sender: TObject);
beginButtonSend(1);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if ServerSocket1.Active  then ServerSocket1.Active := False;
end;procedure TForm1.Button7Click(Sender: TObject);
beginButtonSend(4);
end;procedure TForm1.Button8Click(Sender: TObject);
varliststr:string;i:integer;
beginif listbox2.Count <1 then exit;liststr:='';for i:=0 to ListBox2.Count-1 dobeginListBox2.ItemIndex:=i;liststr:=liststr+ListBox2.Items.Strings[ListBox2.ItemIndex]+#13#10;end;Clipboard.SetTextBuf(PChar(liststr));Application.MessageBox('TCP通讯报文日志已拷贝!', '提示', MB_OK+MB_ICONASTERISK );
end;procedure TForm1.Button9Click(Sender: TObject);
beginListBox2.Clear();
end;procedure TForm1.CheckBox1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
beginif checkbox1.Checked then Panel1.Visible :=true else Panel1.Visible :=false;
end;end.

 

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

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

相关文章

《数字图像处理-OpenCV/Python》连载(41)图像的旋转

《数字图像处理-OpenCV/Python》连载&#xff08;41&#xff09;图像的旋转 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第 6 章 图像的几何变换 几何变换分…

WordPress Modown 6.2付费下载资源/付费查看内容 wp主题模板+erphpdown11.7

模板简介&#xff1a; 自适应响应式设计&#xff0c;兼容主流浏览器 网格样式与瀑布流样式任意切换 内置SEO优化 自带与主题UI完美兼容搭配的erphpdown前端用户中心页面&#xff08;此功能若单独找我们定制也需要几百&#xff09; 收费付费下载资源、付费查看内容、付费观看…

drawio连接线的样式设置

drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#xff0c;以及在线共…

vue3 使用element plus 打包时 报错

vue3vitetselementPlus中运行正常打包出错 能正常运行&#xff0c;但是打包出错 解决打包时出现导入element plus相关的爆红&#xff0c;导致无法打包的问题 如若出现类似于&#xff1a;Module ‘“element-plus”’ has no exported member ‘ElMessage’. Did you mean to…

Python语法基础(字符串 列表 元组 字典 集合)

目录 字符串(str)字符串的创建特殊情况字符串的转义字符字符串的运算符字符串常用方法求字符串长度去掉多余空格是否包含某子串分割字符串合并字符串替换字符串统计统计字符串出现的次数 练习&#xff1a;判断字符串是否为回文串 列表(list)列表的创建列表常用方法遍历列表列表…

金字塔原理小节

目录 第1章 为什么要用金字塔结构 一、归类分组&#xff0c;将思想组织成金字塔 二、奇妙的数字“7” 三、归类分组搭建金字塔 四、找出逻辑关系&#xff0c;抽象概括 五、自上而下表达&#xff0c;结论先行 第1章 为什么要用金字塔结构 如果受众希望通过阅读你的文章、听…

C++学习贴---C++预处理器

文章目录 前言预处理器#define预处理条件编译#ifdef#ifndef#if、#elif、#else 和 #endif #和##运算符 预定义宏 前言 预处理器 预处理器是指一些指示编译器在实际编译之前所需要完成的指令。 预处理器负责处理以**井号&#xff08;#&#xff09;**开头的预处理指令&#xff0…

lv11 嵌入式开发 ARM体系结构理论基础(异常、微架构)4

1 异常概念 处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件 异常事件处理完成之后再返回到被异常打断的点继续执行程序 2 异常处理机制 不同的处理器对异常的处理的流程大体相似&#xff0c…

BMVC 23丨多模态CLIP:用于3D场景问答任务的对比视觉语言预训练

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2306.02329 摘要&#xff1a; 训练模型将常识性语言知识和视觉概念从 2D 图像应用到 3D 场景理解是研究人员最近才开始探索的一个有前景的方向。然而&#xff0c…

地区 IP 库

地区 & IP 库 yudao-spring-boot-starter-biz-ip (opens new window)业务组件&#xff0c;提供地区 & IP 库的封装。 #1. 地区 AreaUtils (opens new window)是地区工具类&#xff0c;可以查询中国的省、市、区县&#xff0c;也可以查询国外的国家。 它的数据来自 …

kubectl声明式资源管理命令

目录 一、声明式资源管理介绍&#xff1a; 二、声明式相关命令&#xff1a; 1. 语法格式&#xff1a; 2. 查看资源配置清单&#xff1a; 3. 解释资源配置清单&#xff1a; 4. 修改资源配置清单并应用&#xff1a; 4.1 离线修改&#xff1a; 4.2 在线修改&#xff1a; 5. 删除资…

【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline

前言 虚拟机用户名: root 无密码 设备逆向与漏洞分析 程序没有去符合, 还是比较简单. 实例结构体如下: 先总体说一下流程: encode 为 base64 编码函数, decode 为 base64 解码函数. 然后 encPipe 和 decPipe 分别存放编码数据和解码数据, 分别有四个: 其中 EncPipeLine 中…

Unity地面交互效果——4、制作地面凹陷轨迹

大家好&#xff0c;我是阿赵。   上一篇介绍了曲面细分着色器的基本用法和思路&#xff0c;这一篇在曲面细分的基础上&#xff0c;制作地面凹陷的轨迹效果。 一、思路分析 这次需要达到的效果是这样的&#xff1a; 从效果上看&#xff0c;这个凹陷在地面下的轨迹&#xff0…

PostMan授权认证使用

Authorization 对于很多应用&#xff0c;出于安全考虑我们的接口并不希望对外公开。这个时候就需要使用授权(Authorization)机制。 授权过程验证您是否具有访问服务器所需数据的权限。 当发送请求时&#xff0c;通常必须包含参数&#xff0c;以确保请求具有访问和返回所需数据…

蓝桥杯算法竞赛第一周题型总结

本专栏内容为&#xff1a;蓝桥杯学习专栏&#xff0c;用于记录蓝桥杯的学习经验分享与总结。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f33…

skynet学习笔记02— skynet介绍、skynet基础API与环境变量

01、Skynet与Actor模型 在系统Skynet之前&#xff0c;先了解一下Skynet与Actor模型&#xff0c;下列是风云大佬的介绍以及一个大佬的博客 https://github.com/cloudwu/skynet/wiki/GettingStartedhttps://blog.csdn.net/qq769651718/article/details/79432793 02、Skynet基础…

python升级pip的时候一直失败

如图,一直提示使用 python.exe -m pip install --upgrade pip 进行升级pip,但是执行这句命令又不成功.然后综合了几篇文章以后使用了下面的命令可以升级了 python -m pip install --upgrade pip --user -i https://mirrors.aliyun.com/pypi/simple/ 主要是在推荐的语句上使用…

润色论文Prompt

你好&#xff0c;我现在开始写论文了&#xff0c;我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx&#xff0c;我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…

Android Studio新建项目下载依赖慢,只需一个操作解决

新建的安卓工程&#xff0c;下载依赖贼慢怎么办&#xff1f;水一篇吧。 首先新建工程&#xff0c;建好以后项目就自动开始下载了&#xff0c;底部开始出现进度条&#xff0c;但是进度条一直不怎么动&#xff0c;网速也就十几k&#xff0c;要是等他下载得下一天。 直入主题&…

第四节(2):修改WORD中表格数据的方案

《VBA信息获取与处理》教程(10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网…