Skip to content

TimeTrain

github.com/simonvetter/modbus client.go源码分析

github.com/simonvetter/modbus v1.6.0 client.go 这是一个Modbus客户端程序,用于与Modbus设备通信。 1type ModbusClient struct { 2 conf *ClientConfiguration 3 trans transport 4 isConnected bool 5 connectedAt time.Time 6 timeout time.Duration 7 logger *logger 8} 定义了一个ModbusClient结构体,该结构体保存与Modbus客户端相关的状态和配置信息。它包括以下字段: conf: 客户端的配置信息。 trans: 用于与Modbus设备通信的传输层实例。 isConnected: 一个布尔值, Read more

github.com/simonvetter/modbus rtu_transport.go源码分析

github.com/simonvetter/modbus v1.6.0 rtu_transport.go 这个代码是实现Modbus RTU(远程终端单元)传输协议的一部分。Modbus RTU是一个串行传输协议,用于连接工业电子设备。以下是对这段代码的逐行分析: 导入包: 1import ( 2 "fmt" 3 "io" 4 "log" 5 "time" 6) 这些是标准库中的包,用于格式化输出、I/O操作、日志记录和时间操作。 常量定义: 1const ( 2 maxRTUFrameLength int = 256 3) 定义了一个常量, Read more

github.com/simonvetter/modbus server.go源码分析

github.com/simonvetter/modbus v1.6.0 server.go Modbus 服务器库代码片段,主要实现了 Modbus 通讯协议的服务器端功能。 这个版本中未实现 rtuovertcp 协议 以下是代码的主要内容和功能的中文翻译: 常量和结构: modbusRoleOID: Modbus 角色的 PEM OID。 ServerConfiguration: 服务器配置对象,包括监听地址、超时、客户端连接的最大数量、TLS 证书等。 CoilsRequest, DiscreteInputsRequest, HoldingRegistersRequest, InputRegistersRequest: 这些结构描述了对 Modbus 服务器的不同类型的请求。 RequestHandler: 接口定义了如何处理上 Read more

github.com/simonvetter/modbus tcp_transport.go源码分析

函数:newTCPTransport 1func newTCPTransport(socket net.Conn, timeout time.Duration, customLogger *log.Logger) (tt *tcpTransport) { 2 tt = &tcpTransport{ 3 socket: socket, 4 timeout: timeout, 5 logger: newLogger(fmt.Sprintf("tcp-transport(%s)", socket.RemoteAddr()), customLogger), 6 } 7 return 8} 这是一个构造函数,用于创建新的 tcpTransport 实例。 将给定的 socket 和 timeout 分配给新实例的相应字段。 使用 newLogger 函数创建一个新的日志记录器,其中日志的前缀包含 TCP 套接字的远程地址。 返回新创建的 tcpTransport 实例。 函数:Close 1func (tt *tcpTransport) Close() (err error) { 2 err = Read more

kVA(千伏安)与 kW(千瓦)

描述功率时使用kVA(千伏安)而不是kW(千瓦)的原因与交流电系统中的功率因数有关。在交流电系统中,功率有三个组成部分: 有功功率 (P):以W(瓦)或kW(千瓦)为单位,表示真实完成工作的功率。它与电器设备的实际能耗或发电机的实际输出功率有关。 无功功率 (Q):以VAR(伏安无功)或kVAR(千伏安无功 Read more

半精度浮点数(也称为16位浮点数)转换的步骤

半精度浮点数(也称为16位浮点数)转换的步骤: 符号位 (Sign bit): 由于我们的数字是负数,所以符号位为1。 指数 (Exponent): 半精度浮点数的偏移量为15。我们的数字是10,所以我们只需使用整数部分来表示。这意味着我们使用了 (2^3 = 8) 作为基数,而实际的指数为3。但由于偏移量是15,所以我们需要添加这个偏移量,得到 (3 + 15 = 18)。 将 Read more

多大的充电宝可以带上飞机

带充电宝上飞机的标准通常是根据充电宝的Wh(瓦时)来判断的,而不是mAh。要计算充电宝的Wh,可以使用以下公式: [ \text{Wh} = \text{mAh} \times \text{V} \div 1000 ] 按照国际航空运输协会(IATA)的规定,充电宝或移动电源的额定能量通常必须小于或等于100Wh,才能不经过航空公司审批而直接携带上飞机。如果额定能量在100Wh和160W Read more

安时(Ah)是什么

当我们讨论电池容量时,通常使用“安时”(Ah)这个单位,因为它为我们提供了一个直观的指标,表示电池在特定电流下可以持续工作的时间。以下是使用Ah作为电池容量单位的原因: 直观性:Ah是一个直接衡量电池存储能量的单位。例如,一个10Ah的电池理论上可以提供1安培的电流持续10小时,或者2安培的电流持续5 Read more

jsep

JavaScript Session Establishment Protocol JSEP是什么? JSEP的全称是 JavaScript Session Establishment Protocol 一个IETF草案 https://tools.ietf.org/id/draft-ietf-rtcweb-jsep-21.html 定义了一个Javascript应用如何通过W3C WebRTC 中的 RTCPeerConnection API来进行通话 +-----------+ +-----------+ | Web App |<--- App-Specific Signaling -->| Web App | +-----------+ +-----------+ ^ ^ | SDP | SDP V V +-----------+ +-----------+ | JSEP |<----------- Media ------------>| JSEP | | Impl. | | Impl. | +-----------+ +-----------+ 定义了哪些行为: ICE过程 确定视频分辨率 createOffer/createAnsw Read more

webrtc 安全机制

WebRTC使用了两个已经存在的协议 DTLS 和 SRTP DTLS 类似 TLS,区别是DTLS是基于UDP的而不是基于TCP,因此DTLS协议需要自己处理可靠性问题 首先会用DTLS来握手,DTLS消息收发基于ICE建立的连接基础之上。 DTLS协议一端做为client,另一端做为server。 SRTP 协议的设计只是为了收发媒体数据 Read more