Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Программа в ХР глючит - в W98 нормально работает   Найти похожие ветки 

 
Сергей_1   (2005-12-30 22:50) [0]

Всех с Наступающим!
Столкнулся с такой проблемой на WinXP:
Управляю внешним устройством через СОМ порт. С эмулировал на нём SPI. Соответственно, аппаратный UART не использую. Управляю ногами СОМ порта как на LPT (вкл./выкл.). Передаю данные пакетами по 256 байт. Из них 50% внеш. устройство принимает с ошибками. На том же компе, но под WIN98 - ниодной! ошибки. Железо, точно, исправно.
Что делал:
Приоритетами игрался. От мин. к реалтайм.
В свойствах exe файла включал совместимость с другими ОС.
Результат - ничего не помогло.
Заметил, после перезагрузки XP, первые несколько минут, работает нормально. Потом - полный финиш...

Посоветуйте, на что обратить внимание, в каком месте искать.

P.S. под WIN98 работает в 2 раза! быстрее, чем под XP...

С уважением, Сергей.


 
Германн ©   (2005-12-31 02:02) [1]


> Сергей_1   (30.12.05 22:50)  
>
> Всех с Наступающим!
> Столкнулся с такой проблемой на WinXP:
> Управляю внешним устройством через СОМ порт. С эмулировал
> на нём SPI. Соответственно, аппаратный UART не использую.
>  Управляю ногами СОМ порта как на LPT (вкл./выкл.). Передаю
> данные пакетами по 256 байт. Из них 50% внеш. устройство
> принимает с ошибками. На том же компе, но под WIN98 - ниодной!
>  ошибки. Железо, точно, исправно.
> Что делал:
> Приоритетами игрался. От мин. к реалтайм.
> В свойствах exe файла включал совместимость с другими ОС.
>
> Результат - ничего не помогло.
> Заметил, после перезагрузки XP, первые несколько минут,
> работает нормально. Потом - полный финиш...
>
> Посоветуйте, на что обратить внимание, в каком месте искать.
>
>
> P.S. под WIN98 работает в 2 раза! быстрее, чем под XP...
>
>
> С уважением, Сергей.


Ох, Сергей. Гонишь ты пургу!
>  Соответственно, аппаратный UART не использую.
Пардон, а это как можно изменить состояние вывода, аппаратно привязанного к выводу микросхемы UART?
> Из них 50% внеш. устройство принимает с ошибками.
Имхо - это всё мусор. Причём все 100%.

А в целом - в линейке NT никто и никогда не даст тебе прямого доступа к аппаратным ресурсам компьютера. Только через драйвер!


 
tesseract ©   (2005-12-31 08:44) [2]


>С эмулировал на нём SPI. Соответственно, аппаратный UART не использую. >Управляю ногами СОМ порта как на LPT (вкл./выкл.). Передаю данные
>пакетами по 256 байт. Из них 50% внеш. устройство принимает с ошибками.> На том же компе, но под WIN98 - ниодной! ошибки. Железо, точно,
> исправно.


Ты или гений или гонишь. Код приведи.

А что 50 р. На драйвер порта Max232cpe жалко?
На колупаться с SPI через COM - это художественный героизм.  Обычно такое на LPT вешают.


 
Сергей_1   (2005-12-31 11:04) [3]

Пардон, а это как можно изменить состояние вывода, аппаратно привязанного к выводу микросхемы UART?
СОМ порт - обычный порт, имеющий свой адрес, СОМ1-СОМ4: 3f8h, 2f8h, 3e8h, 2e8h соответственно.
Регистр MCR (Base_Addr+4) управление выходными сигналами:
MCR.1 - управление выходом RTS (1 - активен, -12 В; 0 - пассивен, +12 В);
MCR.0 - управление выходом DTR
Есть еще регистр LCR (Base_Addr+3) - в обычной литературе недокументирован. Там битом LCR.6 можно управлять сигналом RX.
Регистр MSR (Base_Addr+6) управление (правильнее сказать считывание) входных сигналов:
MSR.7 - DCD
MSR.6 - RI
MSR.5 - DSR
MSR.4 - CTS
Вот ими я и пользуюсь. Устанавливая/сбрасывая биты, а также считывая их.

А что 50 р. На драйвер порта Max232cpe жалко?
Да нет. Он стоит.

На колупаться с SPI через COM - это художественный героизм.  Обычно такое на LPT вешают.
У меня немного хитрее сделано. Я определяю, моё, подключенное устройство и, соответственно, использую аппаратный UART или проблемный мой SPI.

Попробую немного изменить мой вопрос:
Как в Delphi запретить распределения ресурсов (прерывания - хотя это не корректно обозвал) в определенном участке кода?

Всех, еще раз, с Наступающим! Пошел шампанское открывать - репетировать...


 
GuAV ©   (2005-12-31 12:01) [4]


> СОМ порт - обычный порт, имеющий свой адрес,
> СОМ1-СОМ4: 3f8h, 2f8h, 3e8h, 2e8h соответственно.

Это устройство, имеющее путь \\.\COM1 , \\.\COM2 ...


> MCR.1 - управление выходом RTS (1 - активен, -12 В; 0
>- пассивен, +12 В);
> MCR.0 - управление выходом DTR

EscapeCommFunction


>MSR.7 - DCD
>MSR.6 - RI
>MSR.5 - DSR
> MSR.4 - CTS

WaitCommEvent - ожидание изменения
GetCommModemStatus - считывание состояния


 
Германн ©   (2006-01-01 04:48) [5]


> Сергей_1   (31.12.05 11:04) [3]
>
> Пардон, а это как можно изменить состояние вывода, аппаратно
> привязанного к выводу микросхемы UART?
> СОМ порт - обычный порт, имеющий свой адрес, СОМ1-СОМ4:
> 3f8h, 2f8h, 3e8h, 2e8h соответственно.
> Регистр MCR (Base_Addr+4) управление выходными сигналами:
>
> MCR.1 - управление выходом RTS (1 - активен, -12 В; 0 -
> пассивен, +12 В);
> MCR.0 - управление выходом DTR
> Есть еще регистр LCR (Base_Addr+3) - в обычной литературе
> недокументирован. Там битом LCR.6 можно управлять сигналом
> RX.
> Регистр MSR (Base_Addr+6) управление (правильнее сказать
> считывание) входных сигналов:
> MSR.7 - DCD
> MSR.6 - RI
> MSR.5 - DSR
> MSR.4 - CTS
> Вот ими я и пользуюсь. Устанавливая/сбрасывая биты, а также
> считывая их.

Вот ими ты и пользуешься управляя микросхемой UART.


> У меня немного хитрее сделано. Я определяю, моё, подключенное
> устройство и, соответственно, использую аппаратный UART
> или проблемный мой SPI.

Ппппереведи.


> Попробую немного изменить мой вопрос:
> Как в Delphi запретить распределения ресурсов (прерывания
> - хотя это не корректно обозвал) в определенном участке
> кода?

Лучше б не изменял. :( Имхо, и так был тёмеый лес, а после изменения, так вообще - дурелом.

И ещё раз - А в целом - в линейке NT никто и никогда не даст тебе прямого доступа к аппаратным ресурсам компьютера. Только через драйвер!

С Новым Годом!


 
Сергей_1   (2006-01-01 10:28) [6]

Не ответить не мог. :)))
2 Германн
Что Вы заладили про линейку NT? Причем тут драйвера? Драйвера нужны, как GuAV написал, если обращаться с устройству через \\.\COM1 , \\.\COM2. Минуя их можно всегда, зная их адреса, (для Германна еще раз, ВСЕГДА!) обращатся к железу напрямую через порты ввода/вывода, но, только, если программе передано управление. А этим управление занимается ОС. В данном случае XP. И некоторые API функции можно тоже считать некими драйверами между программой и железом.
С этим, Вы, согласны?

Всех с Новым Годом!


 
Германн ©   (2006-01-02 02:48) [7]


> С этим, Вы, согласны?

С чем? С GuAV ©   (31.12.05 12:01) [4] - согласен без вопросов.

А с этим:

>  Минуя их можно всегда, зная их адреса, (для Германна еще
> раз, ВСЕГДА!) обращатся к железу напрямую через порты ввода/вывода,
>  но, только, если программе передано управление.

не согласен. Имхо - бред. Но именно в линейке NT! В которой доступ к аппаратным ресурсам компьютера, например обращение к порту ввода/вывода, дозволено только из нулевого кольца. А пользовательская программа работает в 3-тьем кольце. И там адреса портов ввода/вывода не имеют никакого смысла. Какое-бы "управление" не было бы передано программе. Конечно есть сторонние библиотеки/компоненты, которые позволяют программе получить доступ к аппаратным ресурсам, а-ля как в ДОС/Win9x. Но это только значит, что они уже сделали для тебя многое.



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
3-1132670077
Alexandr1
2005-11-22 17:34
2006.01.22
РБД без взаимосвязанных таблиц???


14-1135645270
Profi
2005-12-27 04:01
2006.01.22
Прошу оценить


14-1135756262
DErad
2005-12-28 10:51
2006.01.22
Delphi не работает!!!


5-1121854743
XPOID
2005-07-20 14:19
2006.01.22
TFrame.Onshow


2-1136477090
dera
2006-01-05 19:04
2006.01.22
Как поменять дату создания файла?