|
|
|
Как получить время из биоса? | ☑ | ||
|---|---|---|---|---|
|
0
Rizhij_Nikitos
23.08.10
✎
17:04
|
Как получить время биоса в 1С? Кто-то делал такое? Возможно вообще?
|
|||
|
1
Sk0rp
23.08.10
✎
17:07
|
А чем, по вашему, время биоса отличается от системного?
|
|||
|
2
Rizhij_Nikitos
23.08.10
✎
17:12
|
Ну я как то думал что время системное это время Windows, но время Windows меняется легким движением руки, ТекущаяДата(); насколько я понимаю получает время из Windows. Вот мне и надо получить время с биоса - оно вроде не зависит от Windows?
|
|||
|
3
Сергей Д
23.08.10
✎
17:13
|
По опыту работы с ДОС - меняешь системное время, меняется и время в БИОС.
|
|||
|
4
smaharbA
23.08.10
✎
17:13
|
(1) всем
|
|||
|
5
smaharbA
23.08.10
✎
17:14
|
(3) не факт
|
|||
|
6
Liova
23.08.10
✎
17:14
|
(2) Тебя ввели в заблуждение. Время есть время, но права на изменение в винде можно урезать
|
|||
|
7
Rizhij_Nikitos
23.08.10
✎
17:17
|
Да нет же!!! Идея такая что нужен независимый или максимально недоступный для пользователя источник времени. Пишу игру на 1С, там фишка такая есть: добыча ресурсов в час. Так вот когда ты не в игре они тоже тикают и когда ты заходишь, расчитывается время твоего отсутствия, и добавляются ресурсы, все работает через ТекущаяДата(); но это же очевидный баг. Вышел, перевел часы на 100 дней вперед, зашел и тут опа тебе куча ресурсов! Хоть свои часы пиши и в трей вешай)
|
|||
|
8
acsent
23.08.10
✎
17:18
|
(7) Обращайся к серверам времени, например time.windows.com
|
|||
|
9
acsent
23.08.10
✎
17:20
|
(7) MMORPG пишешь?
|
|||
|
10
H A D G E H O G s
23.08.10
✎
17:20
|
Прочитать область памяти (не помню на глаз адрес).
Вроде права ring0 нужны. |
|||
|
11
H A D G E H O G s
23.08.10
✎
17:21
|
И если она кэшируется в ОЗУ - только тогда
|
|||
|
12
nop
23.08.10
✎
17:21
|
(7) используй вычисление времени с момента запуска программы
|
|||
|
13
H A D G E H O G s
23.08.10
✎
17:22
|
А так - порты читать.
|
|||
|
14
H A D G E H O G s
23.08.10
✎
17:23
|
||||
|
15
Rizhij_Nikitos
23.08.10
✎
17:30
|
(12) Игра как конфа идет, запуск игры - запуск документа, закрытие ее - закрытие документа.
Закрыл документ - время в константу, открыл его - получили с ТекущейДаты(); (8) Вот тоже уже начал об этом думать, только с внешними приложениями никогда не работал в 1с. Посоветуйте книжку/статью или может у кого набросок похожего есть? |
|||
|
16
Rizhij_Nikitos
23.08.10
✎
17:32
|
(9) Не. Пишу аналог OGame (русск. ОГейм) — стратегическая космическая игра. Относится к классу многопользовательских браузерных веб-игр(с)Wiki
Моя пока однопользовательская - реализую для одного человека все это дело. Многопользовательской будет врядли только если под 8.2 в веб интерфейсы перегонять. Делаю для себя потрениться в 1с да и вообще мозги размять. Если кому интересно могу дать .dt чего уже наделал) |
|||
|
17
Grusswelle
23.08.10
✎
17:41
|
(3) Время в БИОСе - и есть системное! :-)
|
|||
|
18
Grusswelle
23.08.10
✎
17:42
|
(0) Используй централизованное время (время сервера?).
|
|||
|
19
tridog
23.08.10
✎
17:43
|
&НаСервере
Функция ПолучитьВремяКоторымПользовательРулитьНиВЖизтьНеСмогет() Возврат ТекущаяДата(); КонецФункции &НаКлиенте Процедура Тест1() ИстинноеВремя = ПолучитьВремяКоторымПользовательРулитьНиВЖизтьНеСмогет(); КонецПроцедуры Конечно нужен клиент-сервер, но публиковать файловую базу в вебе это такое звращение... |
|||
|
20
smaharbA
23.08.10
✎
17:46
|
(17) да ну ?!
|
|||
|
21
acsent
23.08.10
✎
17:51
|
(20) Какая функция меняет время в винде и не менят в биосе?
|
|||
|
22
Fram
23.08.10
✎
18:03
|
мальчиш-кибальчиш smaharbA что то знает, но не хочет нам говорить ))
|
|||
|
23
smaharbA
23.08.10
✎
18:18
|
(21) ты мене подозреваешь в дрындеже ? )
(22) скажу |
|||
|
24
supremum
23.08.10
✎
18:30
|
(0)
Если охота поизвращаться, то вот: http://www.wasm.ru/series.php?sid=9 потом вот: http://www.codenet.ru/progr/dos/int_0019.php |
|||
|
25
Rizhij_Nikitos
23.08.10
✎
18:47
|
(24) Как правило все что заканчивается на asm ни к чему хорошему не приводит)) Точнее приводит но очень извилистыми путями, связываться не охота.
(19) Опять же говорю делаю для себя а не для клиента и не сервера. Многопользовательский режим обдумывался пару раз, но пока бы однопользовательский закодить, потому что на каждое движение вылезает уже неплохое количество багов. Скорее всего буду получать время с сервера windows например. |
|||
|
26
Neg
23.08.10
✎
18:49
|
(25) А если нет доступа в нет, игрушка уже не катит?
|
|||
|
27
Rizhij_Nikitos
23.08.10
✎
18:56
|
Катит, просто тогда ты можешь блин поменять серверное время(время твоей машины), пока игрушка закрыта, потом зайти и тебе набежит куча ресов. Не хочу чтоб так было, но пока полностью удовлетворяющего решения не нашел.
|
|||
|
28
Neg
23.08.10
✎
18:58
|
А просто при завершении игры фиксировать время пользователя, а при открытии сравнивать с текущим и если было изменено тогда ну т.д.
|
|||
|
29
Rizhij_Nikitos
23.08.10
✎
19:00
|
(28) Время пользователя и есть твое время. Ты пользователь.
|
|||
|
30
smaharbA
23.08.10
✎
19:12
|
(22)
reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v realtimeisuniversal /t reg_dword /d 1 и спокойно выставляем разное время/дату в бивесе и виндузе |
|||
|
31
Адинэснег
23.08.10
✎
19:25
|
(0)пиши полноценный сервер!или не взлетит
|
|||
|
32
Копер
23.08.10
✎
19:26
|
время неподвластно
|
|||
|
33
Torquader
23.08.10
✎
19:45
|
(30) Время можно в BIOS прописать через порты какое хочешь - это понятно. Только читать его оттуда тоже через порты придётся.
P.S. в данном же случае пользователь время в BIOS поменяет - и это ему запретить нельзя, в отличие от изменения системного времени (пароль на BIOS снимается перемычкой, а материнские платы c DALLAS уже не выпускаются). |
|||
|
34
smaharbA
23.08.10
✎
19:51
|
(33) Вы это счас о чем ?
|
|||
|
35
smaharbA
23.08.10
✎
19:52
|
(25) время биоса можно получить даже из адинес без асма (но не через порты, через них виндуз обманет)
|
|||
|
36
Torquader
23.08.10
✎
20:07
|
А что система считывает 18 раз в секунду ?
|
|||
|
37
kitt
23.08.10
✎
20:18
|
(0) время БИОСА? из 1с? Гондурас всё еще не потушили? )
|
|||
|
38
Rizhij_Nikitos
23.08.10
✎
20:19
|
(36)
Это процедура обслуживания таймера. Она используется для считывания и изменения внутреннего счетчика таймера. Хотя эту процедуру и называют процедурой текущих даты/времени, на самом деле это всего лишь счетчик прерываний таймера. Счетчик увеличивается на единицу при каждом прерывании, которое происходит примерно 18-21 раз в секунду. Вычисление и обновление времени дня и даты - это операция ДОС, которая использует результаты счетчика. Имеется две процедуры обслуживания таймера, вызывающиеся по прерыванию 26, шестнадцатиричное значение 1А, одна, с кодом 0, для считывания показаний таймера, а вторая, с кодом 1, для их установки. Значение счетчика таймера хранится в виде пары двухбайтовых чисел, использующихся, фактически, как одно четырехбайтовое. Эта процедура вносит лишь одно добавление в примитивную процедуру подсчета часов. Когда это происходит, счетчик сбрасывается и факт запоминается. При очередном запросе на считывание значения счетчика передается сообщение о том, что таймер сбрасывался. Это позволяет ДОС следить за временем дня и сменой дат не вычисляя их постоянно. Когда ДОС необходимо установить время дня, используется описанная процедура для получения значения счетчика и по нему вычисляется время; если будет получено сообщение о сбросе таймера, то ДОС изменит также и дату. Таким образом, ДОС выполняет все эти вычисления только тогда,когда требуется указать время, что упрощает функции процедуры обслуживания прерываний от таймера, которая должна выполняться 18 раз в секунду. Если к ДОС будет хотя бы один запрос времени за день, то проверить это, оставив Ваш компьютер включенным на 24 часа. К концу Вашей проверки время дня будет по прежнему правильным, а дата ошибочной). Если Вы будете сами считывать или устанавливать показания таймера с помощью этих процедур системы BIOS, это может помешать правильному отсчету времени и даты в ДОС. ДОС устанавливает значение счетчика таймера таким образом, как будто он был запущен в полночь, после чего ДОС полностью полагается на значение признака сброса таймера. Любая установка или считывание показаний таймера Вашими программами естественно окажет влияние на отсчет времени в ДОС. Если Ваши программы будут только считывать показания таймера, это может привести к перехвату сообщения о сбросе таймера, что нарушит порядок отсчета даты в ДОС. Теперь мы рассмотрели все процедуры системы BIOS-ПЗУ. Вы могли обратить внимание на два упущения в составе этих процедур. В то время как все устройства, подключаемые стандартным образом, имеют поддерживающие их служебные процедуры,совершенно не поддерживается игровой адаптер. Это происходит потому, что такая поддержка просто не нужна. Я могу только предполагать почему это произошло; одна из возможных причин может заключаться в том, что форма "ИБМ" не сочла этот адаптер достаточно важной составной частью системы, которой требуется какая-либо поддержка на уровне системы BIOS. Возможно, также что игровой адаптер был доставлен к системе на достаточно поздней стадии ее разработки и его поддержка не могла быть включена в систему BIOS, размещенную в ПЗУ. Еще одна недостающая часть системы BIOS - это набор процедур для обслуживания встроенного динамика. Почему они не были включены в систему - это для меня загадка. В следующем разделе мы рассмотрим работу динамика и то, как извлекать из него звуки под управлением программы. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |