![]() |
Питання трохи зачіпає тему ноутбуків, тому запитаю тут.
Є програма зкомпільована на Делфі 7 x32, в самій програмі організовано два потоки, де один потік через адаптер ЮСБ-РС232 працює з мікасом, а інший аналогічно з блоком керування ГБО. На старенькому ноуті з процесором Пентіум М 1,4ГГц і ОС ХР х32 програма працювала без будь яких торомзів. Зараз маю ноута з процесором AMD A4-9120 (2.2 - 2.5 ГГц) і ОС Він10 х64, то з одним потомком працює без проблем, а як включаю два, то проц починає грузити і сильно тормозить інтерфейс. Виникає питання, чи то проц такий не багатозадачний, чи ОС з приколами. |
Делфи 7 далеко не всегда с 64 дружит.
Попробуйте поставить ВМ 32 и на нее ХР. |
Цитата:
Зараз поставив на ноут Делфі 7, попробую програму запустити під Делфі, може на щось матюкнеться. |
віртуальна машина, віртуалбокс наприклад.
|
Цитата:
|
не буде. У ВМ своє обладнання для гостьової ОС.
|
З урахуванням того, що планується використовувати зовнішні приєднання, рекомендую, по-перше, спочатку обчитатись, чи вміє обрана ВМ передавати потрібні порти з хоста в гостьову ОС (VmWare вміє, MS HyperV не вміє, наприклад)
і, по-друге, таки з'ясувати, чи є відповідні драйвери на під'єднувані пристрої для гостьової ОС (в даному випадку, в межах обговорення - ХР), тому що там доведеться проводити стандартне встановлення додаткового обладнання, аналогічно "фізичній" машині (наскільки можна зрозуміти зі стартового посту - вони є) А, ну й про багатопоточність - чи дасть ВМ створити багатоядерний проц під поточною системою |
Цитата:
Прога скорее всего пишет/читает через стандартные переменные COM-портов. Да, в старом железе нужны были драйвера для ХР, чтобы она видела СОМ-порт в присоединенном адаптере ЮСБ. В новом варианте, насколько я понимаю, для гостевой ОС нужно всего навсего Цитата:
|
Проблема таки в Він10 х64. Вилізла на він10 ще одна проблема, не добре рахує контрольну суму одного слова відповіді від мікаса. Якщо перед командою обрахунку включено запис стрічки в текстовий файл, то рахує, якщо вимкнути, то вже ні. Коли в функцію обрахунку контрольної суми вставив вивід повідомлення з порахованою контрольною сумою і байтом контрольної суми, то кожен раз цифри відрізняються, варто було до повідомлення додати довжину слова відповіді, і вже обрахунки ведуться добре.
З флешки запускаю ту саму програму на ХР х32 і на Він7 х64, працює без проблем, на ноуті з Він10 х64, не рахує контрольну суму на одному зі слів відповіді на інших рахує, підключив на роботі до компа з Він10 х64 але вже з процесором і3, то там ще інша ситуація, конектиться, читає паспорт блока, але коли вже включається цикл щоби кожні 0,2 с опитувати мікаса, то схоже що недобре рахує часові інтервали, між запитами мало б бути 0,5с, а по логу майже по нулям, хоча світлодіоди на адаптері мигали з інтервалом приблизно 0,2с. 08:55:32:502 > #82#10#F1#21#E1#85 Запит на діагностику. 08:55:32:502 > #82#10#F1#21#E1#85 Запит на діагностику. 08:55:32:502 > #82#10#F1#21#E1#85 Запит на діагностику. 08:55:32:517 > #82#10#F1#21#E1#85 Запит на діагностику. Виникла ідея поставити ще він7 паралельно з він10, але згадав що на ноуті біос працює тільки GPT а для сімки треба MBR. Схоже що пора переходити на нові версії делфі і компілювати програми під х64. Пошуршав в неті інформацію про віртуальні машини, то в шарових версія підтримка зовнішніх портів недоступна. |
Цитата:
|
Цитата:
В новых версиях не будет обратной совместимости. |
Цитата:
|
З помилкою некоректного обрахунку контрольної суми розібрався, виявляється на він10 при вході у функцію змінні не обнулюються, замість нуля змінна мала певне постійне значення.
Причину тормозів також вичислив, це головне меню програми, так як на деяких меню можуть стояти галочки (використовуються в якості чекбоксу), типу знімати лог чи ні, то відповідно постійно в циклі іде їх опитування, і на цьому процесі іде завис, довелось наплодити купу змінних щоби продублювати. Компілював програму на Делфі 7, то тут програма працює без тормозів, тільки якщо вже включити запис лога в файл і з"єднання по двом компортам, то принаймі на початку після включення доругого з"єднання до хвилини часу є трохи завис, але логи зняти вдалося. Також скомпілював програму і під Делфі2010, то не досить того що виконуючий модуль в два рази більший, то пункти головного меню програми починають мигати вже після включення одного з"єднання. Щось в тій десятці не так як в людей. |
Цитата:
С таким подходом ничего удивительного что оно у Вас не работает. Удивительно только одно - как оно у Вас раньше работало, под ВинХР. |
Цитата:
|
Знайшов ще одну причину тормозів, можливо комусь пригодиться, це процедура Synchronize, прочитати про неї можна тут http://www.delphi-manual.ru/synchronize.php
Прикинув що після того як в мене більше не іде в потоці звернення до пунктів головного меню і потоки ніде не повинні пересікатись, я її відключив. Тепер та програма що скомпільована під Делфі7 на ОС Віндовс10 х64 працює так само як і на ВінХР, навіть можливо графіка і краще працює, коли схопити вікно мишкою і переміщувати по екрану при максимальній загрузці програми, то воно перемальовується без ривків. Програма що скомпільована під Делфі ХЕ10 при роботі по двом копмортам на ОС Віндовс10 ч64 працює, але по тому як малюються графіки на екрані видно що обмін йде в два рази повільніше і не рівномірно. |
| Текущее время: 22:16. Часовой пояс GMT +3. |
Перевод: zCarot Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.