【问题标题】:syncing c# app and the device through serial port通过串口同步 c# 应用程序和设备
【发布时间】:2011-01-27 18:52:49
【问题描述】:

我开发了一个通过串口读取设备的 c# 应用程序。我实现了写入但不正确。现在我的场景是通过串口自动格式化设备。首先,当设备等待它时,我必须发送一个按键(当我在富文本框中看到“按任意键停止自动启动”时)。我怎样才能做到这一点?当我在richtextbox 中收到命中消息时,我通过写入串行端口(serialport1.write("xxxx\r\n")) 来实现这一点,但我认为让richtextbox 闲置不是一个好主意。你能推荐其他方法吗?

我的重要问题是让我们考虑处理命中消息并停止自动启动。现在我们必须向设备发送命令进行格式化。例如第一个是 fdisk 命令,第二个是 ext3format,第三个是 fatformat。当您将这些命令发送到设备时,这些命令需要一些时间。我怎样才能同步我的命令和设备,因为当我尝试这样做时,我遇到了一些问题。问题是我必须在发送第一个命令并且设备完成其工作后发送其他命令。我只能放松richtextbox,并根据我试图发送休闲命令的输出。你能建议任何其他方式吗?我是否必须停止richtextbox输出,有没有其他方法可以理解设备在发送命令后完成其工作?

谢谢你

【问题讨论】:

    标签: c# serial-port


    【解决方案1】:

    显然,您正在通过串行端口连接(telnet?)使用远程控制台进入设备,并且设备正在使用 linux。所以基本上你是在你的程序中模拟用户输入和输出。

    首先,您需要识别设备逐字节发送的输出。不要专注于“richtextbox”,您只是用它来显示您从设备获得的内容。

    您需要处理传入的串行数据并查找您识别的数据模式(例如,格式命令的结果代码、命令提示符再次可见时发送的文本等)。

    当它说“按任意键”时,您需要通过设备识别的串行端口发送一个字符。

    您还需要知道设备希望您使用哪种终端模式仿真(google this),因为这会影响您应该如何格式化发送到设备的代码以及您应该如何解释从设备接收到的字符。

    您想要做的很简单,基本上您正在为设备编写一个自动远程终端,但它确实需要您阅读一些内容,并停止关注文本框显示的内容并开始关注进入的数据字节并离开您的设备。

    【讨论】:

    • “并停止关注文本框显示的内容,开始关注进出设备的数据字节”......很好的建议!这是所有这些 RAD 工具的副作用,其中懒惰/弱的开发人员使用 UI 小部件作为正确数据结构的快速而讨厌的替代品!咆哮:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多