项目初始化

This commit is contained in:
2025-09-29 16:49:43 +08:00
commit f7131cf425
14 changed files with 240 additions and 0 deletions

32
api/modbus_api.py Normal file
View File

@@ -0,0 +1,32 @@
from fastapi import APIRouter
from api.schemas.modbus_schemas import ModbusIn, ModbusOut
from common import reponse_code as rc
from modbus.modbus_util import write_register, read_register_float_value
modbus = APIRouter()
@modbus.post("/write")
def write_float_value(modbusIn: ModbusIn):
if modbusIn.type == 'float':
value = float(modbusIn.value)
elif modbusIn.type == 'short':
value = int(modbusIn.value)
success, msg = write_register(host=modbusIn.host, port=modbusIn.port,
address=modbusIn.address, value=value)
if success:
return rc.response_success("修改成功")
else:
return rc.response_error(msg)
@modbus.post("/read")
def write_float_value(modbusOut: ModbusOut):
success, result_dict = read_register_float_value(host=modbusOut.host, port=modbusOut.port, address=modbusOut.address)
if success:
return rc.response_success(msg="读取成功", data=result_dict)
else:
return rc.response_error('读取失败')

View File

@@ -0,0 +1,16 @@
from pydantic import BaseModel, Field
from typing import Optional
class ModbusIn(BaseModel):
host: Optional[str] = Field(..., description="地址")
port: Optional[int] = Field(..., description="端口")
address: Optional[int] = Field(..., description="内存地址")
value: Optional[str] = Field(..., description="写入的值")
type: Optional[str] = Field(..., description="写入值的类型")
class ModbusOut(BaseModel):
host: Optional[str] = Field(..., description="地址")
port: Optional[int] = Field(..., description="端口")
address: Optional[list[int]] = Field(..., description="内存地址")