Показать сообщение отдельно
Старый 06.03.2011, 16:36   #1
= Nicki =
Старший Пользователь
 
Регистрация: 06.07.2007
Возраст: 44
Город: Екатеринбург
Регион: 66, 96
Машина: Honda Fit
Сообщений: 820
= Nicki = is a jewel in the rough= Nicki = is a jewel in the rough= Nicki = is a jewel in the rough= Nicki = is a jewel in the rough
По умолчанию Как сделать свой датчик

Датчики живут в папке C:\Program Files\TipTop software\iCar DS\skins\CFStyle\LABELS
label_list.txt - в этом файле описаны переменные, которые используются в качестве датчиков.
label_ru.ini - в этом файле находятся подписи к датчикам.

И так теперь нам нужно получить данные которые необходимо отобразить. Данные можно получить двумя способами:
1. Плагин для iCar DS. Этот способ я не изучал. Если кто поделится велкам.
2. Из внешней программы или скрипта используя SDK. Вот этот способ расмотрим по подробнее на примере программы speedfan.

Как известно эту программу iCar DS и так прекрасно подерживает, но есть маленькие недочеты которые портят всю картину. А именно температуру показывает умноженную на 100.

Из внешней программы данные можно получить тремя способами:
1. Добровально. Например есть логи или еще какие файлы для внешней обработки.
2. Если на форме программы данные помешены в текстовые поля или другие визуальные элементы с которых можно вытащить текст. К сожалению к этим типам не относится тип Label, который часто применяется для отображение текстовой информации. Но и это тоже не проблема, только сложно это делается: Либо перехват вывода текста при прорисовке, либо напрямую из памяти.
3. Напрямую из памяти. Этот способ и расмотрим. Для этого нужно знать структуру данных или хотбы точное количество памяти.

Теперь добавим один датчик.
1. В файле label_list.txt добавим одну строчку в конец файла: !Test
2. В файле label_ru.ini добавим одну строчку а конец файла:l_label_!Test=Тестовый датчик
3. Создадим скрипт с кодом:

PHP код:
;ждем когда появится iCar
WinWait 
("iCar DS")

;
икар грузится какоето время
sleep
(5000)

;
Создаем объект для работы с Икаром
$rr 
ObjCreate("RideRunner.sdk")

$rr.Execute("SETLABEL;!Test;Test =)"
4. Запускаем скрипт, iCar DS и получаем наш текст Test =)



Теперь вернемся к нашему speedfan'у.
Поковыряв исходники RideRuner'а находим вот это:
PHP код:
'=============Speedfan================
Public Type SFSharedData
    Version As Integer
    flags As Integer
    MemSize As Integer
    Handle As Long
    NumTemps As Integer
    NumFans As Integer
    NumVolts As Integer
    Temps(30) As Integer
    placeholder(32) As Integer
    Fans(30) As Integer
    placeholder2(32) As Integer
    Volts(30) As Integer
End Type 
Это структура данных speedfan'а в которой хранится та информация, которая выводится на экран. Нам необходимо найти кусок памяти, скопировать его в свои переменые и пользоватся. Подробнее можно посмотреть в исходнике скрипта.
При запуске скрипта без параметров он выводит 3 окошка с датчиками их номерами. Запомним эти номера они пригодятся.

В моем случае это 1, 3, 5, 7. Скоростей вращения кулеров нет, напряжений тоже нет. Ноут новый speedfan еще видать не умеет с ним работать.

запускаем скрипт с параметрами speedfan.exe SFT1 SFT3 SFT5 SFT7

Если необходимы скорости вращения, то в параметры добавить SFF1. SFV1 - напряжения.

В файл label_list.txt добавляем:
!SFT1
!SFT2
!SFT3
!SFT4

В файл label_ru.ini добавляем:
l_label_!SFT1=Темп. HDD
l_label_!SFT2=Темп. SYS
l_label_!SFT3=Темп. CPU1
l_label_!SFT4=Темп. CPU2

Если что непонятно спрашиваем =) Я в этом уверен что не понятно. Отшлифую пост добавлю в инструкцию. Если нужно добавить в датчики данные с других программ, а сами не можете, то обращайтесь. Чем могу тем помогу.





Примеры реализации датчиков:
1. iCarDS + Тестер ECU
2. Термометр - в данный момент этим занимаюсь

PS: все исходники есть. Я не жадный могу поделится. Спрашиваем в личку не стесняемся.
Вложения
Тип файла: zip speedfan.zip (1,012.7 Кб, 696 просмотров)
__________________
Мой проект: Honda Fit 2002 г.в.

Некоторые полезности в которых принимаю участие:
Инструкция к iCar DS
iCarDS + Тестер ECU

Последний раз редактировалось = Nicki =; 31.03.2011 в 04:45.
= Nicki = вне форума   Ответить с цитированием