37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
# midware/drivers/__init__.py
|
||
"""
|
||
总线驱动模块:统一管理所有总线驱动的导入和初始化
|
||
"""
|
||
from .base_driver import BaseBusDriver
|
||
from .bus_1553b import Bus1553BDriver
|
||
from .bus_can import BusCANDriver
|
||
from .bus_uart import BusUARTDriver
|
||
from .bus_ad import BusADDriver
|
||
from .bus_oc import BusOCDriver
|
||
from .bus_network import BusNetworkDriver
|
||
from loguru import logger
|
||
|
||
# 驱动映射表:协议名称 → 驱动类(与bus_udp_decoupler.py中的协议名对齐)
|
||
DRIVER_MAPPING = {
|
||
"1553B": Bus1553BDriver,
|
||
"CAN": BusCANDriver,
|
||
"UART": BusUARTDriver,
|
||
"AD": BusADDriver,
|
||
"OC": BusOCDriver,
|
||
"网络": BusNetworkDriver
|
||
}
|
||
|
||
def create_bus_driver(protocol: str, config: dict = None) -> BaseBusDriver:
|
||
"""
|
||
工厂函数:根据协议名称创建驱动实例
|
||
:param protocol: 协议名称(如"1553B")
|
||
:param config: 驱动配置
|
||
:return: 驱动实例
|
||
"""
|
||
if protocol not in DRIVER_MAPPING:
|
||
raise ValueError(f"未知协议 {protocol},无对应驱动")
|
||
|
||
driver_class = DRIVER_MAPPING[protocol]
|
||
driver = driver_class(config=config)
|
||
logger.info(f"创建 {protocol} 驱动实例成功:{driver.__class__.__name__}")
|
||
return driver |