Member 12990959 Ответов: 2

Можем ли мы отправлять файлы в соответствии со временем через последовательный порт в C#?


Я создал простой графический интерфейс, который отправляет и получает файл через последовательный порт , я успешно отправляю и получаю файлы, но мне нужно, чтобы мы могли отправлять один и тот же файл через каждые 1 сек или 2 сек или любой интервал времени.



может ли кто-нибудь объяснить, как добавить отметку времени

Что я уже пробовал:

private void butSendFile_Click(object sender, EventArgs e)
       {
           if (serialPort1.IsOpen == false)
           {
               this.serialPort1.Open();
           }
           serialPort1.Write(System.IO.File.ReadAllText(this.txtfile.Text));
       }

       private void butSetFile_Click(object sender, EventArgs e)
       {
           this.openFileDialog1.ShowDialog();

           this.txtfile.Text = this.openFileDialog1.FileName;
       }

Это код, который я использовал для отправки файлов

User 59241

Это звучит как плохая идея. Зачем вам нужно потреблять ресурсы, отправляя один и тот же файл снова и снова?

Member 12990959

например мой текстовый файл с 1 строкой я должен отправить этот файл 10 раз с определенным периодом времени

User 59241

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

Member 12990959

хорошо тогда у меня есть 100 строк текстового файла каждая строка имеет 24 байта данных можем ли мы назначить время для каждой строки

если да то как

User 59241

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

2 Ответов

Рейтинг:
0

Ralf Meier

У вас действительно есть текстовый файл ? Или у вас есть данные внутри вашего приложения, которые сначала записываются в текстовый файл, а затем должны быть отправлены через ComPort ?

Если вы хотите иметь метку времени в каждой строке Вашего текстового файла у вас есть только один выбор :
- считайте свой текстовый файл в Stringarray
- добавьте к каждому элементу этого массива метку времени
- отправьте все строки с Компортом

Если вы хотите сделать это циклически, вы должны посмотреть (например, с помощью Google) после использования таймера.
Но вы должны знать следующее: Если ваш цикл слишком быстр, вы можете легко перегружать свой Компорт ...


Рейтинг:
0

Jochen Arndt

Вы можете создать таймер и отправить его изнутри Таймер.Прошедшее Событие (System.Таймеры)[^]. См. пример кода по приведенной выше ссылке.