PDA

Просмотр полной версии : Как сделать свой датчик


= Nicki =
06.03.2011, 16:36
Датчики живут в папке 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. Создадим скрипт с кодом:


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

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

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

$rr.Execute("SETLABEL;!Test;Test =)")

4. Запускаем скрипт, iCar DS и получаем наш текст Test =)
http://content.foto.mail.ru/mail/nicki_2004/54/i-141.jpg


Теперь вернемся к нашему speedfan'у.
Поковыряв исходники RideRuner'а находим вот это:

'=============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 окошка с датчиками их номерами. Запомним эти номера они пригодятся.
http://content.foto.mail.ru/mail/nicki_2004/54/i-140.jpg
В моем случае это 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 (http://www.pccar.ru/showthread.php?t=14694)
2. Термометр - в данный момент этим занимаюсь

PS: все исходники есть. Я не жадный могу поделится. Спрашиваем в личку не стесняемся.

pierrotm777
09.03.2011, 13:47
Thanks for this share

The test exemple don't run for me and the temp add also don't run !!!

Мишаня 121
10.03.2011, 22:58
Вообще нифига не понял))) В файлах все написал, а вот пункты 3 и 4 ступор)))
Как создать скрипт с кодом?
Как его запустить?
Speedfan 4.41 окошки откуда взялись?
В общем если не сложно, напиши поподробнее. Тож хочу температуру процессора видеть в Икаре)

= Nicki =
11.03.2011, 07:48
Вообще нифига не понял))) В файлах все написал, а вот пункты 3 и 4 ступор)))
Как создать скрипт с кодом?
Как его запустить?
Speedfan 4.41 окошки откуда взялись?
В общем если не сложно, напиши поподробнее. Тож хочу температуру процессора видеть в Икаре)

В инструкции описан общий случай, т.е. создания своего датчика из какой-нибудь проги. Тебе же нужно из speedfan'а. Я это уже сделал.


1. Взять скрипт из первого поста этой темы.
2. запусти speedfan.exe и мой скрипт. Скрипт сохрани отдельно от speedfan'а.
3. Скрипт выдаст по очереди 3 окна. Температуры, скорости вентеляторов и напряжения. Запомни номера в которых будут цыфры.
4. Далее запускаещь скрипт с параметрами spedfan.exe SFT1 SFT3 SFT5 SFT7 Цифры мои, у тебя могут отличатся.
5. в икаре нужно добавить сктроки:
В файл 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

сделаей скрины 3-х окошек скрипта и speedfan'а и я тебе подробнее скажу что куда.

Alex-NN
11.03.2011, 13:37
Попробывал. Все получилось, спасибо!
Вопросик: как лучше поступить, чтобы при автозапуске Икара все сразу отображалось.
Скрипт и спидфан в автозагрузку? Или возможны варианты?

= Nicki =
11.03.2011, 14:05
Вопросик: как лучше поступить, чтобы при автозапуске Икара все сразу отображалось.
Скрипт и спидфан в автозагрузку? Или возможны варианты?

ага, скрипт будет ждать когда загрузится спидфан и икар, после как икар появится, он подождет 5 секунд потом пойдут данные в икар. Задержка сделана т.к. икар грузится некоторое время. Поле выгрзки икара скрипт вывалится с ошибкой. Сколько не бился не получается отследить икар в памяти чтобы во время выйти и без ошибки :dntknw:

Alex-NN
11.03.2011, 14:14
ага, скрипт будет ждать когда загрузится спидфан и икар, после как икар появится, он подождет 5 секунд потом пойдут данные в икар. Задержка сделана т.к. икар грузится некоторое время. Поле выгрзки икара скрипт вывалится с ошибкой. Сколько не бился не получается отследить икар в памяти чтобы во время выйти и без ошибки :dntknw:
Точно, после закрытия Икара у меня тоже скрипт вылетает с ошибкой. Вроде, не смертельно.:yes4:

pierrotm777
11.03.2011, 18:32
Sorry, i have tried again the test exemple without succes !

I don't understand what is the utility of these two files label_list.txt and label_ru.ini .

I have made my own language (fr.ini) into the language folder and i don't know if my issue is here .

I don't understand also how you have on the left top the Test label .
Actually, i have the volume label and if i want change it , i do use the labe_choise.skin


NEED HELP for UNDERSTAN HOW TO

= Nicki =
11.03.2011, 22:19
Sorry, i have tried again the test exemple without succes !

I don't understand what is the utility of these two files label_list.txt and label_ru.ini .

I have made my own language (fr.ini) into the language folder and i don't know if my issue is here .

I don't understand also how you have on the left top the Test label .
Actually, i have the volume label and if i want change it , i do use the labe_choise.skin


NEED HELP for UNDERSTAN HOW TO

add two file in labels folder:
label_list.txt and label_fr.ini
in label_list.txt file add last string - !Test
in label_fr.ini file add last string - l_label_!Test=Test hint

and run iCar DS. Long press "volume label" and select last string !Test

Create script in AutoIt:

;wait iCar
WinWait ("iCar DS")

;iCar run 1-5 seconds
sleep(5000)

;create iCar object
$rr = ObjCreate("RideRunner.sdk")

;send our text in iCar
$rr.Execute("SETLABEL;!Test;Test =)")

and run script.

PS sory for my english :blush:

= Nicki =
29.03.2011, 13:07
мучаю все тему с датчиками ... Вот какая засада: настроил в скине на экране Звук чтобы проигрывался wav файл при превышеннии параметра !SFT1>40 Файлик так и не проигрался. Перезашел в iCar wav файл всеравно не проигрывается. Это так задуманно или я чтото нето делаю?

Bersenev
29.03.2011, 16:52
мучаю все тему с датчиками ... Вот какая засада: настроил в скине на экране Звук чтобы проигрывался wav файл при превышеннии параметра !SFT1>40 Файлик так и не проигрался. Перезашел в iCar wav файл всеравно не проигрывается. Это так задуманно или я чтото нето делаю?

У меня всё работает.

Объясню как это работает, а там уже смотри что у тебя не получается.

Каждую секунду происходит проверка !SFT1 на условие !SFT1>40 .

Сообщение будет выдано, если произойдёт переход значения !SFT1 от 40 к 41 при условии что !SFT1 будет больше 40 в течении всего времени задержки. Задержка убирает "дребезжание" датчика, когда он прыгает туда сюда постоянно ( 40, 40.1, 40, 40.1).

В следующий раз сообщение будет выдано только после того как !SFT1 станет меньше 40 на время задержки, а потом снова больше 40.

PS. Где у нас всё храниться ты знаешь, можешь взять там версию икара 1.0.5.40, там кое-что правили с переменными, может в этом проблема.

= Nicki =
29.03.2011, 17:01
а я понял в чем дело =) Я же передаю строку, а в строке не просто число 40, а 40°С. Теперь вопрос как сделать так чтобы iCarDS сам дописывал °С? Или наверное в подписи проще будет указать что это градусы целсия, но хотелось бы крупно, так смотрится лучше

Bersenev
29.03.2011, 17:09
а я понял в чем дело =) Я же передаю строку, а в строке не просто число 40, а 40°С. Теперь вопрос как сделать так чтобы iCarDS сам дописывал °С? Или наверное в подписи проще будет указать что это градусы целсия, но хотелось бы крупно, так смотрится лучше

Никак, только в пояснении к датчику писать процессор,°С или не будут работать сообщения

nik0
30.03.2011, 11:13
PS. Где у нас всё храниться ты знаешь, можешь взять там версию икара 1.0.5.40, там кое-что правили с переменными, может в этом проблема.

А это где, если не секрет???

pierrotm777
30.03.2011, 22:04
I have juste tried the 1.0.5.40 with some issues.
Only the temperatures run well BUT, the number is not good and i don't know why !
If you use the ShowspeedFanData program you can see a difference !
And if i use skintoolds the SFT labels run very well but not the SFV or SFF labels !

My Temp is actualy 42°C but the label give 4200 !

= Nicki =
31.03.2011, 04:50
My Temp is actualy 42°C but the label give 4200 !

I know, therefore and have made a script
In a cap has laid out two variants of a script with an addition and without for sound notifications.

В шапке выложил два варианта скрипта с припиской и без для звуковых оповещений.

fedcam
22.05.2011, 06:46
Для тех кто в танке (типа меня), обратите внимание, что в файле label_list.txt метки нумеруются последовательно SFT1-SFT4, а в параметрах скрипта согласно номерам датчиков SFT1, SFT3 ...
Три раза настраивал, пока не заметил ошибку.
P.S. За скрипт спасибо. Очень нужная вещь.

Alex-NN
09.08.2011, 15:30
Уважаемые!
Кто-нибудь поможет сообразить, как подцепить показания этого термометра к Икару?
http://www.compcar.ru/forum/showthread.php?t=4767

wave_is
09.08.2011, 21:38
а сколько стоимость того термометра?


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

я вот еще нашел несколько вариантов:
- 8,8 у.е. http://www.dealextreme.com/p/usb-digital-thermometer-dongle-software-displays-temperature-7003
- 42,2 у.е. http://www.dealextreme.com/p/usb-powered-thermometer-hygrometer-with-probe-40-150-c-57354 из плюсов: пишет в память, имеет 2 темп. датчика + гигрометр (гипотетически датчик влажности можно использовать чтобы оповестить водителя о необходимости включить обдув)
- 20,87 у.е. http://www.dealextreme.com/p/usb-powered-thermometer-hygrometer-40-120-c-42591 + гигрометр
- 8,3 у.е. http://www.dealextreme.com/p/usb-powered-c-f-thermometer-40-120-c-48285
все цены с доставкой
P.S. я себе покупал модель: http://www.dealextreme.com/p/temperntc-usb-digital-thermometer-with-remote-sensor-and-software-18853 (есть в наличии на другом сайте) так с софтиной шли исходники.

Alex-NN
09.08.2011, 22:26
а сколько стоимость того термометра?

60 рублей.:smile2: Если ардуина уже есть. Спасибо за галерею термометров, но вопрос был чуть-чуть о другом.:smile2:

wave_is
10.08.2011, 15:59
P.S. (офтоп) на ардунио вообще можно много полезного сделать. на ебее за копейки лежат и датчики освещения и звука и всякое еще =) А софт для этого вообще кто-то пишет? =) можете ссылку взять для по по этому датчику и вообще по другим АВТО проектам на ардунио. Вообщем ткните носом в ссылку =)

Alex-NN
11.08.2011, 22:42
P.S. (офтоп) на ардунио вообще можно много полезного сделать. на ебее за копейки лежат и датчики освещения и звука и всякое еще =) А софт для этого вообще кто-то пишет? =) можете ссылку взять для по по этому датчику и вообще по другим АВТО проектам на ардунио. Вообщем ткните носом в ссылку =)
Недопонял, кого нужно ткнуть носом и в какую конкретно ссылку?:dntknw:

beriv
15.08.2011, 00:04
Вопрос к = Nicki =, а может и Bersenev.
Будет писаться легкая прога, которая будет отображать обороты и температуру двигателя, специально в двух текстовых полях. После так понимаю нужен скрипт, который эти поля будет забирать в икар.
Собственно вопрос - раз прога пишется первоначально с целью передачи данных в икар, может быть обойтись без промежуточного компонента, имею ввиду скрипт, получающий с нее данные? Например может сразу в текстовик писать цифры с некоторой периодичностью, а икар их будет забирать и отображать..
Если это возможно подскажите пожалуйста алгоритм куда данные писать.

Bersenev
15.08.2011, 00:11
Вопрос к = Nicki =, а может и Bersenev.
Будет писаться легкая прога, которая будет отображать обороты и температуру двигателя, специально в двух текстовых полях. После так понимаю нужен скрипт, который эти поля будет забирать в икар.
Собственно вопрос - раз прога пишется первоначально с целью передачи данных в икар, может быть обойтись без промежуточного компонента, имею ввиду скрипт, получающий с нее данные? Например может сразу в текстовик писать цифры с некоторой периодичностью, а икар их будет забирать и отображать..
Если это возможно подскажите пожалуйста алгоритм куда данные писать.

На каком языке пишется программа? Может не нужна программа, а сразу простенький плагин, если это только для икара?

