Вверх ↑
Ответов: 289
Рейтинг: 1
#1: 2026-05-17 19:01:37 ЛС | профиль | цитата
Леонид писал(а):
Gitarist писал(а):
мелкий QR получается
Исключительно на элементах, не быстро, На IC было бы гораздо проворнее
Схемка

Спасибо, Леонид, сейчас прикручу к той схеме, оставлю только X2. Этого вполне хватает. Выглядит громоздко, пугающе, но справимся )))))

Красота)


Add(SimpleForm,2953706,329,168)
{
Width=557
Height=315
Caption="QR-Encoder demo"
}
Add(Image,1581791,966,427)
{
Left=315
Top=60
Width=180
Height=180
link(Bitmap,3077523:Var2,[])
}
Add(Hub,5804947,518,273)
{
link(onEvent1,6363003:doEvent1,[])
link(onEvent2,3057039:doFor,[(560,286)(560,433)])
}
Add(Bitmap,6724895,735,273)
{
Point(Width)
Point(Height)
}
Add(Bitmap,14598734,966,322)
{
FillColor=16777215
Point(doCreate)
Point(HWidth)
Point(HHeight)
link(HWidth,15456691:Result,[(972,313)(909,313)(909,383)(811,383)])
link(HHeight,13135467:Result,[(979,306)(902,306)(902,376)(867,376)])
}
Add(Hub,6363003,686,273)
{
link(onEvent1,6724895:doLoad,[])
link(onEvent2,15456691:doOperation,[(723,286)(723,342)])
}
Add(Math,15456691,805,336)
{
OpType=2
Op2=2
ResultType=0
link(onResult,13135467:doOperation,[])
link(Op1,1042652:Var3,[(811,321)])
}
Add(Math,13135467,861,336)
{
OpType=2
Op2=2
ResultType=0
link(onResult,12594756:doEvent1,[])
link(Op1,13936152:Var3,[(867,313)])
}
Add(Hub,12594756,917,336)
{
link(onEvent1,14598734:doCreate,[])
link(onEvent2,2527139:doWork1,[(951,349)])
}
Add(For,3057039,609,427)
{
IncludeEnd=1
link(onEvent,498296:doFor,[])
link(onStop,2527139:doWork2,[(655,440)(655,405)(893,405)(893,433)])
link(End,13936152:Var1,[(622,313)])
}
Add(GetDataEx,13936152,749,308)
{
link(Data,6724895:Height,[])
}
Add(For,498296,679,427)
{
IncludeEnd=1
link(onEvent,15543140:doGetPixel,[])
link(End,1042652:Var1,[(692,321)])
}
Add(GetDataEx,1042652,742,316)
{
link(Data,6724895:Width,[])
}
Add(Img_GetPoint,15543140,735,427)
{
link(onGetPixel,11778147:doFor,[])
link(Bitmap,6724895:Bitmap,[])
link(X,1391026:Var3,[(748,418)(720,418)(720,467)])
link(Y,15332727:Var3,[(755,411)(668,411)(668,467)])
}
Add(For,11778147,777,427)
{
End=2
IncludeEnd=1
link(onEvent,3920888:doFor,[])
}
Add(For,3920888,833,427)
{
End=2
IncludeEnd=1
link(onEvent,884357:doCalc,[(879,433)(879,468)(760,468)(760,510)])
}
Add(MathParse,884357,770,504)
{
MathStr="%1*2+%2"
ResultType=0
link(onResult,15206011:doCalc,[])
link(X1,15332727:Var2,[(776,488)(615,488)])
link(X2,11778147:Position,[])
}
Add(MathParse,15206011,826,504)
{
MathStr="%1*2+%2"
ResultType=0
link(onResult,5812558:doDraw,[])
link(X1,1391026:Var2,[(832,481)(685,481)])
link(X2,3920888:Position,[])
}
Add(GetDataEx,15332727,609,462)
{
link(Data,3057039:Position,[])
}
Add(GetDataEx,1391026,679,462)
{
link(Data,498296:Position,[])
}
Add(Img_Point,5812558,882,504)
{
Point(X)
Point(Y)
Point(Color)
link(Bitmap,3077523:Var1,[(888,397)])
link(X,15206011:Result,[(895,488)(867,488)(867,544)(832,544)])
link(Y,884357:Result,[(902,495)(874,495)(874,551)(776,551)])
link(Color,15543140:Color,[(909,474)(741,474)])
}
Add(GetDataEx,3077523,966,392)
{
link(Data,14598734:Bitmap,[])
}
Add(HubEx,2527139,947,427)
{
link(onEvent,1581791:doLoad,[])
}
Add(InlineCode,1093476,455,273)
{
WorkPoints=#10:doCreateQR|
EventPoints=#8:onCreate|7:onWidth|8:onHeight|
DataPoints=#7:strCode|11:idxEncoding|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,QRCoder;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|27: QRCodeBitmap: PBitmap;|9: public|13: onCreate,|12: onWidth,|13: onHeight,|12: strCode,|27: idxEncoding: THI_Event;|51: procedure doCreateQR(var dt: TData; idx: word);|5: end;|0:|14:implementation|0:|33:procedure THiAsmClass.doCreateQR;|3:var|19: QRCode: TQRCoder;|23: Row, Column: Integer;|5:begin|35: QRCodeBitmap := NewBitmap(50,50);|28: QRCode := TQRCoder.Create;|5: try|45: QRCode.Data := ReadString(dt,strCode,'');|70: QRCode.Encoding := TQRCodeEncoding(ReadInteger(dt,idxEncoding,0));|35: QRCode.QuietZone := 1; //бордюр|38: QRCodeBitmap.Width := QRCode.Rows;|42: QRCodeBitmap.Height := QRCode.Columns;|37: _hi_onEvent(onWidth,QRCode.Rows);|42: _hi_onEvent(onHeight,QRCode.Columns); |38: for Row := 0 to QRCode.Rows - 1 do|9: begin|46: for Column := 0 to QRCode.Columns - 1 do|11: begin|45: if (QRCode.IsBlack[Row, Column]) then|13: begin|61: QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack;|16: end else|13: begin|61: QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;|12: end;|10: end;|8: end;|9: finally|39: _hi_onEvent(onCreate,QRCodeBitmap);|16: QRCode.Free;|22: QRCodeBitmap.Free;|6: end;|4:end;|0:|0:|0:|4:end.|
link(onCreate,5804947:doEvent1,[])
link(strCode,3570647:Text,[])
link(idxEncoding,10680397:Index,[])
}
Add(Button,11129552,378,273)
{
Left=165
Top=10
Width=75
Caption="ToQR code"
link(onClick,1093476:doCreateQR,[])
}
Add(ComboBox,10680397,448,133)
{
Left=15
Top=10
Width=135
Height=21
Strings=#4:Auto|7:Numeric|12:Alphanumeric|10:ISO-8859-1|17:UTF-8 without BOM|14:UTF-8 with BOM|
Text="Выбрать!"
Point(Index)
Point(doSelect)
}
Add(Memo,3570647,455,210)
{
Left=80
Top=60
Width=175
Height=180
Strings=#8:31231231|2:13|3:123|14:asddasdasdasda|5:12312|16:3123123123123123|
}
Add(Timer,4975733,399,161)
{
Interval=100
AutoStop=1
link(onTimer,10680397:doSelect,[])
}

[/spoiler]
карма: 1

0
Редактировалось 2 раз(а), последний 2026-05-17 19:19:17