from pydantic import BaseModel, Field from typing import Optional, List, Dict class PLNKRequest(BaseModel): """PLNK协议请求模型""" data: str = Field(..., description="十六进制数据报文") timeout: Optional[int] = Field(30, description="响应超时时间(秒)", ge=1) wait_response: Optional[bool] = Field(True, description="是否等待响应") class PLNKResponse(BaseModel): """PLNK协议响应模型""" success: bool = Field(..., description="执行是否成功") sent_data: str = Field(..., description="发送的数据") received_data: str = Field(..., description="接收的数据") parsed_data: Optional[Dict] = Field(None, description="解析后的数据") execution_time: float = Field(..., description="执行时间(秒)") class TCPConnectionInfo(BaseModel): """TCP连接信息模型""" host: str = Field(..., description="主机地址") port: int = Field(..., description="端口号", ge=1, le=65535) timeout: int = Field(30, description="连接超时时间(秒)") keep_alive: bool = Field(True, description="保持连接") class PLNKConnectionInfo(BaseModel): """PLNK连接信息模型""" connection_type: str = Field(..., description="连接类型: tcp/serial") tcp_info: Optional[TCPConnectionInfo] = Field(None, description="TCP连接信息") serial_info: Optional[dict] = Field(None, description="串口连接信息")