Форум: "Прочее";
Текущий архив: 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