Самый удобный и продвинутый вариант работы удаленно с VLC это интерфейс RC
запускаем vlc -I rc --rc-host localhost:4444 --rc-quiet
дальше можно подключаться telnet ом к данному порту и работать с vlc
единственное не нашел команды на always on top
просто проставил его в настройках плэера
вторник, 8 декабря 2009 г.
понедельник, 7 декабря 2009 г.
ruby, com port и отсутстиве клмпилятора
У нас во владении фирмы есть замечательные весы фирмы масса-м
Данные в программку вносились вручную. В наше высокотехнологичное время это уже не приемлемо.
Соответственно встала задача данные с весов считывать автоматически
Первым делом нам понадобится кабель. Где его купить я не нашел, но в инструкции неполохо расписано как его спаять
1. Берем клавиатуру и режем ей провод
2. Тоже самое проделываем с ком кабелем
3. Убераем оплетку
4. Прозвантваем провода - тыкаем в ножку и в провод мультиметров в режиме прозвонки
5. Выяснив соответсвие ножек и проводов, скручиваем их согласно схеме
кабель готов
Дальше задача получить данные
для этого надо 3 действия
1. Открыть нужный порт на запись
2. Установить режим работы
3. Установить таймауты
Долгое премя я не мог считать данные именно из-за последнего обстоятельства
Вот пример кода на руби:
@port = 'COM5'
system("mode #{@port}: BAUD=4800 PARITY=E data=8 stop=1 xon=off")
#DCB: 28 4800 1 0 0 0 0 0 512 520 4352 19 0 0 0 0 0 0 0 0
#DCB: 28 4800 1 0 0 0 0 0 512 520 4352 19 0 0 0 0 0 0 0 0
require 'dl/win32'
get_osfhandle = Win32API.new("msvcrt","_get_osfhandle", %w{i}, 'I')
setCommTimeouts = Win32API.new("kernel32", "SetCommTimeouts", %w{i p}, 'N')
getCommTimeouts = Win32API.new("kernel32", "GetCommTimeouts", %w{i p}, 'V')
getCommState = Win32API.new("kernel32", "GetCommState", %w{i p}, 'N')
setCommState = Win32API.new("kernel32", "SetCommState", %w{i p}, 'N')
$sp = File.open("\\\\.\\COM5","rb+")
$fn = $sp.fileno
$fh = get_osfhandle.call($fn)
# Get DCB; change any parameters that need fiddling; set DCB
dcb = "\0"*80
getCommState.call($fh,dcb)
dcb_u = dcb.unpack("L2B4B2B6B2BB17S3C8S")
printf("DCB:")
dcb_u.each {|v| printf(" %d",v)}
printf("\n")
dcb_u[1] = 4800 # Baud rate
dcb = dcb_u.pack("L2B4B2B6B2BB17S3C8S")
#puts setCommState.call($fh,dcb)
# Set the timeout array to the values TeraTerm uses
params = [1,1,1,1,0x1A4].pack('LLLLL')
puts setCommTimeouts.Call($fh,params)
start = Time.now
10000.times do
$sp.write(69.chr)
a = $sp.read(2)
res = 0
a = a.reverse
a.each_byte do |b|
res = res*0xFF
res += b
end
puts res
end
$sp.close
Данные в программку вносились вручную. В наше высокотехнологичное время это уже не приемлемо.
Соответственно встала задача данные с весов считывать автоматически
Первым делом нам понадобится кабель. Где его купить я не нашел, но в инструкции неполохо расписано как его спаять
1. Берем клавиатуру и режем ей провод
2. Тоже самое проделываем с ком кабелем
3. Убераем оплетку
4. Прозвантваем провода - тыкаем в ножку и в провод мультиметров в режиме прозвонки
5. Выяснив соответсвие ножек и проводов, скручиваем их согласно схеме
кабель готов
Дальше задача получить данные
для этого надо 3 действия
1. Открыть нужный порт на запись
2. Установить режим работы
3. Установить таймауты
Долгое премя я не мог считать данные именно из-за последнего обстоятельства
Вот пример кода на руби:
@port = 'COM5'
system("mode #{@port}: BAUD=4800 PARITY=E data=8 stop=1 xon=off")
#DCB: 28 4800 1 0 0 0 0 0 512 520 4352 19 0 0 0 0 0 0 0 0
#DCB: 28 4800 1 0 0 0 0 0 512 520 4352 19 0 0 0 0 0 0 0 0
require 'dl/win32'
get_osfhandle = Win32API.new("msvcrt","_get_osfhandle", %w{i}, 'I')
setCommTimeouts = Win32API.new("kernel32", "SetCommTimeouts", %w{i p}, 'N')
getCommTimeouts = Win32API.new("kernel32", "GetCommTimeouts", %w{i p}, 'V')
getCommState = Win32API.new("kernel32", "GetCommState", %w{i p}, 'N')
setCommState = Win32API.new("kernel32", "SetCommState", %w{i p}, 'N')
$sp = File.open("\\\\.\\COM5","rb+")
$fn = $sp.fileno
$fh = get_osfhandle.call($fn)
# Get DCB; change any parameters that need fiddling; set DCB
dcb = "\0"*80
getCommState.call($fh,dcb)
dcb_u = dcb.unpack("L2B4B2B6B2BB17S3C8S")
printf("DCB:")
dcb_u.each {|v| printf(" %d",v)}
printf("\n")
dcb_u[1] = 4800 # Baud rate
dcb = dcb_u.pack("L2B4B2B6B2BB17S3C8S")
#puts setCommState.call($fh,dcb)
# Set the timeout array to the values TeraTerm uses
params = [1,1,1,1,0x1A4].pack('LLLLL')
puts setCommTimeouts.Call($fh,params)
start = Time.now
10000.times do
$sp.write(69.chr)
a = $sp.read(2)
res = 0
a = a.reverse
a.each_byte do |b|
res = res*0xFF
res += b
end
puts res
end
$sp.close
воскресенье, 6 декабря 2009 г.
Оформить картинки в виде каталога
Я использую http://www.flashpageflip.com/FreeFPF.asp
получается просто отлично!
получается просто отлично!
суббота, 5 декабря 2009 г.
вторая жизнь фотоаппарата
Долгое время фотоаппарат canon cybershot a560 служил мне верой и правдой.
Потов в доме завелся canon EOS 450 и старичек занял свое место в ящике стола.
Но недавно судьба предоставила ему второй шанс
Я узнал про CHDK набор хакерских утилит для фотоаппаратов canon
Этот набор обещаят привнести значительные изменения в процесс съемки "мыльницей"
Чего только стоит живая гистограмма, брикетинг и даже - программирование фотоаппарата
Попробовать все это пока не удалось, но вот сам процесс прошития карты прошел весьма успешно по мануалу:
http://chdk.wikia.com/wiki/CHDK_for_Dummies
Потов в доме завелся canon EOS 450 и старичек занял свое место в ящике стола.
Но недавно судьба предоставила ему второй шанс
Я узнал про CHDK набор хакерских утилит для фотоаппаратов canon
Этот набор обещаят привнести значительные изменения в процесс съемки "мыльницей"
Чего только стоит живая гистограмма, брикетинг и даже - программирование фотоаппарата
Попробовать все это пока не удалось, но вот сам процесс прошития карты прошел весьма успешно по мануалу:
http://chdk.wikia.com/wiki/CHDK_for_Dummies
vlc http морда
Можно запустить так: vlc -I http --http-host 127.0.0.1:8080
и управлять vlc через http
это особенно приятно тем, что http легко генерируется программно
и управлять vlc через http
это особенно приятно тем, что http легко генерируется программно
vlc смотреть в полглаза
vlc.exe -f --random d:\test.mp4 d:\test2.mp4
-f полный экран
--random проигрывать в случайном порядке
иначе играет в порядке указывания
-f полный экран
--random проигрывать в случайном порядке
иначе играет в порядке указывания
воскресенье, 29 ноября 2009 г.
Как сканировать бумажные каталоги
взять dpi побольше
сосконировать
повернуть как нало
перейти в cmyk
сгладить каждый канал
слелать четкие границы
после этого будет менее заметно что это скан
далее наводим красоту
добавляем немного в сатурацию и контраст
сохраняем
если сканировать надо много то лучше все дествия записать в actions
тогда процесс пойдет заметно проще
сосконировать
повернуть как нало
перейти в cmyk
сгладить каждый канал
слелать четкие границы
после этого будет менее заметно что это скан
далее наводим красоту
добавляем немного в сатурацию и контраст
сохраняем
если сканировать надо много то лучше все дествия записать в actions
тогда процесс пойдет заметно проще
Подписаться на:
Сообщения (Atom)