问题标签 [flow-control]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
serial-port - JSSC 串口连接及其流控
我需要使用 Jssc 库向串行打印机发送长文本。几次之后,我得到一个完整的缓冲区错误,所以我认为这可能是流量控制设置,因为对于较小的传输,一切正常。打印机可以使用 XON/XOFF 流量控制配置或 CTS/RTS 硬件信号。
软件流量控制
我打开端口的 jssc 代码是这样的:
这仅适用于小文本输出,对于较长的输出,打印机会抛出一个完整的缓冲区错误。
硬件流量控制
我还尝试将打印机切换到 cts/rts 流控制并将我的代码更改为:
但没有任何改变。我仍然收到长输出的缓冲区错误。
如果我的打印机在填充其缓冲区之前正确发送 XOFF 字符或 CTS 信号,我会使用 COM 监视器检查它,它运行良好!
最后,我尝试手动管理输出流在 CTS 信号关闭时停止它(使用事件处理程序),这样一切都适用于长输出......但这不是流控制应该自动执行的操作吗?
手动硬件流量控制测试
这是我的手动硬件流控制测试。它使用 canSend 布尔变量来控制输出流。
似乎完全忽略了流控制设置。可以是什么?jssc错误是Windows驱动程序错误吗?
我还尝试使用 getFlowControlMode() 对其进行检查,并且我正确地获得了硬件流控制测试的值 3。
uart - 如果是二进制数据,如何发送 xon/xoff?
在软件数据流控制的情况下,我们使用 xon 和 xoff(0x11 和 0x13)标准字符来暂停和恢复传输。但是,如果我们要发送包含与 xon 和 xoff 的 ascii 值匹配的字符的二进制数据,我们应该使用什么字符集来发送 xon 或 xoff ?
python - 石头剪刀布流量控制
在下面的石头剪刀布程序中,我的循环有问题。使用设置长度的输入,每组游戏进行 N 次。对于结果为玩家 2,计算机 0 的情况;玩家 0,电脑 2;播放器 2,计算机 5;玩家 0,电脑 4;一个额外的游戏被添加到集合中。我已经多次更改功能,无法弄清楚出了什么问题。
感谢您的帮助
python - 带有标志的Python流控制?
匹配此表单中的文件。它总是以 InvNo 开头,~EOR~ 是记录结束。
它应该成为
其中 UR 是一个 URL。我想将 InvNo 作为第一个标签。** 现在是记录结束标记。这有效:
有没有更好、更 Pythonic 的方式?使用 recordbuffer 和 HASMEDIA 标志似乎是老生常谈了。有什么好的或更好的做法的例子或提示吗?
(另外,我愿意为这篇文章提供更中肯的标题)
node.js - How is one to do this in node?
I have a task, and if it's been done, already, I need to skip it, and if it hasn't, I need to perform it. The task is asynchonous. After this, I need to do the same check for another task, and possibly perform it...
In other words, the second task needs to be performed regardless of whether or not the first gets done, but if the first is to be done, the second cannot happen until after it finishes.
My code has repeated itself quite a bit here, which is generally a very bad thing. Is it unavoidable for Node's hipness? Is Node too hip to be DRY?
java - 一次运行两个线程,然后在它们之间进行通信
我正在尝试使用在同一台机器上进行通信的发送方和接收方来实现停止并等待 ARQ。我的问题是让两个线程同时运行,然后在两个线程之间进行通信(可能使用Thread.notify()
)。目前,当我在两个类中运行两个单独的主要方法时,我的代码可以工作,而没有实现流控制协议。但是,当我尝试从单独的 main 方法运行代码时,我只能先运行 Receiver 线程或 Sender 线程,这两种情况都会导致代码无限期地等待。我一般都是线程新手,所以非常感谢任何帮助!
发件人类:
接收器等级:
而主要的,它只是实例化并运行它们:
为大量代码道歉,只是试图给出一个完整的画面
.net - 显示 IRC 应用程序聊天消息的 WPF 解决方案
我正在创建我的第一个 WPF 应用程序,它是一个 IRC 聊天程序。由于我是 WPF 的新手,我真的不知道应该如何显示这些消息,因为它们可以包含粗体、斜体字甚至图像,或者退出消息具有其他颜色而不是简单消息。
我在网上搜索,我找到了一些解决方案。第一种解决方案是使用带有 FlowDocument 的 RichTextBox 或仅使用简单的 FlowDocument 并以某种方式破解它们的绑定系统以显示属性的值。关于“黑客”,我的意思是,这些控件没有绑定属性,因为它们不是 DependencyObjects。(我不确定这是正确的表达方式)。
在一个简单的 TextBlock 中,我无法显示消息,因为它显示了字符串的值。在一个简单的字符串中包含大量消息并向其添加新消息后,需要大量内存副本,因为无法修改字符串。此外,如果我使用 TextBlock,那么我可以用鼠标选择它的内容以从中复制吗?如果我使用只读文本框,那么我可以只对一个单词使用样式吗?
所以我准备使用 ListView 或可以显示 List(或任何集合)内容的东西,然后修改其模板以正确显示每条消息。(并以某种方式禁用 ListView 的选择)但我不知道应该使用什么控件来控制消息以显示它们的时尚并使其可选择。
使用列表来存储消息会很酷,因为在大约 1000 条消息之后,我想删除前 100 条消息以将它们保存在日志文件中。
所以我完全不知道如何解决这个问题。我希望有人会为这类问题提供适当的解决方案!
node.js - 敏捷如何在 nodejs 中工作?
我正在尝试了解如何使用灵活的 nodejs 进行流量控制,但我无法理解它的实际工作原理,并且确实没有文档可以解释它(我可以找到)
例如,从文档中获取以下代码:
我无法理解函数采用的回调参数,实际上作为回调传递的是什么?下一个功能是什么?如果是这样,那么为什么第二个(也是最后一个)函数也运行回调()?如果没有更多的功能可以运行,那么这有什么意义呢?谢谢!
我做了自己的小测试并取出回调:
而且代码的工作方式就像我传入了回调一样,所以现在我觉得我真的不明白回调参数的作用。
linux - Linux命令通过硬件流控制将二进制文件发送到串口?
我需要将二进制文件发送到 rs232 设备(打印机),它并不总是可以接受数据,因此它有 BUSY 输出信号,我连接到 CTS 引脚。
我尝试将它与 一起使用minicom
,并且硬件流控制工作得很好。但是我不能使用 minicom 发送原始文件,它工作错误我认为 minicom 不喜欢文件中的零。
另一方面,我尝试将cat file > /dev/ttyS5
, 与stty -F /dev/ttyS5 clocal
or一起使用stty -F /dev/ttyS5 crtscts
。这些都不起作用:硬件控制根本不起作用,数据传输只是停止(当TXD 上的空间状态卡住时,通常在字节中间!)并且在 BUSY 释放后永远不会继续。行为不取决于clocal
或crtscts
我使用。并且cat file > /dev/ttyS5
永远不要等待,即使在此命令之前BUSY 处于活动状态。
请注意,使用 minicom,我确保我有正确的连接,在内核和 RS232 PCI-E 板等中支持 RTS/CTS。
所以问题是,我如何使用硬件流控制从命令行进行正确的二进制文件传输?谢谢。
.net - 串行通信期间的流量控制
我设计了一个应用程序,它通过 USB-> 串行适配器(Windows 7 64bit,VS2013,针对.Net Framework 3.5 SP1)与我的开发盒上的外部设备进行通信。我还有一个带有 Windows XP SP3 和 .Net Framework 3.5 SP1 的本机串行端口的测试盒设置。外接设备在 19200,N,8,1 通信,支持硬件流控。我知道流量控制有效,因为当我在设备上启动报告时,将流量控制设置为无并手动创建一个复选框来打开和关闭 DTR,当 DTR 关闭时,设备将暂停。
但是,我无法通过我的 Windows 桌面应用程序使硬件流控制自动工作(Handshake.RequestToSend)。如果我将握手设置为无,则通信“通常”是成功的。有时在具有本机串行端口的较慢测试盒上,我相信当从设备请求大量数据时接收缓冲区会溢出,即使我设置了一个非常大的缓冲区并使 DataReceived 例程尽可能高效。我在驱动程序本身中尝试了各种流量控制设置,但没有任何效果。如果我在我的应用程序中将握手设置为 RequestToSend,通信似乎会停止,并且设备永远不会响应我的初始状态请求。我尝试了 True/False 与 DtrEnable 和 RtsEnable 的各种组合,但无济于事。我' 我在互联网上搜索了好几个小时,但到目前为止还没有看到任何有用的东西。这是我的一些代码:
Private Sub comVoteExt_DataReceived(ByVal sender As SerialPort, ByVal eArgs As SerialDataReceivedEventArgs) 处理 comVoteExt.DataReceived
结束子
有什么看起来可能导致我的握手问题吗?一旦端口打开以开始通信,是否有某种方法可以“唤醒”设备?我尝试在端口打开后将 DTREnable 设置为 true,但这似乎并不重要。我很困惑。