Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.09.20;
Скачать: [xml.tar.bz2];

Вниз

Сжатие данных   Найти похожие ветки 

 
Kilkennycat ©   (2015-01-28 22:04) [40]

есть другие реальные примеры. одна компания выиграла тендер на установку и дальнейшее обслуживание пожарно-охранной сигнализации. Оборудование уже было закуплено. несколько тысяч штук.  Меня приглашали осмотреть и что-нить изобрести, потому что там хоть и был 3Г модем, работало все это мерзко, так разработчику оторвали руки и ноги и пришили не в том порядке, а мож и не пришили, ушами делал, а думать ваще нечем было. Новое оборудование еще раз никто не купит.
Меня приглашали и в другие конторы, где надо было модернизировать какую-нить хрень, потому что новую никто не купит.
Ну, мож в каких-то богатых регионах дела несколько иным образом устроены, но мой опыт показывает, что в большинстве случаев новое не купят.
И не потому, что не хотят.

> Kerk ©   (28.01.15 12:27) [35]
> Сколько, например, стоит пара сотен
> 3g-модемов?

если обычных усб-свистков, то 12-15 долларов за модем. итого примерно 170 тысяч рублей
если промышленные, то 50-100 долларов за модем. итого примерно миллион рублей.
мелочь. а расходы на переоборудование - да ими ваще можно пренебречь, людям за счастье переделать что-то.


 
DVM ©   (2015-01-28 22:42) [41]


> Труп Васи Доброго ©   (28.01.15 16:41) [39]

Я привел гипотетический пример того, когда может понадобится связь там, где нет сотовой сети. Таких мест больше чем ты думаешь. Метео-станции, мониторинг авто, жд транспорта и судов и т.д.

Теперь реальные примеры.

В настоящий момент я частично задействован в одном проекте, связанном с мониторингом состояния станций коррозионной защиты на газопроводах. Пилотный проект делается на Комсомольском ЛПУ (г. Югорск). Так вот, одним из важнейших параметров, которые надо мерять по всей длине трубы - скорость коррозии. Через некоторое расстояние к трубе грубо говоря подключены датчики, выходы которых выведены на небольшие столбики, которые расположены по всей длине трубы. Эти столбики были там еще при царе горохе, так что датчики вдоль трубы все же есть и всегда были. Кроме этого там можно замерить всякие потенциалы и прочее. Это оборудование пассивно в массе своей. В данный момент замеры производятся обходчиком, что крайне сложно и делается редко, т.к. расстояния огромны, а условия суровые. Ситуацию спасает то, что коррозионные процессы тоже не быстрые. Было принято решение автоматизировать процесс. Для этого на те же столбики устанавливаются контроллеры с очень малым энергопотреблением, снимающие показания и передающие по цепочке с некоторым резервированиям на станции катодной защиты, которые расположены далеко друг от друга. Предавать можно как по радио, так и по самой трубе. Сотовой связи там нет и не будет никогда. По поводу питания. Это конечно проблема. Нельзя сказать, что его там совсем нет. Станция коррозионной защиты подает на трубу и закопанный вдоль электрод весьма ощутимое напряжение - до 100 вольт. Конечно напряжение сильно падает с расстоянием, но 3-5 вольт всегда можно снять. Но это напряжение нестабильно. Поэтому дополнительно рассматриваются в данный момент разные схемы вплоть до солнечных батарей и т.д. Вот такие дела. А ты говоришь 3g модемы.

Из реальных примеров еще могу рассказать про мониторинг автотранспорта через ныне почившую спутниковую систему спейсчекер.


 
Pavia ©   (2015-01-28 23:22) [42]

Удалено модератором


 
Германн ©   (2015-01-29 01:53) [43]


> DVM ©   (28.01.15 12:03) [34]
>
>
> > Труп Васи Доброго ©   (28.01.15 10:16) [33]
>
>
> > Если уж у нас такая связь работает, то где её нет?
>
> Сотовая связь только в обжитых местах. Погляди на карту
> России в районе Сибири.

Почему обязательно Сибирь? Уже в Поволжье есть проблемы.


 
Германн ©   (2015-01-29 01:55) [44]

Удалено модератором


 
Германн ©   (2015-01-29 01:57) [45]


> Kilkennycat ©   (28.01.15 13:59) [37]
>
>
> > девайс должен работать строго от солнечной батареи. Не
> погубит
> > ли эту затею мощный модем?
>
> не погубит, в космосе спутники на таких батареях намного
> мощнее живут.