beriv
15.08.2011, 00:24
Язык не знаю, программу будет автор устройства писать..
Вот тут фото программки, которой настройка осуществляется есть:
http://sauvz.ru/cms/index.php?dn=info&pa=instr
там же на сайте эта программа.
Идея написать лайт-версию, и отправлять данные в икар..
А насчет сразу плагин не знаю, как это делается, принцип мне не понятен пока:(

Bersenev
15.08.2011, 00:39
Язык не знаю, программу будет автор устройства писать..
Вот тут фото программки, которой настройка осуществляется есть:
http://sauvz.ru/cms/index.php?dn=info&pa=instr
там же на сайте эта программа.
Идея написать лайт-версию, и отправлять данные в икар..
А насчет сразу плагин не знаю, как это делается, принцип мне не понятен пока:(

Желательно знать язык, я бы на нем дал примеры отправки данных из программы прямо в икар.

А плагин это кстати не так сложно, шаблоны на разных языках есть, достаточно только начинку засунуть и в скине дать команду загрузки этого плагина.

Так что узнавай язык и чем могу помогу

beriv
15.08.2011, 00:40
Узнал у автора говорит autoit

Bersenev
15.08.2011, 00:45
Узнал у автора говорит autoit

тогда вообще проблем нет, AutoIt и есть язык на котором я все скрипты делаю

beriv
15.08.2011, 00:46
Тогда что нужно?

Bersenev
15.08.2011, 01:20
Тогда что нужно?

Всех делов то, добавить две строчки в скрипт

Global $rr = ObjCreate("RideRunner.sdk") - Инициализация общения с икаром

и

$rr.Execute("SetLabel;!L_1;" & $var1 & "||SetLabel;!L_2;" & $var2 ) - инициировать два лейбла(датчика)

Теперь в икаре будет доступно два датчика !L_1 и !L_2, и дальше по инструкции в этой теме

beriv
15.08.2011, 01:27
Вроде теперь ясно, спасибо, сейчас автору скажу. Надеюсь получится:)

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

Это действительно для версии 1.6? В 1.5 даже папки такой нет. Создание таковой и соотвествующих файлов не приводят к положительному результату.

Bersenev
16.08.2011, 17:33
Это действительно для версии 1.6? В 1.5 даже папки такой нет. Создание таковой и соотвествующих файлов не приводят к положительному результату.

В версии 1.0.5.37 это всё уже работало

zhserg
16.08.2011, 18:48
Спасибо, понятно. "Попалась под руку" 1.0.5.0.
С 1.0.5.37 работает :good2:

DenK
05.01.2012, 10:29
есть программа диагностики авто показывает тучу параметров. Она ведет лог в csv файл, данные записываются каждые 0,2 сек.
Хочу оттуда взять 4-5 параметров для вывода в икар
Как подвязать сsv файл к датчикам Икара

Bersenev
05.01.2012, 17:59
Есть два варианта

1) Плагин, который будет читать файл и выводить их в лейблы икара, наподобии RRCheckEngine или iCarVOBD

2) Скрипт или внешняя программа, которая будет читать файл и отправлять эти данные в икар. Так как сделал автор топика.

DenK
05.01.2012, 20:02
может учтете подобную возможность в новой версии из текстовых файлов?

Bersenev
05.01.2012, 20:29
может учтете подобную возможность в новой версии из текстовых файлов?

Из каких текстовых файлов? что в них надо искать? Ну почему у тебя всё надо выпытывать

Beezzz
22.03.2012, 00:22
"запускаем скрипт с параметрами speedfan.exe SFT1 SFT3 SFT5 SFT7"
эти параметры в какой части скрипта записываются?) понятно все,не ясно куда писать эти параметры,в моем случае номера те же самые у датчиков. в голом виде скрипт из первого поста показывает 3 окна и выходит

Beezzz
26.03.2012, 00:01
помогите несведующему:) в скриптописании я ноль... все настроено,датчик видяхи и цпу оч нужен на виду

gworum
11.04.2013, 14:34
Создаю скрип как написано в первом посте, но после запуска скрипта и iCar, он через пять секунд исчезает из диспетчера задач, а в iCar ничего не отображается. Подскажите в чем может быть проблема.

Tygra
01.11.2013, 16:54
Что то не так делаю, а что не пойму, встраивается только один показатель. Что делал:
1)Скачал саму прогу speedfan 4.49 (она постоянно меняет номера датчиков, в последствии нашел 4.41)
2) запустил скрипт ветки speedfan.exe, переписал номера нужных мне показаний.
3) создал файлик в блокноте temp.cmd , туда вписал c:/spedfan sft1 sft3 и т.д.
4) сунул его в автозагрузку вместе с самой прогой.
5) прописал в икаре нужные данные в двух файлах
Итого : работает только 1ый датчик, остальные ничего не кажут, несколько раз перепроверил. На данный момент ни один не работает. Фз что ему надо. Попробую еще сам speedfan переустановить.....
icar версии 1_7_0_34
P\S Как то коряво работает сама програмка спидфан, при каждом запуске ищет новые датчики, находит не существующие датчики с температурами в 110гр и минусовые. Как отключить автоопрос не нашел.... Подскажите что не так делаю или в Топку ...