首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递串口实例

传递串口实例
EN

Software Engineering用户
提问于 2016-04-14 15:05:44
回答 1查看 1.5K关注 0票数 0

背景

我正在考虑设计一个(GoF/behavioral)命令模式接口。我可能决定把这件事叫做ICommand。我在想,我应该有一个包含一组命令接口对象的队列。我想使用队列,为这个队列中的每个项调用接口方法Execute,如下所示.

代码语言:javascript
复制
DequeuedItem.Execute(); // invoke the command-pattern

对于队列中的每一个项目,直到耗尽它。

Execute相关联的具体实现可能类似于..。

代码语言:javascript
复制
// concrete implementation of execute
public void Execute()
{
    mySerialPort.ReadExisting(); // read data from a serial port
}

据我所知,当涉及到真正拥有该端口的人时,使用COM端口可能会很棘手。

此外,我不只是在具体实现中声明SerialPort还有其他原因。比如..。很多命令都需要使用同一个端口(但不是同时使用)。因此,我需要将串口传递给具体的实现ICommand。这就引出了我的问题..。

问题

当我将一个开放的串口传递给另一个对象后,它还会继续工作吗?

即使它能起作用,我还需要意识到其他的影响吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-04-14 16:25:18

传递引用

是的,它仍然可以工作,因为您只是传递引用,因此它不会更改引用对象(也不会创建副本)。

对开启/关闭

的责任

有3种可能的情况:

只有一个命令使用串行端口。串口完全封装在命令中,并在命令开始时打开,最后关闭。

至少有两个命令使用串行端口,性能没有问题(您没有时间可确保)。每个命令都有一个串行端口的实例(指向同一个COM端口)。每个命令负责打开/关闭。由于命令是按顺序执行的(DequeuedItem),所以串行端口上没有冲突。

至少有两个命令使用串行端口,但是您不能为每个命令打开/关闭串行端口。串行端口必须实例化一个更高的级别,并分配给所有需要它的命令。命令不决定打开/关闭串行端口,它们假设接收到一个已经打开的端口,并且不应该更改它的状态。当需要串行端口的命令被添加到队列中时,可以打开串行端口。当队列完成执行最后一个要求串行端口的命令时,端口可能会关闭。

在这3种情况下,我认为没有不好的解决办法。每一种情况都是适当的(或不合适),取决于您的用法(稀疏、集中、准确、.)。你使用串口的方式对我来说很好。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/315741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档