Конечно живут. Но за какие деньги!


 
SOFT_FOR_YOU ©   (2015-01-29 11:20) [46]

За основу берем либо текст, либо hex -> bin

Потом сжимаем. Лучше ZLib, если не получится, то например LZO. У меня валяется такая реализация, если процессор не x86 - можно искать исходники.

function lzo_compress(const Source; SourceSize: LongInt; const Dest; var DestSize: LongInt; var WorkBuf): LongInt; cdecl;
asm
 pop ebp
 lea eax, @dest + $2F0
 jmp eax
@dest:
 DD $83EC8B55,$5653E8C4,$C458B57,$308558B,$FC5589D0,$89F3C283,$458BF855,$F4458918,$8 B10558B
 DD $F08B0845,$3304C083,$8ADB33C9,$588A0348,$6E1C102,$DB33CB33,$8A05E1C1,$CB330158,$ E1C1DB33
 DD $33188A05,$C1D98BCB,$CB0305E1,$8105E9C1,$3FFFE1,$EC4D8900,$8BF44D8B,$C8BEC5D,$3B D98B99
 DD $7E72085D,$FB2BF88B,$85F07D89,$817376FF,$BFFFF07D,$6A770000,$F07D81,$76000008,$3 598A51
 DD $7403583A,$EC4D8B49,$7FFE181,$F1810000,$201F,$8BEC4D89,$5D8BF44D,$990C8BEC,$5D3B D98B
 DD $8B377208,$89FB2BF8,$FF85F07D,$7D812C76,$BFFFF0,$81237700,$800F07D,$A760000,$3A0 3598A
 DD $2740358,$8B6610EB,$183B6619,$598A0875,$2583A02,$4D8B1874,$EC5D8BF4,$40990489,$F F8453B
 DD $1D883,$FF25E900,$5D8BFFFF,$EC7D8BF4,$8BBB0489,$85DE2BD8,$89567EDB,$7D83E85D,$87 703E8
 DD $8E85D8A,$3AEBFE5A,$12E87D83,$5D8A0B77,$3EB80E8,$EB421A88,$E87D8B29,$420002C6,$8 112EF83
 DD $FFFF,$81127600,$FFEF,$2C600,$FFFF8142,$77000000,$88DF8BEE,$1E8A421A,$421A8846,$ 75E84DFF
 DD $3C083F5,$4003598A,$75FF583A,$4598A2D,$FF583A40,$598A2475,$583A4005,$8A1B75FF,$3 A400659
 DD $1275FF58,$4007598A,$75FF583A,$8598A09,$FF583A40,$8B487674,$81CE2BC8,$800F07D,$F 18B0000
 DD $4DFF2577,$49CE8BF0,$8A05E1C1,$E380F05D,$2E3C107,$A88CB0A,$F04D8B42,$8803E9C1,$F 2E9420A
 DD $81000000,$4000F07D,$13770000,$8BF04DFF,$2E980CE,$8820C980,$C1E9420A,$81000000,$ 4000F06D
 DD $4D8B0000,$81DE8BF0,$4000E1,$2EB8000,$800BE9C1,$CB0A10C9,$E9420A88,$9C,$83FC7D8B ,$2EB09C1
 DD $F83B4041,$198A0676,$F474183A,$CE2BC88B,$7D81F18B,$4000F0,$FF1E7700,$FE83F04D,$8 B0D7721
 DD $2E980CE,$8820C980,$64EB420A,$C621EE83,$EB422002,$F06D813C,$4000,$7709FE83,$F04D 8B1B
 DD $E181DE8B,$4000,$C102EB80,$C9800BE9,$88CB0A10,$34EB420A,$8B09EE83,$E181F04D,$400 0
 DD $800BE9C1,$A8810C9,$FFFE8142,$76000000,$FFEE8112,$C6000000,$81420002,$FFFE,$8BEE 7700
 DD $420A88CE,$80F04D8A,$E1C13FE1,$420A8802,$C1F04D8B,$A8806E9,$3BF08B42,$573F845,$F FFD52E9
 DD $10552BFF,$8914458B,$FC458B10,$5E5FC62B,$5DE58B5B,$909090C3,$53EC8B55,$758B5756, $C7D8B10
 DD $FF83DE8B,$8B04770D,$8B1BEBC7,$8B521855,$5351144D,$8458B57,$FCE6E850,$C483FFFF,$ 14558B14
 DD $C0851A03,$4D8B6676,$2BCF0308,$8BF33BC8,$3D1175F9,$EE,$D08B0A77,$8811C280,$3FEB4 313
 DD $7703F883,$FE430805,$F88335EB,$8B0A7712,$3E980C8,$EB430B88,$C6D08B26,$83430003,$ FA8112EA
 DD $FF,$EA811276,$FF,$430003C6,$FFFA81,$EE770000,$8A431388,$B88470F,$F7754843,$4311 03C6,$430003C6
 DD $430003C6,$458BDE2B,$33188914,$5B5E5FC0,$9090C35D
