VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据

本 示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com)

Imports System.Threading
Imports System.Net
Imports System.Net.Sockets
Public Class Form1Dim ListenSocket As SocketDim Dict As New Dictionary(Of String, Socket) '用于保存连接的客户的套接字的键值对集合Dim DictThre As New Dictionary(Of String, Thread) '用于保存通信线程的键值对集合Dim LocalIp As StringDim SendBuff() As BytePublic Sub getIp() '获取本机所有网卡的IPDim Address() As System.Net.IPAddressDim i As IntegerAddress = Dns.GetHostByName(Dns.GetHostName()).AddressListIf UBound(Address) < 0 ThenMsgBox("未能查找到本台电脑安装的网卡,暂不能启动本软件。", MsgBoxStyle.Critical + vbOKOnly, "注意")EndElseFor i = 0 To UBound(Address)comboBox4.Items.Add(Address(i).ToString())NextcomboBox4.SelectedIndex = 0LocalIp = comboBox4.Text.Trim()End IfEnd SubPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadgetIp()comboBox4.SelectedIndex = 0End SubPrivate Sub btn_conn_Click(sender As Object, e As EventArgs) Handles btn_conn.ClickIf btn_conn.Text = "开启TCP服务,允许新客户端接入" ThenTextBox.CheckForIllegalCrossThreadCalls = False '取消文本框的跨线程检查Dim localAddress As IPAddress = IPAddress.Parse(comboBox4.Text.Trim())Dim EndPoint As New IPEndPoint(localAddress, txb_port.Text) '创建一个网络节点对象ListenSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)ListenSocket.Bind(EndPoint) '给负责监听的套接字绑定一个网络节点ListenSocket.Listen(100) '侦听,最多接受100个连接Dim thre = New Thread(AddressOf Connect) '创建一个新的线程用于处理客户端发来的连接请求thre.IsBackground = True '设为后台线程thre.Start() '开启线程 btn_conn.Text = "停止新客户端连接"listBox2.Items.Add("TCP端口监听服务已开启,新客户端设备可以连接并上传数据......")listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1Else ListenSocket.Close()ListenSocket = Nothingbtn_conn.Text = "开启TCP服务,允许新客户端接入"listBox2.Items.Add("TCP服务端已禁止新客户端连接,已连接的客户端设备可继续上传数据......")listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1End IfEnd SubSub Connect() '处理客户端的连接请求的过程While TrueTryDim SockConect As Socket = listenSocket.AcceptDict.Add(SockConect.RemoteEndPoint.ToString, SockConect) '将连接成功的套接字添加到键值对集合listBox1.Items.Add(SockConect.RemoteEndPoint.ToString) '添加到列表Dim Thre As New Thread(AddressOf RecClient) '创建一个新的线程用于和链接成功的套接字通信Thre.IsBackground = True '设为后台线程Thre.Start(SockConect)DictThre.Add(SockConect.RemoteEndPoint.ToString, Thre) '将创建的通信线程添加到键值对集合CatchEnd TryEnd WhileEnd SubSub RecClient(ByVal SockTelNet As Socket) '处理客户端发来的数据While TrueTryDim getdata(1024) As ByteDim RecLen As Int32Dim HexStr As StringTry '捕获异常RecLen = SockTelNet.Receive(getdata) '接受客户端发来得信息Catch ss As SocketExceptionlistBox2.Items.Add(ss.NativeErrorCode & vbCrLf & ss.Message) '显示错误信息Dict.Remove(SockTelNet.RemoteEndPoint.ToString) '移除断开连接的套接字 ReturnCatch s As ExceptionlistBox2.Items.Add(s.Message)ReturnEnd TryIf RecLen > 0 ThenDim StrMsg As StringStrMsg = DateTime.Now.ToLongTimeString() + " Get From " + SockTelNet.RemoteEndPoint.ToString + " : "For i = 0 To RecLen - 1StrMsg = StrMsg + getdata(i).ToString("X2") + " "NextIf listBox2.Items.Count() > 100 Then listBox2.Items.Clear()listBox2.Items.Add(StrMsg)Select Case getdata(0)Case &HC1, &HCFIf getdata(0) = &HC1 ThenStrMsg = "数据解析:IC读卡器上传卡号,"ElseStrMsg = "数据解析:IC卡离开读卡器,"End IfStrMsg = StrMsg + "IP[" + getdata(1).ToString("D") + "." + getdata(2).ToString("D") + "." + getdata(3).ToString("D") + "." + getdata(4).ToString("D") + "],"StrMsg = StrMsg + "机号[" + (getdata(5) + getdata(6) * 256).ToString("D") + "],"StrMsg = StrMsg + "数据包号[" + (getdata(7) + getdata(8) * 256).ToString("D") + "],"StrMsg = StrMsg + "卡号长度[" + getdata(9).ToString("D") + "],"HexStr = ""For i = 10 To 10 + getdata(9) - 1HexStr = HexStr + getdata(i).ToString("X2")NextStrMsg = StrMsg + "16进制卡号[" + HexStr + "],"HexStr = ""For i = 10 + getdata(9) To RecLen - 1HexStr = HexStr + getdata(i).ToString("X2")NextStrMsg = StrMsg + "唯一硬件序号[" + HexStr + "]"listBox2.Items.Add(StrMsg)listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1If CheckBox1.Checked ThenGetRespData()SockTelNet.Send(SendBuff)StrMsg = DateTime.Now.ToLongTimeString() + " Send To " + SockTelNet.RemoteEndPoint.ToString + " : "For i = 0 To SendBuff.Length - 1StrMsg = StrMsg + SendBuff(i).ToString("X2") + " "NextlistBox2.Items.Add(StrMsg)listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1End IfCase &HD1, &HDFIf getdata(0) = &HD1 ThenStrMsg = "数据解析:ID读卡器上传卡号,"ElseStrMsg = "数据解析:ID卡离开读卡器,"End IfStrMsg = StrMsg + "IP[" + getdata(1).ToString("D") + "." + getdata(2).ToString("D") + "." + getdata(3).ToString("D") + "." + getdata(4).ToString("D") + "],"StrMsg = StrMsg + "机号[" + (getdata(5) + getdata(6) * 256).ToString("D") + "],"StrMsg = StrMsg + "数据包号[" + (getdata(7) + getdata(8) * 256).ToString("D") + "],"StrMsg = StrMsg + "16进制卡号[" + getdata(9).ToString("X2") + getdata(10).ToString("X2") + getdata(11).ToString("X2") + getdata(12).ToString("X2") + getdata(13).ToString("X2") + "],"HexStr = ""For i = 14 To RecLen - 1HexStr = HexStr + getdata(i).ToString("X2")NextStrMsg = StrMsg + "唯一硬件序号[" + HexStr + "]"listBox2.Items.Add(StrMsg)listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1Case &HF3StrMsg = "数据解析:读卡器心跳数据包,"StrMsg = StrMsg + "IP[" + getdata(1).ToString("D") + "." + getdata(2).ToString("D") + "." + getdata(3).ToString("D") + "." + getdata(4).ToString("D") + "],"StrMsg = StrMsg + "机号[" + (getdata(5) + getdata(6) * 256).ToString("D") + "],"StrMsg = StrMsg + "数据包号[" + (getdata(7) + getdata(8) * 256).ToString("D") + "],"StrMsg = StrMsg + "心跳类型[" + getdata(9).ToString("X2") + "],"StrMsg = StrMsg + "长度[" + getdata(10).ToString("D") + "],"StrMsg = StrMsg + "继电器状态[" + getdata(11).ToString("X2") + "],"StrMsg = StrMsg + "外部输入状态[" + getdata(12).ToString("X2") + "],"StrMsg = StrMsg + "随机动态码[" + getdata(13).ToString("X2") + getdata(14).ToString("X2") + getdata(15).ToString("X2") + getdata(17).ToString("X2") + "],"HexStr = ""For i = 17 To RecLen - 1HexStr = HexStr + getdata(i).ToString("X2")NextStrMsg = StrMsg + "唯一硬件序号[" + HexStr + "]"listBox2.Items.Add(StrMsg)listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1End SelectEnd IfCatchEnd TryEnd WhileEnd Sub'选择在线设备向其发送指令Sub ButtoSend(ByVal sendcode As Integer)Dim seleid As StringDim dispstr As StringDim i As IntegerIf listBox1.SelectedIndex >= 0 Thenseleid = listBox1.TextGetSenddata(sendcode)Dict.Item(seleid).Send(SendBuff)dispstr = DateTime.Now.ToLongTimeString() + " Send To " + seleid + " : "For i = 0 To SendBuff.Length - 1dispstr = dispstr + SendBuff(i).ToString("X2") + " "NextlistBox2.Items.Add(dispstr)listBox2.Items.Add("")listBox2.SelectedIndex = listBox2.Items.Count - 1ElseMsgBox("请先在客户端列表中选择要发送指令的在线客户端!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")End IfEnd Sub'按回应需要生成发送缓冲数据Sub GetRespData()If RadioButton3.Checked ThenGetSenddata(0)ElseIf RadioButton4.Checked ThenGetSenddata(1)ElseIf RadioButton5.Checked ThenGetSenddata(2)ElseGetSenddata(3)End IfEnd Sub'按发送需要生成发送缓冲数据Sub GetSenddata(ByVal sendcode As Integer)Dim i As LongDim strs As StringDim textbyte() As ByteSelect Case sendcodeCase 0ReDim SendBuff(38)SendBuff(0) = &H5A '驱动显示文字+蜂鸣响声的功能码SendBuff(1) = 0 '机号低位SendBuff(2) = 0 '机号高位,高低位为0表示任意机号If checkBox2.Checked Then '蜂鸣响声SendBuff(3) = comboBox3.SelectedIndex '蜂鸣响声代码If radioButton2.Checked Then '背光灯状态不变SendBuff(3) = SendBuff(3) Or 128End IfElseSendBuff(3) = &HFF '不响蜂鸣声If radioButton2.Checked Then '背光灯状态不变SendBuff(3) = SendBuff(3) And 127End IfEnd IfSendBuff(4) = dispdelay.Valuestrs = textBox12.Text + " "textbyte = System.Text.Encoding.GetEncoding(936).GetBytes(strs)For i = 0 To 33SendBuff(5 + i) = textbyte(i)NextCase 1strs = "[v" + SYDX.Value.ToString() + "]" '设置语音大小,在需要发送的语音字符串中任何位置加入[v10],表示将音量调到10级(范围0~16,0表示静音,16最大,每次重开机后,音量重置为10级)!strs = strs + textBox1.Text.Trim()textbyte = System.Text.Encoding.GetEncoding(936).GetBytes(strs)Dim displen As IntegerDim voiclen As IntegerDim commlen As Integerdisplen = 34voiclen = textbyte.Lengthcommlen = 10 + displen + voiclen + 4ReDim SendBuff(commlen)SendBuff(0) = &H5C '驱动显示文字+蜂鸣响声的功能码+开继电器+播报TTS语音SendBuff(1) = 0 '机号低位SendBuff(2) = 0 '机号高位,高低位为0表示任意机号If checkBox2.Checked Then '蜂鸣响声SendBuff(3) = comboBox3.SelectedIndex '蜂鸣响声代码If radioButton2.Checked Then '背光灯状态不变SendBuff(3) = SendBuff(3) Or 128End IfElseSendBuff(3) = &HFF '不响蜂鸣声If radioButton2.Checked Then '背光灯状态不变SendBuff(3) = SendBuff(3) And 127End IfEnd IfSelect Case comboBox2.SelectedIndex '根据选择开启对应的继电器Case 1SendBuff(4) = &HF1Case 2SendBuff(4) = &HF2Case 3SendBuff(4) = &HF3Case 4SendBuff(4) = &HF4Case 5SendBuff(4) = &HF5Case 6SendBuff(4) = &HF6Case 7SendBuff(4) = &HF7Case 8SendBuff(4) = &HF8Case ElseSendBuff(4) = &HF0End Selecti = CLng(textBox11.Text) '继电器开启时长SendBuff(5) = i Mod 256SendBuff(6) = Int(i / 256) Mod 256SendBuff(7) = dispdelay.Value '显示时长SendBuff(8) = 0 '显示起始位SendBuff(9) = displen '显示长度SendBuff(10) = voiclen 'TTS语音长度strs = textBox12.Text + " "Dim dispbyte() As Bytedispbyte = System.Text.Encoding.GetEncoding(936).GetBytes(strs)For i = 0 To displen - 1 '显示文字SendBuff(11 + i) = dispbyte(i)NextFor i = 0 To voiclen - 1 'TTS语音SendBuff(11 + displen + i) = textbyte(i)NextSendBuff(11 + displen + voiclen + 0) = &H55 '防干扰后缀SendBuff(11 + displen + voiclen + 1) = &HAASendBuff(11 + displen + voiclen + 2) = &H66SendBuff(11 + displen + voiclen + 3) = &H99Case 2ReDim SendBuff(3)SendBuff(0) = &H96 '驱动蜂鸣响声的功能码SendBuff(1) = 0 '机号低位SendBuff(2) = 0 '机号高位,高低位为0表示任意机号SendBuff(3) = comboBox3.SelectedIndexCase 3ReDim SendBuff(5)SendBuff(0) = &H78 '驱动开关继电器的功能码SendBuff(1) = 0 '机号低位SendBuff(2) = 0 '机号高位,高低位为0表示任意机号Select Case comboBox2.SelectedIndex '根据选择开启对应的继电器Case 1SendBuff(3) = &HF1Case 2SendBuff(3) = &HF2Case 3SendBuff(3) = &HF3Case 4SendBuff(3) = &HF4Case 5SendBuff(3) = &HF5Case 6SendBuff(3) = &HF6Case 7SendBuff(3) = &HF7Case 8SendBuff(3) = &HF8Case ElseSendBuff(3) = &HF0End Selecti = CLng(textBox11.Text) '开启时长SendBuff(4) = i Mod 256SendBuff(5) = Int(i / 256) Mod 256Case 4ReDim SendBuff(5)SendBuff(0) = &H78 '驱动开关继电器的功能码SendBuff(1) = 0 '机号低位SendBuff(2) = 0 '机号高位,高低位为0表示任意机号Select Case comboBox2.SelectedIndex '根据选择关闭对应的继电器Case 1SendBuff(3) = &HE1Case 2SendBuff(3) = &HE2Case 3SendBuff(3) = &HE3Case 4SendBuff(3) = &HE4Case 5SendBuff(3) = &HE5Case 6SendBuff(3) = &HE6Case 7SendBuff(3) = &HE7Case 8SendBuff(3) = &HE8Case ElseSendBuff(3) = &HE0End Selecti = CLng(textBox11.Text) '开启时长SendBuff(4) = i Mod 256SendBuff(5) = Int(i / 256) Mod 256End SelectEnd SubPrivate Sub button6_Click(sender As Object, e As EventArgs) Handles button6.ClickButtoSend(2)End SubPrivate Sub button7_Click(sender As Object, e As EventArgs) Handles button7.ClickButtoSend(3)End SubPrivate Sub button8_Click(sender As Object, e As EventArgs) Handles button8.ClickButtoSend(4)End SubPrivate Sub button10_Click(sender As Object, e As EventArgs) Handles button10.ClickButtoSend(0)End SubPrivate Sub button9_Click(sender As Object, e As EventArgs) Handles button9.ClickButtoSend(1)End SubPrivate Sub button3_Click(sender As Object, e As EventArgs) Handles button3.ClickDim copstr As StringDim I As LongClipboard.Clear()copstr = ""For I = 0 To listBox2.Items.Count - 1copstr = copstr & listBox2.Items(I)copstr = copstr & vbCrLfNextClipboard.SetText(copstr)MsgBox("TCP通讯日志报文已拷贝!", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "提示")End SubPrivate Sub button2_Click(sender As Object, e As EventArgs) Handles button2.ClicklistBox2.Items.Clear()End Sub
End Class
相关文章:
VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据
本 示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) Imports System.Threading Imports System.Net Imports System.Net.Sockets Public Class Form1Dim ListenSocket As SocketDim Dict As New Dictionary(Of…...
Springboot 集成 MongoDB
在SpringBoot项目中集成MongoDB后的一些基本操作。 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 本文介绍的内容是Springboot如何集成MongoDB,以及对MongoDB进行基本的增加、查询数据的操作。 提示:以下是本篇…...
AM@定积分的定义求某些类型的极限
文章目录 定积分定义求极限步骤例 定积分表示为极限 定积分定义求极限 容易从定积分的定义: ∫ a b f ( x ) d x \int_{a}^{b}f(x)\mathrm{d}x ∫abf(x)dx lim λ → 0 ∑ i 1 n f ( ξ i ) Δ x i \lim\limits_{\lambda\to{0}}\sum_{i1}^{n}f{(\xi_{i})}\Delta{x_i} λ→…...
Perl爬虫程序的框架
Perl爬虫程序的框架,这个框架可以用来爬取任何网页的内容。 perl #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; # 创建LWP::UserAgent对象 my $ua LWP::UserAgent->new; # 设置代理信息 $ua->proxy(http, ); …...
15. 机器学习——聚类
机器学习面试题汇总与解析——聚类 本章讲解知识点 什么是聚类K-means 聚类算法均值偏移聚类算法DBSCAN 聚类算法高斯混合模型(GMM)的期望最大化(EM)聚类层次聚类算法本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 本专栏适合于算法工程师、机器学习、图像…...
华为笔记本电脑原装win10/win11系统恢复安装教程方法
华为电脑matebook 14原装Win11系统带F10智能还原 安装恢复教程: 1.安装方法有两种,一种是用PE安装,一种是华为工厂包安装(安装完成自带F10智能还原) 若没有原装系统文件,请在这里获取:https:…...
计算机毕业设计 基于SpringBoot的养老院管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
Python数据容器(序列操作)
序列 1.什么是序列 序列是指:内容连续、有序。可以使用下标索引的一类数据容器 列表、元组、字符串。均可以视为序列 2.序列的常用操作 - 切片 语法:序列[起始下标:结束下标:步长]起始下标表示从何处开始,可以留空,留空视作从…...
【C++】stack,queue和deque
stack的介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成…...
Linux centos系统中添加磁盘
为了学习与训练文件系统或磁盘的分区、格式化和挂载/卸载,我们需要为虚拟机添加磁盘。根据需要,可以添加多块不同大小的磁盘。具体操作讨论如下,供参考。 一、添加 1.开机前 有两个地方,可选择打开添加硬盘对话框 (1)双击左侧…...
java网络编程之UDP协议
文章目录 UDP简介一发一收客户端:服务端: 多发多收实现多开客户端:服务端 UDP简介 UDP(User Datagram Protocol) DatagramSocket 用于创建客户端、服务端DatagramSocket() :创建客户端的Socket对象,系统随…...
几百封钓鱼邮件如何分析?一个简单的方法告诉你!
前几天的时候收到一批钓鱼邮件需要分析,打开一看就傻了眼,大概有几百封,而且基本上每一封都是钓鱼邮件,第一反应是很崩溃,这么多如何分析?但是客户那边又着急要,那只能先上了: 一、…...
【设计原则篇】聊聊开闭原则
开闭原则 其实就是对修改关闭,对拓展开放。 是什么 OCP(Open/Closed Principle)- 开闭原则。关于开发封闭原则,其核心的思想是:模块是可扩展的,而不可修改的。也就是说,对扩展是开放的…...
LVS面试题
LVS 原理 LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。 而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。 ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。 简述 LVS 三种工作模式,他们的区别 基于 NAT 的 LVS…...
uniapp发行web页面在老版本浏览器打开一片空白
uniapp发行的web页面(菜单->发行->网站-PC Web或手机H5),对于一些老的浏览器(或内核),打开一片空白; 而在新版本的浏览器中打开却正常。这是因为那些版本较低的浏览器不支持ES6的语法和新…...
数据结构—二叉树的模拟实现(c语言)
目录 一.前言 二.模拟实现链式结构的二叉树 2.1二叉树的底层结构 2.2通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 2.3二叉树的销毁 2.4二叉树查找值为x的节点 2.5二叉树节点个数 2.6二叉树叶子节点个数 2.7二叉树第k层节点个数 三.二叉树的遍历 3.1…...
COCO数据集下载
文章目录 COCO官网貌似全部失效百度网盘提取码一直是1152 COCO官网 官网下载 train2017.zip annotations_trainval2017.zip val2017.zip stuff_annotations_trainval2017.zip test2017.zip image_info_test2017.zip 貌似全部失效 百度网盘提取码一直是1152 stuff_annotatio…...
基于安卓android微信小程序的校园互助平台
项目介绍 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整…...
Spring整合Junit(4、5)
在之前的测试方法中,几乎都能看到以下的两行代码: ApplicationContext context new classPathXmlApplicationContext("xxx.xm"); XXXX XXX context.getBean(Xxxx.cTass); 这两行代码的作用是创建Spring容器,最终获取到对象,但是每…...
Linux 程序开发流程 / 基本开发工具 / Vim / GCC工具链 / Make 工具 / Makefile 模板
编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料(如 百问网的《嵌入式Linux应用开发完全手册》,在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO:开发板资料》或《2.2 全系列Linux教程…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
算法250609 高精度
加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...
AWS vs 阿里云:功能、服务与性能对比指南
在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...
