2012-10-11 32 views
4

由于硬件/遗留系统在半双工链路(RS485)上工作,我们的嵌入式系统需要Telnet(串口)接口。是的,我知道 - 不,我们不能改变它,行业喜欢这样。Telnet over half-duplex comms链路协商参数

这样做的问题是,当我们向终端发送文本屏幕截图时,用户可以按下按钮并将数据发送回线路。

Telnet支持IAC-> GA(Go Ahead)命令向用户终端发送信号可以开始发送数据,但是没有任何RFC的信息我读过关于告诉用户终端到停止发送数据,所以我们可以刷新屏幕。

不幸的是,所有的RFC超出了1973年的假设,将使用SGA(Suppress Go Ahead)模式,因此很少提及。不幸的是,似乎没有一个RFC或其他文件实际上涵盖了整个协议。

有没有人有任何信息/链接更详细地记录telnet协议(或只是提前行为)?我知道有一些是可能是写在绿色条纹羊皮纸;)

重新编辑:为什么这个的“题外话”封编程问题? Telnet是OSI模型的第7层,你知道...

+0

我也想知道为什么这是封闭的。仅仅因为telnet和RS485并不是普遍的热门话题并不意味着这个问题是无效的或有用的。 –

+0

我怀疑人们看到“RS485”,并认为它是硬件或类似的东西。该死的孩子,下车我的草坪! –

回答

3

啊...... RS-485 ......我记得它! :-)

遗传算法的定义被破坏(见http://tools.ietf.org/html/rfc596),但对于串行线路实现应该没问题,因为没有数据包的分裂。

什么你问的是“反向突破”:

“反破发”是其通过半双工路径连接到 终端计算机可以重新获得的控制手段在之前放弃它之后进一步输出 的路径。

由于它非常自然,因此需要在任何时候都能够发送,所以在半双工连接上必须是“断开”(反向或以其他方式)带外。

编辑:新的信息作为聊天的结果:但是,如果你不希望被打断的实际传输(RFC393,反向突破的情况下“B”)侧面与去 - 除非实际发送(即使在没有数据发送时在该模式下RS-485不能接收),否则 - 前额令牌不将硬件切换到“发送”模式。偶尔损坏/截断传输是可容忍的 telnet程序正确地实现了这个相当不寻常的角落案例,然后带内发送此代码可能是可以接受的。

另一种我能想到的解决方法是破解客户端Telnet程序,即使没有别的东西要发送,它也会定期向服务器发送“超前”数据包。这将允许服务器执行更新并且做“返回”作为回报;它有点像“令牌环”。你甚至不需要延迟 - 当收到“继续”时,发送所有待处理的数据(可能不是),然后返回“继续”。

可能的技术方案:

既然你控制丝氨酸> IP设备为好,为什么不直接在服务器和设备之间的特殊协议?

  • 服务器发送STX data stream ETX

  • 客户端发送STX data stream ETX

  • 重复无延迟

如果任何一方在其数据缓冲区没有数据,那么它只是一个STX ETX对有效地告诉对方“继续前进”。如果没有来自内部250ms的另一侧,重新发送ETX

你甚至可以扩展这个有错误检测通过去STX data stream ETX CRC1 CRC2在检测到错误的情况下(而不是STX ...NAK答复,并造成重传输整个最后的数据包。

+0

有趣 - 但我们无法控制客户;我们是服务器,通过485链接通过IP编码器,然后由用户使用类似PuTTY的东西访问。 听起来像是可能会发生的事情是,当我们想要开始说话时,我们发送一个“反向中断”,然后是数据屏幕,然后是“前进” - 这听起来合理吗? –

+0

由于您仅限于终端支持和转换器可以支持的功能,因此这变得越来越复杂。你使用的是什么?485 <=> TCP设备?你在谈论什么回声和线路模式选项? –

+0

我们正在使用一种家居纺织品给remserial致敬。我们还没有谈判回声/线路模式。值得一提的另一个问题是,有些屏幕显示来自我们系统的实时数据,因此在某些情况下屏幕更新频率约为1Hz。导航使用箭头键,登录等按照通常的命令行风格完成。传统系统很有趣? :D –