1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
1 | |
График21.06.2011, 10:51. Показов 4005. Ответов 45
Метки нет (Все метки)
Добрый день ув. форумчане , собственно есть график , есть ком порт который принимает данные и выводит на график. Мне пришел 1 байт к примеру "1" записываем его как temp , потом пришло "2" записываем как temp2 , после того как мне пришёл 2 байт , он должен считать по формуле
"Z = (256 х temp2) + temp1" После этого выводить на график то что мы получили в Z. Подскажите как реализовать , на данный момент реализовано только получение пакетов , и вывод пакетов на график.
0
|
21.06.2011, 10:51 | |
Ответы с готовыми решениями:
45
Построить график функции y=x^2. График строится из отрезков и алгоритма Брезенхема График График График |
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
22.06.2011, 14:37 [ТС] | 21 |
Этот вариант не работает , я уже пробовал , там тоже самое Temp[0] и Temp[1] принимают одинаковые значения
0
|
22.06.2011, 14:46 | 22 |
После чтения размер буфера ком порта уменьшается? Входящие данные изменяются или постоянные? Возможно после считывания из буфера он не очищается. Через C# с комом просто не работал, но VISA ком очищает после считывания.
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
||||||||||||||||
22.06.2011, 14:53 [ТС] | 23 | |||||||||||||||
Temp[0]и Temp[1] принимают значения 0 , и так постоянно , вот лог (маленький отрывок)
а нет прошу прощения , это у меня ошибка была , в выводе лога , я там 2 раза Temp[0] вписал , но изменив на Temp[1] я всё равно получаю одни нули.
0
|
22.06.2011, 15:04 | 24 |
Можешь лог буфера в файл скинуть и выложить? Желательно каждое сообщение на новой строке.
Тогда будет видно что именно приходит. Пока сказать не могу в чем проблема. Добавлено через 2 минуты Хотя не нужно. На ком куча нулей приходит. Это что за устройство данные шлет?
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
22.06.2011, 15:05 [ТС] | 25 |
Вот , сделал так чтобы вы разобрались , значит первые 2 числа это Temp[0] и Temp[1]
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
22.06.2011, 15:10 [ТС] | 26 |
да , но устройство не должен слать нули ... он их вообще ну не как не должен слать , с устройством всё норм ибо я проверяю его через wterm , и там пакеты норм приходят без нулей.
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
||||||
22.06.2011, 15:28 [ТС] | 28 | |||||
"Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection."
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
22.06.2011, 16:05 [ТС] | 30 |
Спасибо большое , работает , но почему то пакеты он очччень долго принимает , и из-за этого график очень медленно строится , а мне надо в реальном времени , т.е. я вывожу пульс на график , а пакеты очень медленно принимаются , не могли бы вы подсказать что может мне помочь ?
0
|
22.06.2011, 16:23 | 31 |
попробуйте Portmon'ом или любым аналогичным сканером порта посмотреть на какие именно операции большие задержки происходят. По собственному опыту могу сказать, что на прием одного пакета с двумя сменами бита паритетности тратится порядка 40-60 мсек. Наиболее критические участки по времени это конфигурирование и открытие порта. Так же если возникают TimeOut ошибки. С физическим ком портом задержка составляет примерно до 500 мсек, а если использовать USB адаптер MOXA, то время считывания увеличивается в 1.7 раза, а задержка может составить более двух секунд. Честно говоря не зная программы сложно сказать где именно утечки возникают.
В качестве метода локализации места могу посоветовать вычислять время, необходимое на выполнение той или иной операции с портом и вести лог. Вообще странно что пульс строится нормально. А пульс строится по какому параметру?
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
||||||||||||||||
22.06.2011, 16:28 [ТС] | 32 | |||||||||||||||
Мои предположения что трабла здесь
Добавлено через 2 минуты Есть дивайс , который мериет пульс , вот он отсылает пакеты ком порту , он принимает и выводит на график , это всё должно быть в режиме реального времени , пульс строится по параметру
0
|
22.06.2011, 16:30 | 33 |
Точно не в этом месте, т.к. пока он данные не считает эта строка выполнятся не будет. А время таких преобразований в список, извлечение из него подсписка и добавление его в третий список занимает много времени при размерах исходного массива в несколько десятков тысяч значений. И то больше всего будет нагибать процессор. Даже копирование списков массивов размерами примерно 100 тыс х 254 занимает примерно 100 мсек на буковской корке 3ГГц.
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
22.06.2011, 16:32 [ТС] | 34 |
как не в этом месте ? построение графика идёт после того как он получает данные из ком порта , а так как у меня он тормозит с выводом пакетов , то и график тормозит
0
|
22.06.2011, 16:46 | 35 | |||||
Это место только добавляет в список считанные данные. Так что тормозит не здесь. А вот при вызове метода Read запросто может. Чтобы тормозило в этом месте скорости ком порта не хватит. Для интереса добавьте следующие строчки кода:
Добавлено через 7 минут При размере буфера 50 тыс и добавляемых 25 тыс с последующим удалением по два значения время обработки 40-50 мсек, а про буфере 10 тыс и 5 тыс добавляемых значений 2 мсек. Так что не в этом месте тормоза.
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
||||||
22.06.2011, 16:49 [ТС] | 36 | |||||
эм , dt выдаёт 0000000000
но прикол в следующим ...
2 раза повторяется ... так вот , если удалить один из них программа будет подвесать , но если их оставить то программа не будет виснуть НО значения Temp[0] и Temp[1] будут одинаковы - дилемма однако....
0
|
22.06.2011, 16:56 | 37 | |||||
Второй повтор удалить однозначно. ЗЫ. Выложите пожалуйста код с реализацией цикличного считывания пожалуйста. Проблема возможно кроется где-то там. Хотя отвечу я не раньше 9 по Москве. Через 5 минут домой ухожу.
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
|
22.06.2011, 17:00 [ТС] | 38 |
Temp.Count > 1 - это я экспериментировал , что с ==2 что с >1 одно и то же =\
Добавлено через 2 минуты график строится , и пакеты приходят , но дело в том что ждать долго нужно , нужно ускорить процесс ... 1 точка где то за 10-15 сек ставится... а 1 точка = 1 Result , 1 Result = Temp[0] and Temp[1]
0
|
22.06.2011, 17:01 | 39 |
Выложите пожалуйста код всей процедуры. Домой приеду посмотрю из за чего это может быть. И протестируйте каждый участок кода на время выполнения. Таким методом вы локализуете проблемный участок быстрее чем я до дома доберусь.
0
|
1 / 1 / 2
Регистрация: 01.06.2011
Сообщений: 161
|
||||||
22.06.2011, 17:05 [ТС] | 40 | |||||
эм каким образом я проверю время выполнения всего процесса ? я уверен на 80% что проблема заключается
0
|
22.06.2011, 17:05 | |
22.06.2011, 17:05 | |
Помогаю со студенческими работами здесь
40
График на C# График! График эллипса Построить график! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |