Имя: Пароль:
1C
 
Как получить время из биоса?
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 - это набор процедур для
обслуживания встроенного динамика. Почему они не были включены в систему -
это для меня загадка. В следующем разделе мы рассмотрим работу динамика и
то, как извлекать из него звуки под управлением программы.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.