PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Железо для видеозахвата (http://pccar.ru/forumdisplay.php?f=103)
-   -   КАРКАМ SA-4 (http://pccar.ru/showthread.php?t=8190)

KonTur 05.08.2009 11:13

Да я никак не думал, что в настройках Motion скрываются настройки яркости и контрастности... Оказалось, что они влияют на картинку.

Да, я тоже давно хочу пересечься, но пока никак нет времени. На след. неделе обязательно созвонимся.

ashu 05.08.2009 11:50

Обнаружил такую особенность - девайс никак не использует первые 34Mb на CF-карте (от объёма карты не зависит). Поэтому на форматированную CF-карту имеет смысл записать софт для просмотра карты на ПК и что-либо еще из необходимого. До 34метров в общем объёме.

KonTur 05.08.2009 15:58

Поподробнее плиз.
Я форматирую карту в регистраторе (?), потом сую ее в карт-ридер, копирую до 34 МБ на нее, потом сую в регистратор обратно и он не затрет эти данные?
Или форматировать ее можно в карт-ридере? FAT32?

zesar2000 05.08.2009 19:58

А что мешает проверить? Запишите что-нибудь до этого обьема, после форматирования на PC и в регистратор.
У меня был это SA-4, продал, купил KAPKAM SZ-4. Кому надо, предоставлю примеры записей с двумя DSP камерами.
А так же у меня есть EverFocus EDSR-400/M, есть один пример записи, тоже с DSP камерой.

ashu 05.08.2009 22:09

Цитата:

Сообщение от KonTur (Сообщение 106251)
Поподробнее плиз.
Я форматирую карту в регистраторе (?), потом сую ее в карт-ридер, копирую до 34 МБ на нее, потом сую в регистратор обратно и он не затрет эти данные?
Или форматировать ее можно в карт-ридере? FAT32?

1. Форматируешь в ПК (FAT32).
2. Пишешь что угодно до объёма 34Мб (именно в первые 34Мб).
3. Вставляешь карту в регистратор и делаешь с ней что угодно - пишешь данные/форматируешь...
4. Первые 34Мб по-любому остаются нетронутыми - "форматирование" регистратора затрагивает лишь ту часть карты, в которой регистратор располагает свои данные (после первых 34Мб).

ashu 09.08.2009 14:11

Цитата:

Сообщение от KonTur (Сообщение 106218)
Да я никак не думал, что в настройках Motion скрываются настройки яркости и контрастности... Оказалось, что они влияют на картинку.

Спасибки, нашёл! :)

ashu 10.08.2009 15:28

Провёл небольшой тюнинг - установил в верхнюю крышку два вентилятора на 12В, подключенных последовательно - вяло крутятся, почти бесшумно, но охлаждения стало достаточно - за 2 часа езды приборчик почти нисколько не нагрелся :)

ashu 17.08.2009 00:27

Иногда возникает желание сделать копию текущей CF-карты в файл так, чтобы можно было, во-первых, просмотреть на ПК в CFCardViewer'е иль DVRPlayer'е, а, во-вторых, иметь возможность развернуть этот файл обратно на CF-карту, чтобы снова проиграть отснятое на устройстве.
Использовать на carpc для этих целей CFCardViewer'е иль DVRPlayer'е жутко неудобно, поскольку они оба работают на разрешении экрана от 1024x768. К тому же обе эти проги не позволяют записывать на флешку видео из файла.

Что сделал:

Сначала попробовал копировать/восстанавливать флешку руками при помощи dd. Получилось.
Команда для копирования флешки в файл:

dd if=\\.\G: of=D:\Dvr\test.law bs=36143616c skip=1

G: - буква диска CF-карты в картридере
36143616 - столько байт не используется вначале карты (их надо пропустить, чтобы этот файл потом можно было просмотреть на ПК)

Команда для записи на флешку из файла:

dd of=\\.\G: if=D:\Dvr\test.law bs=36143616c seek=1


Т.к. я достаточно ленив, то и набирать эти команды руками тож неинтересно.
Написал два ahk-скрипта:

DVRCF2File.ahk - копирование видео с флэшки в файл:
Код:

#Persistent
#SingleInstance ignore


DefaultDVRFolder := "D:\videograb"        ; каталог для сохранения записанного видео
DefaultFlashLabel := "DVRFLASHCF"        ; Label флешек с видео (для их автоматического определения)




DriveGet, list, list, REMOVABLE

; отпарсить list

found := ""
foundcap := 0
DDFolder := ""
DDReady := 0

Gosub, progressOn

Loop, Parse, list
{
        folder := A_LoopField ":\"
        DriveGet, cap, capacity, %folder%
        DriveGet, fs, fs, %folder%
        DriveGet, label, label, %folder%
        DriveGet, status, status, %folder%

        If(status = "Ready" && fs = "FAT32" && label = DefaultFlashLabel) {
                found := folder
                foundcap := cap
        }
}

if(foundcap = 0) {
        Gosub, progressOff
        FileSelectFolder, MyVar2, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, 0, Выберите накопитель с CF-картой
        Gosub, progressOn
        SplitPath, MyVar2, , , , , MyVar2
        DriveGet, fs, fs, %MyVar2%
        DriveGet, type, type, %MyVar2%
        DriveGet, status, status, %MyVar2%
        DriveGet, cap, capacity, %MyVar2%
        If(type != "Removable") {
                Progress, , Выбранный носитель не является сменным`nОперация отменена`n
                Sleep, 3000
        } Else If (status != "Ready") {
                Progress, , Выбранный носитель не готов`nОперация отменена`n
                Sleep, 3000
        } Else If (fs != "FAT32") {
                Progress, , На выбранном носителе не обнаружен FAT32`nОперация отменена`n
                Sleep, 3000
        } Else {
                found := MyVar2
                foundcap := cap
        }
}
DDFolder := DefaultDVRFolder
DriveSpaceFree, fsize, %DDFolder%
if(foundcap > fsize+1) {
        Gosub, progressOff
        FileSelectFolder, MyVar, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, 0, Выберите каталог для сохранения
        Gosub, progressOn
        DriveSpaceFree, fsize, %MyVar%
        If (foundcap > fsize+1) {
                Progress, , В указанном каталоге недостаточно места`nОперация отменена`n
                Sleep, 3000
        } Else {
                DDReady := 1
                DDFolder := MyVar
        }
} Else {
        DDReady := 1
}

if(DDReady = 1 && foundcap > 0) {
        allcount := foundcap
        count := round((allcount * 1024 * 1024 - 36143616)/36143616)
        allcount := round((count * 36143616 / 1024) / 1024)
        copyspeedtext := a_space
        percent := 0
        prevsize := 0
        Progress, A M1 R0-%allcount% Y410 ZH40 ZX20 ZY10 W600 H190 CW000000 CB00F000 CT00D000 FM24 FS20 WM1000 WS700, %percent%`%`r`n%copyspeedtext%, Копирование DVR-CF, DVR-CF, Tahoma
        WinActivate, DVR-CF
        FormatTime, tmpfilename,, yyyyMMdd_HHmm
        destfilename := DDFolder "\DVR_" tmpfilename ".law"
        StringLeft, found, found, 2
        copytime := A_TickCount
        SetTimer, progressOnreal, 1000
        Run, dd if=\\.\%found% of=%destfilename% bs=36143616c skip=1,, Hide, DDpid
} Else {
        Progress, Off
        ExitApp
}
return

progressOn:
Progress, M1 R0-%allcount% Y410 ZH0 ZX20 ZY10 W600 H190 CW000000 CB00F000 CT00D000 FM24 FS20 WM1000 WS700, %a_space%`r`n%a_space%`r`n%a_space%, Копирование DVR-CF, DVR-CF, Tahoma
return

progressOff:
Progress, A M1 R0-%allcount% Y410 ZH0 ZX20 ZY10 W600 H190 CW000000 CB00F000 CT00D000 FM24 FS20 WM1000 WS700, %a_space%`r`n%a_space%`r`n%a_space%, Копирование DVR-CF, DVR-CF, Tahoma
return

progressOnreal:
FileGetSize, cur, %destfilename%, M
percent := round((cur / allcount)*100)
if(percent > 100)
{
        percent := 100
}
if(prevsize != cur)
{
        prevsize := cur
        curcopytime := (A_TickCount - copytime) / 1000
        copyspeed := round((allcount - cur) / (cur / curcopytime))
        If(cur > 5)
        {
                if(copyspeed < 1)
                {
                        copyspeedtext := "завершено"
                } Else {
                        copyspeedtext := "осталось " copyspeed " сек"
                }
        }
}

Progress, %cur%, %percent%`%`r`n%copyspeedtext%
Process, Exist, %DDpid%
If(%ErrorLevel% = 0)
{
        Sleep, 1000
        Progress, Off
        ExitApp
}
return

File2DVRCF.ahk - запись видео из файла на флэшку:
Код:

#Persistent
#SingleInstance ignore


DefaultDVRFolder := "D:\videograb"        ; каталог для сохранения записанного видео
DefaultFlashLabel := "DVRFLASHCF"        ; Label флешек с видео (для их автоматического определения)




DriveGet, list, list, REMOVABLE

; отпарсить list

found := ""
foundcap := 0
DDFolder := ""
DDReady := 0

Gosub, progressOn

Loop, Parse, list
{
        folder := A_LoopField ":\"
        DriveGet, cap, capacity, %folder%
        DriveGet, fs, fs, %folder%
        DriveGet, label, label, %folder%
        DriveGet, status, status, %folder%

        If(status = "Ready" && fs = "FAT32" && label = DefaultFlashLabel) {
                found := folder
                foundcap := cap
        }
}

if(foundcap = 0) {
        Gosub, progressOff
        FileSelectFolder, MyVar2, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, 0, Выберите накопитель с CF-картой
        Gosub, progressOn
        SplitPath, MyVar2, , , , , MyVar2
        DriveGet, fs, fs, %MyVar2%
        DriveGet, type, type, %MyVar2%
        DriveGet, status, status, %MyVar2%
        DriveGet, cap, capacity, %MyVar2%
        If(type != "Removable") {
                Progress, , Выбранный носитель не является сменным`nОперация отменена`n
                Sleep, 3000
        } Else If (status != "Ready") {
                Progress, , Выбранный носитель не готов`nОперация отменена`n
                Sleep, 3000
        } Else If (fs != "FAT32") {
                Progress, , На выбранном носителе не обнаружен FAT32`nОперация отменена`n
                Sleep, 3000
        } Else {
                found := MyVar2
                foundcap := cap
        }
}
DDFolder := DefaultDVRFolder
Gosub, progressOff
FileSelectFile, MyVar, 33, %DefaultDVRFolder%, Выберите файл для записи на CF-карту, dvr-raw (*.raw;*.law)
Gosub, progressOn
FileGetSize, fsize, %MyVar%, M
If (foundcap > fsize+45 || foundcap < fsize+30) {
        Progress, , Размер файла не соответствует CF-карте`nОперация отменена`n
        Sleep, 3000
} Else {
        DDReady := 1
        DDFile := MyVar
}

if(DDReady = 1 && foundcap > 0) {
        StringLeft, found, found, 2
        Progress, A M1 R0-%allcount% Y410 ZH0 ZX20 ZY10 W600 H190 CW000000 CB00F000 CT00D000 FM24 FS20 WM1000 WS700, Идёт запись`r`nВремя неизвестно`r`nЖдите, Запись DVR-CF, DVR-CF, Tahoma
        WinActivate, DVR-CF
        copytime := A_TickCount
        SetTimer, progressOnreal, 1000
        Run, dd of=\\.\%found% if=%DDFile% bs=36143616c seek=1,, Hide, DDpid
} Else {
        Progress, Off
        ExitApp
}
return

progressOn:
Progress, M1 R0-%allcount% Y410 ZH0 ZX20 ZY10 W600 H190 CW000000 CB00F000 CT00D000 FM24 FS20 WM1000 WS700, %a_space%`r`n%a_space%`r`n%a_space%, Запись DVR-CF, DVR-CF, Tahoma
return

progressOff:
Progress, A M1 R0-%allcount% Y410 ZH0 ZX20 ZY10 W600 H190 CW000000 CB00F000 CT00D000 FM24 FS20 WM1000 WS700, %a_space%`r`n%a_space%`r`n%a_space%, Запись DVR-CF, DVR-CF, Tahoma
return

progressOnreal:
curcopytime := round((A_TickCount - copytime) / 1000)
min := floor(curcopytime/60)
sec := curcopytime - min*60
if(sec < 10)
{
        sec := "0" sec
}
Progress, , Идёт запись`r`n%min%:%sec%`r`nЖдите
Process, Exist, %DDpid%
If(%ErrorLevel% = 0)
{
        Sleep, 1000
        Progress, Off
        ExitApp
}
return

Если флешка имеет метку (label) DVRFLASHCF, то первый скрипт работает на полном автопилоте, а второй запрашивает название файла для записи. Если метки нет, то придётся еще указать букву диска, с которого читать иль на который писать.

KonTur 21.08.2009 12:00

Уже не помню точно, но не то на формуе mobile-dvr.ru не то в тел.разговоре с ребятами оттуда проскочила фраза, что корейцы чуть ли не готовы дать исходники программы.
Если это действительно так - то далее уже дело техники. В исходниках можно найти формат записи на карту памяти, найти прграммиста-энтузиаста, он и напишет вменяемый софт для этого аппарата.

Либо договорится с корейцами - пусть дадут денег нашему программеру для написания софта :)

ashu 21.08.2009 14:46

Кто будет договариваться? ;)


Часовой пояс GMT +4, время: 14:51.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot