Синхронизация c # приложения и устройства через последовательный порт - PullRequest
1 голос
/ 27 января 2011

Я разработал приложение на c #, которое считывает устройство через последовательный порт. Я пишу, но не правильно. Теперь моя сценарий - это автоматическое форматирование устройства через последовательный порт. Прежде всего я должен отправить нажатие клавиши, когда устройство ждет его (когда я вижу в richtextbox «нажмите любую клавишу, чтобы остановить автозагрузку»). Как я могу это сделать? Я достигаю этого с помощью записи в последовательный порт (serialport1.write ("xxxx \ r \ n")), когда я получаю сообщение о попадании в richtextbox, но я думаю, что это не очень хорошая идея, чтобы переложить richtextbox. Можете ли вы предложить какой-либо другой способ?

Мой важный вопрос - давайте подумаем о том, как мы обработаем сообщение о попадании и прекратим автозагрузку. Теперь нужно отправить команды на устройство для форматирования. Например, первая команда fdisk, вторая - ext3format, а третья - fatformat. Эти команды требуют времени, когда вы отправляете их на устройство. Как я могу синхронизировать свои команды и устройства, потому что, когда я пытаюсь это сделать, у меня возникают некоторые проблемы. Проблема в том, что я должен отправить другую команду после того, как первая команда отправлена ​​и устройство завершило свою работу. Я могу только использовать richtextbox и, в соответствии с выводом, пытаюсь отправить следующие команды. Можете ли вы предложить другой способ? Нужно ли выводить выходные данные richtextbox, есть ли другой способ понять, что устройство завершает свою работу после отправки команд?

СПАСИБО

1 Ответ

2 голосов
/ 27 января 2011

Очевидно, вы используете удаленную консоль в устройстве через соединение через последовательный порт (telnet?), А устройство использует linux. так что в основном вы симулируете пользовательский ввод и вывод в вашей программе.

Прежде всего необходимо распознать вывод, который устройство отправляет побайтно. Не сосредотачивайтесь на «richtextbox», вы используете его только для отображения того, что вы получаете от устройства.

Вам необходимо обрабатывать последовательные данные по мере их поступления и искать шаблоны данных, которые вы распознаете (например, код результата из команды форматирования, текст, отправляемый при повторном отображении командной строки и т. Д.).

Когда он говорит «нажать любую клавишу», вам нужно послать символ через последовательный порт, который распознает устройство.

Вам также необходимо знать, какую эмуляцию режима терминала (google this) устройство ожидает от вас, поскольку это влияет на то, как вы должны форматировать коды, отправленные на устройство, и как вы должны интерпретировать символы, которые вы получаете от него.

То, что вы хотите сделать - это просто, в основном вы пишете автоматизированный удаленный терминал для устройства, но это требует некоторого чтения с вашей стороны, и вы перестаете фокусироваться на отображении текстового поля и начинаете фокусироваться на байтах данных, поступающих в и из вашего устройства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...