我开发了一个c#应用程序,它通过串口读取设备。我实现了写它但不正确。现在我的场景是通过串口自动格式化设备。首先,我必须在设备等待时发送按键(当我在richtextbox中看到“按任意键以停止自动引导”时)。我怎样才能做到这一点?当我在richtextbox中收到命中消息时,我通过写入串口(serialport1.write(“xxxx \ r \ n”))实现了这一点,但我认为放弃richtextbox并不是一个好主意。你能以其他方式提出建议吗?
我的重要问题是让我们考虑一下我们处理点击消息并停止自动拍摄。现在我们必须向设备发送命令以进行格式化。例如,第一个是fdisk命令,第二个是ext3format,第三个是fatformat。将这些命令发送到设备时,这些命令会花费时间。我如何同步我的命令和设备,因为当我尝试这样做时,我遇到了一些问题。问题是我必须在发送第一个命令并且设备完成其工作后发送其他命令。我只能休息richtextbox并根据输出我试图发送fallowing命令。你能用其他方式建议吗?我是否必须休息richtextbox输出,有没有其他方法可以理解设备在发送命令后完成其工作?
谢谢你
答案 0 :(得分:2)
显然,您通过串口连接(telnet?)在设备中使用远程控制台,设备正在使用linux。所以基本上你是在模拟程序中的用户输入和输出。
首先,您需要识别设备逐字节发送的输出。不要专注于“richtextbox”,你只是用它来显示你从设备上得到的东西。
您需要处理串行数据,并查找您识别的数据模式(例如,format命令中的结果代码,再次显示命令提示符时发送的文本等)。
当它显示“点击任意键”时,您需要通过设备识别的串口发送字符。
您还需要知道设备期望您使用哪种终端模式仿真(谷歌此),因为这会影响您应该如何格式化发送到设备的代码以及如何解释从中接收的字符。
你想要做的是直截了当的,基本上你正在为设备编写一个自动远程终端,但它确实需要你的一些阅读,并停止关注文本框显示的内容并开始关注进入的数据字节并且离开你的设备。