|
|
1
2
如果没有返回给发出命令的代理的信息(带有某种完成指示),就不可能知道命令是否结束。考虑一下*nix终端是如何工作的。nix终端完全是为同样的情况开发的——通过某种管道向另一台pc发出远程命令。在这种情况下,用户如何知道她可以键入另一个命令?在默认情况下,它会提示您发出另一个命令,让您知道它已经完成了。在edge情况下,它允许您从shell获得进程分叉,在shell中,您将得到作业已完成的指示。 似乎最简单的解决方案是按照“完成”的行来回音。 一些基本的伪码
|
|
|
2
2
如果要将命令发送到返回提示的shell程序,请在发送命令后说“$”,然后肯定可以等到看到“$”后再发送下一个命令。这是一个非常初级的协议,但应该工作得很好。 为了避免担心来自控制台的回显数据中存在“$”,请关闭控制台上的回显或将提示更改为不太可能出现在回显数据中的内容。 从技术上讲,您可以使用控制台输入缓冲区(typeahead),方法是发送一批长度小于输入缓冲区(您必须对此进行测试)的命令,如CMD1[CR]CMD2[CR]CMD3[CR],但在返回之前不要再发送任何命令。[CR]可能需要是[CR][LF],“$”实际上可能是“$”,具体取决于控制台的工作方式。 在xon/xoff打开的情况下,您可以从技术上检查xoff是否停止发送,然后在看到xon时继续发送,但如果要发送到命令控制台,我不建议这样做。您需要确保xon/xoff缓冲区与控制台输入缓冲区匹配,这确实会更复杂。 |
|
|
3
0
可以使用的一种方法是发出某种标记,例如eof byte。检查所有传入的字节,看它们是否是EOF字节。你也可以选择其他字节。 |
|
|
Paun Alin · 将快速串行数据写入文件(csv或txt) 8 年前 |
|
|
KSK · 如何在中检测通过串行端口或以太网连接的设备状态的变化。净额 8 年前 |
|
|
lemming · 没有这样的文件或目录c++boost库 8 年前 |
|
|
TheUberUser · JSSC DCE控制线 8 年前 |
|
|
Gordon · 在Linux中读取和写入同一文件描述符时出现问题 8 年前 |
|
|
antisycop · 串行HC-05不工作 8 年前 |
|
|
Andrey Tsarev · 从串行端口上的命令读取响应 8 年前 |
|
|
Farshad Z · 从USB GPS解码GPS坐标 8 年前 |
|
|
OlavT · 如何在Raspberry PI上设置串行端口的波特率? 8 年前 |