end;

function lzo_decompress(const src; srclen: LongInt; const dst; var dstlen: LongInt): LongInt; cdecl;
asm
 DB $51
 DD $458B5653,$C558B08,$F08BD003,$33FC5589,$144D8BD2,$68A1189,$3C10558B,$331C7611,$8 3C88AC9
 DD $8346EFC1,$820F04F9,$1C9,$8846068A,$75494202,$3366EBF7,$460E8AC9,$F10F983,$8D83, $75C98500,$8107EB18
 DD $FFC1,$3E804600,$33F47400,$83068AC0,$C8030FC0,$83068B46,$28904C6,$4904C283,$F983 2F74,$8B217204,$83028906
 DD $C68304C2,$4E98304,$7304F983,$76C985EE,$46068A14,$49420288,$9EBF775,$8846068A,$7 5494202,$8AC933F7
 DD $F983460E,$C12B7310,$828D02E9,$FFFFF7FF,$C933C12B,$C1460E8A,$C12B02E1,$8840088A, $88A420A,$420A8840
 DD $288008A,$113E942,$F9830000,$8B207240,$FF428DD9,$8302EBC1,$C32B07E3,$1E8ADB33,$3 E3C146,$2B05E9C1
 DD $D9E949C3,$83000000,$2F7220F9,$851FE183,$EB1875C9,$FFC18107,$46000000,$74003E80, $8AC033F4,$1FC08306
 DD $F46C803,$FBC11EB7,$FF428D02,$C683C32B,$8369EB02,$457210F9,$D98BC28B,$C108E383,$ C32B0BE3,$8507E183
 DD $EB1875C9,$FFC18107,$46000000,$74003E80,$8ADB33F4,$7C3831E,$F46CB03,$FBC11EB7,$8 3C32B02,$D03B02C6
 DD $9A840F,$2D0000,$EB000040,$2E9C11F,$2BFF428D,$8AC933C1,$E1C1460E,$8AC12B02,$A884 008,$88008A42
 DD $51EB4202,$7206F983,$2BDA8B37,$4FB83D8,$188B2E7C,$8904C083,$4C2831A,$8B02E983,$8 31A8918,$C08304C2
 DD $4E98304,$7304F983,$76C985EE,$40188A20,$49421A88,$15EBF775,$8840188A,$188A421A,$ 421A8840,$8840188A
 DD $7549421A,$8AC933F7,$E183FE4E,$FC98503,$FFFE4284,$46068AFF,$49420288,$C933F775,$ E9460E8A,$FFFFFECA
 DD $8B10552B,$10891445,$75FC753B,$EBC03304,$FFF8B80D,$753BFFFF,$830372FC,$5B5E04C0, $90C35D59
end;
             
procedure LzoCompress(const inBuf: pointer; const inBytes: integer; out outBuf: pointer; out outBytes: integer);
var
 WorkBuf: array[word] of byte;
begin
 outBytes := inBytes + ((inBytes div 1024) + 1) * 16;
 GetMem(outBuf, outBytes);
   lzo_compress(inBuf^, inBytes, outBuf^, outBytes, WorkBuf);
 ReallocMem(outBuf, outBytes);
end;

procedure LzoDecompress(const Source: Pointer; SourceSize: integer; const Dest: pointer; var DestSize: integer);
begin
 lzo_decompress(Source^, SourceSize, Dest^, DestSize);
end;


Ну а в результате отправляем Base64


 
Sha ©   (2015-01-29 12:05) [47]

> Ну а в результате отправляем Base64

почему не Base85?


 
Kerk ©   (2015-01-29 12:10) [48]


> SOFT_FOR_YOU ©   (29.01.15 11:20) [46]

Я как раз думал о ZLib. Вчера как раз об этом говорил об этом с людьми, которые делают принимающая часть. Сжать-то я смогу - твоим кодом или каким-нибудь другим - а разжать "приемник" не сможет, по их словам они не нашли для своей платформы никаких библиотек для архивации/разархивации. Может обманывают, не знаю. Остановлюсь в итоге на перекодировке в BaseКакоеНибудьЧисло, думаю.


 
Kerk ©   (2015-01-29 12:11) [49]


> Труп Васи Доброго ©   (28.01.15 16:41) [39]
> И главное - данные в строке сильно меняются?

Сеансы не частые - раз в несколько часов максимум. Но данные в строке могут совершенно произвольно меняться, так что передать только изменение не выйдет.


 
Kerk ©   (2015-01-29 12:14) [50]


> Kilkennycat ©   (28.01.15 22:04) [40]
> мелочь. а расходы на переоборудование - да ими ваще можно
> пренебречь, людям за счастье переделать что-то.

Вот ты интересный человек. Сам абзацем выше пишешь, что по твоему опыту никто новое не купит. Вот и приходится жить с тем, что есть.

Можно конечно занять позицию "вы все дураки и не лечитесь, а я тут весь в белом стою... пока не поменяете железо, софт писать не буду!". Но боюсь, это плохо для меня кончится :)

Разговор уже куда-то не в ту степь ушел :)


 
SOFT_FOR_YOU ©   (2015-01-29 12:14) [51]

> Kerk ©   (29.01.15 12:10) [48]

Если ты сжимаешь текст - то словарная компрессия может дать профит x10
А по поводу принимающей стороны... Нужно просто найти исходники LZO_Decompress и реализовать на том языке, который им доступен. Видишь - какая компактная реализация. Мне сказали, что это откомпилированный C-код


 
Kilkennycat ©   (2015-01-29 12:59) [52]


> Kerk ©   (29.01.15 12:14) [50]
> Вот ты интересный человек.

ниже было с сарказмом :) или иронией - никогда не знал значений этих.

а что за платформа у девайса?


> реализовать на том языке, который им доступен. Видишь -
> какая компактная реализация. Мне сказали, что это откомпилированный
> C-код

не читал историю про нехватку 1 байта? мож у них там PIC10F200 - 384 байта флэша.


 
кгшзх ©   (2015-01-29 13:11) [53]

паставьте на той (слабой) стороне прокси перед пик"ом
он и будет входящее расжимать а исходящее жамкать.


 
Kilkennycat ©   (2015-01-29 17:50) [54]


> кгшзх ©   (29.01.15 13:11) [53]
>

кстати, да.

и это устройство довольно-таки простое, я даже готов произвести две-три сотни штук, при такой партии выйдет не дороже 300 рублей за штуку и полная гибкость в передаче информации.


 
Kilkennycat ©   (2015-01-29 19:55) [55]

посчитал немного: бескорпусно по i2c (принятое отдается новому мк, он преобразует и возвращает) стоимость 130 рублей.
аппаратная модернизация 200 устройств обойдется в 26 000 руб, плюс расходы на то, что кому-то  надо вставить платку размером 10х15 мм в устройство и припаять 4 провода...  
дорогова-то все же, чем только программное решение


 
Sha ©   (2015-01-30 09:21) [56]

> Kerk ©   (29.01.15 12:10) [48]
> Остановлюсь в итоге на перекодировке в BaseКакоеНибудьЧисло, думаю.

Подумай еще немного )
Вчера нашел-таки среди своих старых завалов одну из Basе-кодировок. Скоро причешу и выложу в общий доступ.
Должна получиться удобной и быстрой.


 
KSergey ©   (2015-01-30 10:08) [57]

Тут бы провести эксперимент, показывающий процент потерь данных и их характер.
Если при проблемах теряются пакеты целиком или в битых пакетах по факту портится обычно бы 30..40% информации - то не важно как скодировать, но пакеты дешевле перепосылать целиком.

А если обычно в битых пакетах искажаются лишь отдельные биты - то наверное будет предпочтительнее коды с коррекцией данных. (тут, правда, опять надо смотреть характер: одно дело несколько разбросанных по всей длине пакета битов исказилось - тогда коррекция спасает, другое дело кучно исказились рядомстоящие - тогда коррекция не спасёт ну или предварительно надо логически радомстоящие раскидывать по длине, что усложняет)

Речь просто о статистике, которую надо репрезентативно собрать, конечно. Потому что просто слова "ненадёжный канал" - они так скажем мало о чем.

Сами алгоритмы кодирования/декодирования в любом случае весьма простые будут, непременно заморачиваться какими-то там библиотеками - смысла особого нет, по-моему, раз уж мы о реализации передачи на таком низком уровне говорим.


 
Дмитрий С ©   (2015-01-30 10:17) [58]


> Kilkennycat ©   (29.01.15 19:55) [55]

Неужели платка будет стоить 130 в итоге?


 
Kilkennycat ©   (2015-01-30 10:52) [59]


> Дмитрий С ©   (30.01.15 10:17) [58]

да, немного дороговато, но я же тоже должен что-то заработать.


 
brother ©   (2015-01-30 11:25) [60]

а чистая цена сколько?)


 
Kilkennycat ©   (2015-01-30 11:49) [61]


> brother ©   (30.01.15 11:25) [60]

STM8S003F3P6 - 33 рубля
кварц - 30 рублей
кучка резисторов и кондюков - 1 рубль
плата от 10 до 20 рублей (в зависимости от сроков)
пайка ручная 1,5 рубля за точку - около 30 рублей

итого от 103 до 113 руб. + 10% на прибыль и расходы на доставку


 
brother ©   (2015-01-30 11:55) [62]

Удалено модератором


 
KSergey ©   (2015-01-31 12:43) [63]

> Kilkennycat ©   (30.01.15 11:49) [61]

Это о какой партии речь?


 
Inovet ©   (2015-01-31 14:15) [64]

> [61] Kilkennycat ©   (30.01.15 11:49)
> пайка ручная 1,5 рубля за точку

Ручная дешевле или партия мала для автоматической?


 
Kilkennycat ©   (2015-01-31 14:48) [65]


> KSergey ©   (31.01.15 12:43) [63]

200 штук


> Inovet ©   (31.01.15 14:15) [64]

ручная дороже.
примерный список цен ручной пайки:
Количество точек пайки в заказе Цена монтажа за точку пайки
0 - 500                                        3,00
501 - 1 000                                  2,50
1 001 - 5 000                                2,00
5 001 - 10 000                               1,50
10 001 - 100 000                            0,80
Более 100 000 по запросу

я беру 1.5, так как брать 3 - очень дорого выходит.

для автоматической мала не партия, а стоимость.
цена пайки автоматической:

Количество точек пайки в заказе Цена монтажа за точку пайки
30 000 - 50 000                            0,50
50 001 - 100 000                          0,35
100 001 - 250 000                          0,25
250 001 - 700 000                         0,18
700 001 - 1 000 000                     0,15

но: подготовка производства для каждой стороны платы может составить 15000 рублей.


 
Kilkennycat ©   (2015-01-31 14:50) [66]

вот и получается, что если при ручном монтаже стоимость 200 штук 26000 руб, то с автоматическим получится в два раза дороже.


 
Inovet ©   (2015-01-31 16:56) [67]

> [66] Kilkennycat ©   (31.01.15 14:50)

Таки, партия мала, выходит.


 
Kilkennycat ©   (2015-01-31 17:16) [68]


> Inovet ©   (31.01.15 16:56) [67]

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


 
Inovet ©   (2015-01-31 18:06) [69]

Удалено модератором


 
Kilkennycat ©   (2015-01-31 18:45) [70]

Удалено модератором


 
Sha ©   (2015-02-01 22:05) [71]

вот тут не дал потеряться еще одной Base-кодировке:

http://guildalfa.ru/alsha/node/30



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2015.09.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.003 c
2-1398678838
Николька
2014-04-28 13:53
2015.09.20
Firebird SQL error code = -104


15-1423300267
Rouse_
2015-02-07 12:11
2015.09.20
Интересный таки нюанс с инлайн асмом в MS VC++ 2010


15-1421926934
Kerk
2015-01-22 14:42
2015.09.20
Вакансия


15-1421430223
ВладОшин
2015-01-16 20:43
2015.09.20
как автоматически менять пароль аккаунта гугл?


15-1422999005
Юрий
2015-02-04 00:30
2015.09.20
С днем рождения ! 4 февраля 2015 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский