![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| PashaSem |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 5.3.2006 Репутация: нет Всего: нет |
Всем Привет!
Как организовать лучше программу. Суть токова Имеем сточник данных через последовательный порт получаем и отсылаем данные . Необходимо чтоб определенное количество переменных постоянно обновляло свое значение. И по изминению их отображались на разных формах. В данный момент поток просто кидает все на форму. знаю что плохо! А как по другому? |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
На таймер повесить обновление. ИМХО чаще 100 мс смысла делать нет
|
|||
|
||||
| Retro |
|
|||
![]() Диалектик ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1934 Регистрация: 28.6.2005 Где: Киев Репутация: 9 Всего: 117 |
Я что-то не понял, проблема с обновлением или с временным хранением данных? Я так понял что из порта идут данные, некоторые из них подлежат обработке и только после этого их нужно отображать. Если второе то: Почему не записывать все в ArrayList? Ему все равно какой тип данных записывается. Потом по мере надобности извлекаешь то, что тебе нужно. |
|||
|
||||
| PashaSem |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 5.3.2006 Репутация: нет Всего: нет |
И стем и сдругим
Как лучше вытаскивать данные По таймеру или потоком , если потоком то по какому событию его запустиь ведь с формой он сязан не будет? И сохранять где, ведь туда будут не одна а несколько форм обращаться! Если таймером на форму все выводить то не красиво! и форма подвисает! |
|||
|
||||
| Retro |
|
|||
![]() Диалектик ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1934 Регистрация: 28.6.2005 Где: Киев Репутация: 9 Всего: 117 |
Что-то я недопонимаю. А чем ArrayList не подходит? И вообще порт работает запрос\ответ, либо таймер с определенным периодом запускаешь, либо вручную по надобности формируешь запрос. Лучше опиши назначение программы поподробнее. |
|||
|
||||
| PashaSem |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 5.3.2006 Репутация: нет Всего: нет |
Комуникация осуществляеться через последовательный порт но не на прямую а с помощью компонентов (библиотек).
Есть переменные в девайсе значение которых вытаскиваем и отображем на формах. Вот я и спрашивал как бы лучше организовать данную передачу А через ArrayList не пробовал ! Спасибо! |
|||
|
||||
| -Mikle- |
|
||||||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 17 Всего: 59 |
Сделай отдельный класс, в котором будет производиться чтение\сохранение данных из порта в отдельном потоке. В нем объяви синхронизированный Hashtable
В этот хэштэйбл грузи данные с порта, где ключом в нем будет идентификатор параметра (строковое или числовое без разницы). Далее объяви event, который будешь дергать после каждого обновления Hashtable. Можешь объявить еще пару методов для удобного получения данных с порта, типа
Все, больше ничего не надо пока что. Это будет инстанс данных, считанных с порта. А что касается по поводу доступа из любого учачтка кода, то тут два пути, взависимости от того, что тебе нужно для задачи. 1. Единый инстанс. То есть тот, который существует только один экземпляр для всех точек доступа. Это в том случае, когда твой источник данных (последовательный порт) только один. Организуетс сие обычно так:
2. Несколько инстансов, для разного набора данных. Это в случае, если источников данных может быть несколько, например COM1, COM2 и т.д.
Если есть еще вопросы по теме, то жду Добавлено @ 21:03 В первом случае обращаешся так: SerialPortProperties.Instance.ТвоиМетодыИСвойства(...); Во втором: SerialPortProperties.GetInstance("COM1").ТвоиМетодыИСвойства(...); SerialPortProperties.GetInstance("COM2").ТвоиМетодыИСвойства(...); -------------------- Если тебе плюют в спину, значит ты впереди... |
||||||||
|
|||||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |