Змінюй хід війни! Допомагай ЗСУ!

Нужна помощь в создании контролеров

🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #121
Сдались тебе эти меню, в WPF есть множество полезных вещей, которые крайне сложно реализовать без него.

Согласен, но там есть фундаментальные различия. Даже не берем GDI это или отрисовывается в железе

- Порог вхождения в разы больше. Просто наклепать контролов не получится никак :) Надо учить Xaml, MVVM и Data Binding.
- В RDP никакого хардварного ускорения нет и нагруженные WPF работают так себе

Для себя я решил, что простые аппликухи на WPF делать смысла нет никакого. Оно себя не отобъет по времени.

И бесит, что даже в 15 студии нет вообще ничего, чтобы понять, почему именно твой binding не работает. Сиди втыкай в xaml и понимай как хочешь.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #122

c# это прекрасный язык программирования. Я могу принять только претензии к .NET Framework, и то первой версии. Даже вторая уже небо и земля. А 4.6.2, на которой сейчас, супер пупер :)

Кстати, к шарпу как к языку приложил свою руку разраб Object Pascal ;)
Как и к TypeScript
У него не бывает плохого :)

Я про реальные проблемы, а не из серии "у меня все не работает, а виноват в этом Microsoft".

- на нежелезных портах у меня периодически бывали затыки в работе. Открыл порт, закрыл, открыл - не работает
- нельзя попросить принять столько то байт. Попросить вернее можно,но примет далеко не это количество
- также были проблемы дергать отдельно линии вроде dtr




Все равно не понял. Вы имеете ввиду WPF? Так причем тут c#?
Вообще, существуют доки о правильных интерфейсах для пользователей. Нет там листбоксов в меню.
Если сильно захотеть, в днлфях можно навесить обработчики и рисовать поверху, только зачем?

В смысле? :) Вот то, что я написал, не работает, как я хочу.
nrComm - все работает, как надо.

Нашел сейчас кусок кода, в который дергает DTR. Код работает, стало быть, порт открывается, а DTR дергается :)
Прочитать заданное количество байт наверно нельзя, но обычно это и не нужно. Можно extension method для этого сделать минут за 5.

nrComm, я так понимаю, платный? ИМХО, платные компоненты - вещь геморройная.

У меня были проблемы, точно помню :)
Больше всего со всякими USB свистками. nrComm с ними работал куда лучше.
Платный, да.

Именно сколько надо прочитать за 5 минут? Нуну, удачи.
Я когда пробовал - оно читало, сколько хотело )

Блин, ребята! Ну нас уносит в конкретизированные железячные дебри, опутанные маркетингом и взрывным ростом ИТ индустрии..
Кто из вас знает основы ИДЕ интерфейса? кто читал, что такое мастер, слейв и КС? Мало кто читал, в оригинале - вайтбуксах, а ещё меньше - кто помнит.
Потому как это время прошло, а модернизация проходила быстрее стандартизации. Кристаллы и блины росли быстрее проектов по их росту..
Тоже самое со многим другим. Вы представляете, сколько официальных модификаций стандартов, у изначально мертворожденного, в угоду продажам, GSM?!(в отличие от созданного лет на 50 ранее CDMA?)
И какой на сегодня последний? Я вот на сегодня не знаю, и, т.к. мне сейчас по работе не надо, в гугл не полезу!
Последний помню что-то типа 2.74! Или 2.24...

А я их почти все прошерстил, и чуть не здох! :D

То же и со всем остальным.
В компе остались всего несколько интерфейсов, которые будут жить ещё долго - среди них и СОМ. По ним передаются данные на миллиардах станков и устройств, работающих десятилетиями.
Из-за орбиты Юпитера и Плутона.

Интел как-то предпринял одну из своих идиотских попыток, которыми славится, выпустить материнки нового поколения без СОМ-порта, и... обосралсо ;)

Эт я просто к тому, что ещё со школы сталкивался с тем, что любая высокоуровневая хрень может делать именно то, что считает нужным(в исходниках Делфи и доках к Виндам было столько говна - мама не горюй! Даже если не упоминать оставшиеся в хелпе Вин2000 или даже ВинХР куски про то, что это OS/2! :D), (исключение - Оракл, но там все баги являются фичами, и прописаны в вайтпэйперc, которых никто никогда не читает ;)). А если посылаешь команду процу, и он её не выполняет - то он просто бракованный! Команда на АСМе- адрес - ответ. Все проверки. ИМХО.

Так что проблемы для серьёзного RAID при работах с портом - маловероятный факт. Если это проявляется при простейшем обмене через АСМ-функцию между 2-мя компами - я бы, например, написал в саппорт, как минимум.

Про ШАРПЫ - я давно не связывался, несколько лет после опять же, нескольколетнего опыта наступания на ржавые грабли, посему мог быть не объективен - если они кардинально изменились - только рад за всех и ещё попробую на вкус.
Предыдущее моё мнение это не отменяет. ;)
 
Останнє редагування:
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #123
Нашел сейчас кусок кода, в который дергает DTR. Код работает, стало быть, порт открывается, а DTR дергается :)
Прочитать заданное количество байт наверно нельзя, но обычно это и не нужно. Можно extension method для этого сделать минут за 5.

nrComm, я так понимаю, платный? ИМХО, платные компоненты - вещь геморройная.

Не понял, всё равно, что ты прочитать хочешь.
Там встроенный компорт. У него Уже есть событие получения в порт.
Логика работы такова - система выделяет рессурсы, в т.ч. и время.
Как она это делает - зависит от приоритета и от фазы луны.
Фактически это выглядит как пачки прокруток потока, то есть, если я пихаю на отрисовку в олну и ту же линию данные, непрерывно валящиеся в порт и данные из константы (одно и то же число) - я буду видеть на отрисовке импульсы. N раз будет подряд отрисовано с порта, а M раз - прямая константы.
Получается, что при событии RX - в буфере лежит неведомое число байт, так как мы не в реалтайме и когда байты были приняты - не факт, что поток обрабатывался! вот в чем первопричина.
И по этому надо всегда вычитывать ВСЕ данные в пользовательский буфер. А потом ужже - разгребать их, хочешь - через счетчик, хочешь - как я, по маркерам конца-начала и с валидацией по длине, или/и/может быть - паритету, crc, e.t.c...
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #124
Не понял, всё равно, что ты прочитать хочешь.
Я ничего не хочу прочитать.
RainBoy указал на то, что стандартный SerialPort не позволяет прочитать больше байт, чем есть на данный момент в буфере порта за один вызов.

Логика работы такова - система выделяет рессурсы, в т.ч. и время.
Как она это делает - зависит от приоритета и от фазы луны.
Фактически это выглядит как пачки прокруток потока, то есть, если я пихаю на отрисовку в олну и ту же линию данные, непрерывно валящиеся в порт и данные из константы (одно и то же число) - я буду видеть на отрисовке импульсы. N раз будет подряд отрисовано с порта, а M раз - прямая константы.
Получается, что при событии RX - в буфере лежит неведомое число байт, так как мы не в реалтайме и когда байты были приняты - не факт, что поток обрабатывался! вот в чем первопричина.
И по этому надо всегда вычитывать ВСЕ данные в пользовательский буфер. А потом ужже - разгребать их, хочешь - через счетчик, хочешь - как я, по маркерам конца-начала и с валидацией по длине, или/и/может быть - паритету, crc, e.t.c...
Я не до конца понял, что именно ты делаешь.
Ты хочешь отрисовать сигнал по кадрам, или в виде движущейся линии?
Думаю, проблема не в realtime/не-realtime, а в правильности синхронизации потоков.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #125
Я ничего не хочу прочитать.
RainBoy указал на то, что стандартный SerialPort не позволяет прочитать больше байт, чем есть на данный момент в буфере порта за один вызов..
Что логично..
Если их нет - где он их возьмет?

Я не до конца понял, что именно ты делаешь.
Ты хочешь отрисовать сигнал по кадрам, или в виде движущейся линии?
Думаю, проблема не в realtime/не-realtime, а в правильности синхронизации потоков.
Я хочу отрисовать осциллоскоп. В простейшем виде - из потока байтов, с размахом 0-255, без всякихслужебных символов.
Скорость отрисовки довольно тухлая..
Если совать быстрее - не успевает рисовать, я отключаю RX, а кривая меланхолично рисуется, пока не закончит выгребать буфер.
Рисует медленнее, чем принимает.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #126
Что логично..
Если их нет - где он их возьмет?
Подождет, пока появятся :)

Я хочу отрисовать осциллоскоп. В простейшем виде - из потока байтов, с размахом 0-255, без всякихслужебных символов.
Скорость отрисовки довольно тухлая..
Т.е. по кадрам? Можно же в реальном времени отрисовывать движущуюся осциллограмму, что несколько сложнее.

Скорость отрисовки довольно тухлая..
Если совать быстрее - не успевает рисовать, я отключаю RX, а кривая меланхолично рисуется, пока не закончит выгребать буфер.
Рисует медленнее, чем принимает.
А сколько кадров в секунду успевает отрисовать?
GDI+? Можно попробовать DirectX.
Можно обрабатывать данные перед выводом на экран.

И чаще всего нужно отрисовывать только последний доступный кадр по принципу "кто не успел, тот опоздал".

Еще можно немного повысить скорость отрисовки используя трансформации вместо ручного расчета координат перед выводом на контекст.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #127
Подождет, пока появятся :)


Т.е. по кадрам? Можно же в реальном времени отрисовывать движущуюся осциллограмму, что несколько сложнее.


А сколько кадров в секунду успевает отрисовать?
GDI+? Можно попробовать DirectX.
Можно обрабатывать данные перед выводом на экран.

И чаще всего нужно отрисовывать только последний доступный кадр по принципу "кто не успел, тот опоздал".

Еще можно немного повысить скорость отрисовки используя трансформации вместо ручного расчета координат перед выводом на контекст.
Именно непрерывную кривую я и рисую.
Процесс достаточно медленный, и покадрово я не вывожу, драв лайн при каждом получении байта. Вернее.
Как вернусь за комп - могу измерить пропускную способность, но по памяти - там не много, 30 самплов можно вывести без тормозов в секунду.
50 - уже начинаются проблемы.

Можно, конечно, попробовать выводить не при приеме из буфера порта во время вычитки, а из пользовательского буфера потом уже. Ещё не пробовал так.
P.s. зачем ручное преобразование? Я рассмотрел простейший случай - координата Y это и есть пртнятое значение, которое просто отдается дравЛине().

P.P.S. В осциллоскопе выводят не последний фрейм, а тот, который начинается с компаратора синхронизации (если развертка "авто -" то с нуля согласно заданному фронту).
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #128
Именно непрерывную кривую я и рисую.
Процесс достаточно медленный, и покадрово я не вывожу, драв лайн при каждом получении байта. Вернее.
Как вернусь за комп - могу измерить пропускную способность, но по памяти - там не много, 30 самплов можно вывести без тормозов в секунду.
50 - уже начинаются проблемы.
30 обновлений картинки в секунду? В принципе, зачем тебе чаще обновлять?
Просто раздели обновление экрана и чтение данных, пусть приходят хоть миллион семплов в секунду, тебе же не обязательно рисовать каждый отдельно.
Еще имеет смысл не перерисовывать картинку каждый раз, а дорисовывать новые семплы.
А лучше посмотри профайлером, какие операции занимают много времени и оптимизируй. Но отрисовка в любом случае не должна быть жестко привязана к получению данных.

P.s. зачем ручное преобразование? Я рассмотрел простейший случай - координата Y это и есть пртнятое значение, которое просто отдается дравЛине().
Скейлинг.
Ну и цифровой фильтр может быть полезен.

P.P.S. В осциллоскопе выводят не последний фрейм, а тот, который начинается с компаратора синхронизации (если развертка "авто -" то с нуля согласно заданному фронту).
Как ты представляешь себе софтовую синхронизацию при семплрейте в сотни миллионов или миллиардах семплов в секунду :) ?
Там проц читает из буфера готовый фрейм, а триггер реализован на обычном компараторе, выход которого уходит в FPGA.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #129
А не занимаетесь ли вы х.йней, прикручивая реальный процесс к нерилтаймовой ОС?
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #130
Надо обязательно разделить по тредам чтение/обработку данных и отображение
Отображать более 20-30 кадров в секунду смысла нет никакого

А не занимаетесь ли вы х.йней, прикручивая реальный процесс к нерилтаймовой ОС?

Причем тут реалтаймовость? Если данные по USB то никакой Real Time не нужен. Нужно правильное USB устройство, которое точно считывает и выдает правильный USB Data Stream
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #131
Причем тут реалтаймовость? Если данные по USB то никакой Real Time не нужен. Нужно правильное USB устройство, которое точно считывает и выдает правильный USB Data Stream
Ойтавишо :)
Допустим,имеется самое правильное USB устроство,которое точно считало и выдало писюку правильный USB Data Stream. А у винды запущено 50-60-70 тредов с приоритетами друг друга выше. И что делать бедному стриму?
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #132
Ойтавишо :)
Допустим,имеется самое правильное USB устроство,которое точно считало и выдало писюку правильный USB Data Stream. А у винды запущено 50-60-70 тредов с приоритетами друг друга выше. И что делать бедному стриму?

В смысле, что делать? Принимать по мере возможности и обрабатывать.
Мы это постоянно на работе делаем, оставьте ваше "тавищо" другим товарищам, хорошо?

Realtime железка должна быть до USB
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #133
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #134
Ойтавишо
Допустим,имеется самое правильное USB устроство,которое точно считало и выдало писюку правильный USB Data Stream. А у винды запущено 50-60-70 тредов с приоритетами друг друга выше. И что делать бедному стриму?
Какая жуть! А как же под Виндой видео смотрится и игры играются?
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #135
Нормально смотрятся и нормально играются,ведь обсуждался компорт,не так ли?
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #136
Совершенно верно,и выдавать информацию уже готовую к употреблению.

Ну так я об этолм и говорю.
А Винда уже пост процессинг.
Ее можно загнать в почти realtime, но сильно геморно.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #137
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #138
Каких кадров :рл: дравов! 30 грёбаных отрезков кривой. НЕ кадров. В экране640 и более точек. 30 байт за секунду он успеыает ДОБАВИТЬ к кривой.
Не, я канеш, подумаю над тем, что это угрёбище отрисовываеь его как кадр, может в этом проблема
.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #139
Не должно быть так. Сомневаюсь, что тормозит именно отрисовка.
Лучше проверь в профайлере.
 
  • 🟡 23:44 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #140
Т З в прямой эфир нет ,это закрытый проект ,в личку пожайлуста
 
Назад
Зверху Знизу