
![]()


这段代码是一个函数 InitCommPortProto,它的作用是初始化通信端口的协议。 函数接收一个 BYTE 类型的参数 bPort,用来指定通信端口。 首先,它创建了一个 CCommIf 类的实例 pLocaCommIf,然后创建了一个 TCommIfPara 类的实例 pLocaCommIfPara。 接着,调用 LoadLocalCommPara 函数加载本地通信参数到 pLocaCommIfPara 对象中,并调用 pLocaCommIf 对象的 Init 函数来初始化通信接口。 然后,根据 bPort 的值进行条件判断。如果 bPort 等于 BOARD_COMM_TEST,则调用 ReadItemEx 函数读取参数值到 bProto 中。 如果 bPort 等于 BOARD_COMM_485,则同样调用 ReadItemEx 函数读取参数值到 bProto 中。 接下来,根据 bProto 的值,通过 switch 语句选择不同的协议。如果 bProto 等于 Proto00_Clou,则创建一个 CFaProto 类的实例,并将其转换为 CProto 类的指针赋给 pProto。 否则,默认情况下创建一个 CCegnCnEmsProto 类的实例,并将其转换为 CProto 类的指针赋给 pProto。 最后,如果 pProto 不为 nullptr,则将通信接口和协议进行绑定,即调用 AttachIf 函数将 pProto 和 pLocaCommIf 绑定,然后调用 AttachProto 函数将 pLocaCommIf 和 pProto 绑定。 最后,调用 pProto 的 Init 函数来初始化协议。 最终,函数返回 pProto。
组态无法收到回复帧且无法读取的原因:
0x2002参数被设置,其具体需要将0x2002重新写为0x00
1万+

被折叠的 条评论
为什么被折叠?



