Рейтинг:
2
Jochen Arndt
Вы не получили файлы. Вы получаете данные. То, как эти данные должны быть интерпретированы, зависит от ваших спецификаций. Если данные представляют собой текстовые строки, их можно отобразить в текстовом поле или сохранить в файл. Но это какая-то постобработка и никак не связана с последовательной связью.
В этом нет никакого смысла:
txtReceive.Text = serialPort1.ReadExisting();
txtReceive.Clear();
Вы устанавливаете содержимое текстового поля и сразу же после этого очищаете его.
Member 12990959
хорошо я хочу отобразить текст в текстовом поле то что мы отправили через текстовый файл
txtReceive.Текст = serialPort1.ReadExisting();
txtReceive.Четкий();
этот код помогает мне отобразить код, который мы отправляем в виде сообщения, но я хочу отобразить данные в текстовом файле , я отправил текстовый файл без каких-либо проблем, но получить данные-это то, что мне нужно
Jochen Arndt
"этот код помогает мне отображать код, который мы посылаем в виде сообщения"
Но вы копируете полученный текст в текстовое поле и затем очищаете его. То есть у вас есть пустое текстовое поле и полученная строка теряется!
Чтобы записать полученный текст в текстовый файл, считайте его в переменную и просто запишите это:
строка получена = serialPort1. ReadExisting();
Системы.ИО.Файл.WriteAllText(имя файла, получено);
Рейтинг:
0
OriginalGriff
Когда данные поступают из последовательного порта, у них нет никаких указаний на то, откуда они пришли - это просто поток байтов - или в вашем случае поток символов, которые составляют строку.
Если вы хотите отправить текстовый файл, то вам нужно предоставить способ получающему программному обеспечению идентифицировать его как текстовый файл, а не сообщение - либо предоставив "заголовок", который не может быть набран, либо реализовав протокол между отправителем и получателем, который означает, что они всегда знают, что они получают.
Без этого - что требует изменений в программном обеспечении отправки, а также приема - вы не можете сказать, откуда пришли данные.
И кстати: последовательные порты не являются мгновенными. Передача данных занимает много времени, поэтому использование ReadExisting может не дать вам всего сообщения за один раз!
Member 12990959
спасибо за ответ
я фиксирую свой последовательный порт как петлю назад. таким образом , я получаю данные, которые отправляю в форме сообщения, но я также хочу отобразить данные в текстовом файле
OriginalGriff
Не имеет значения, как настроен ваш порт - если вы не посылаете информацию через последовательный порт, чтобы сообщить вашему программному обеспечению, что оно получает, оно не может сказать, где были получены данные; так же как вы не можете сказать, ввел ли я это непосредственно в текстовое поле в моем браузере или загрузил его из базы данных и отправил автоматически.
Если я префикс мое сообщение с какой-то индикатор:
*** Содержимое файла начинается так: "D:\Teset data\ShortTextFile.txt" * * * строка текста * * * содержимое файла заканчивается***
Вы даже не представляете, что "строка теста" пришла из файла или с моей клавиатуры!
Member 12990959
это. saveFileDialog1.Метод showdialog();
Системы.ИО.Файл.WriteAllText(this. saveFileDialog1.Именем, эта.txtData.Текст);
можем ли мы использовать этот код??
OriginalGriff
Я бы не стал.
Похоже, у вас есть два аккаунта, или ваш одноклассник работает над одним и тем же:
https://www.codeproject.com/Answers/1169672/How-do-I-sent-a-text-file-through-serial-port-in-C#answer1
Опять же, сделайте диалог локальной переменной - не включайте его в свой класс.
С любой формой вы должны создать экземпляр, когда хотите его показать, они не очень хорошо реагируют на "повторное использование" после закрытия.
Member 12990959
мы 2 друга работаем над одним и тем же проектом
OriginalGriff
Так поговори с ним!
Он должен дать какое-то указание, что это файл, а не прямой пользовательский ввод, и вы должны понять это указание.
Имейте в виду, что если вы начнете передавать двоичные файлы, а не только текст, вам нужно будет найти способ справиться и с этим - двоичные файлы могут содержать любые значения, поэтому вам нужно будет "упаковать" их так, чтобы они не конфликтовали с вашими конструкциями "типа данных".