Slide 1

Slide 1 text

ϋʔυ΢ΣΞରԠͷϦΞϧ !@DIPDPZBNB &CJTVNPCJMF

Slide 2

Slide 2 text

ࣗݾ঺հ w ͨ·Ͷ͗ʢ!@DIPDPZBNBʣ w 4503&4ϨδͷJ04ΞϓϦ։ൃ w ϋʔυ΢ΣΞରԠ͸ 
 ॳΊͯ΍Γ࢝Ί͔ͯΒd೥

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ w ϋʔυ΢ΣΞରԠͱ͸ʁ w ։ൃͷϦΞϧ w ӡ༻ͷϦΞϧ w ςΫϊϩδʔʹΑΔ՝୊ղܾ 
 
 ˞શମతʹJ04دΓͷ࿩ʹͳΓ·͢🙏

Slide 4

Slide 4 text

ϋʔυ΢ΣΞରԠͱ͸ʁ

Slide 5

Slide 5 text

ϝΠϯػͱ͸ผͷೖग़ྗ୺຤ͱ࿈ܞ͢ΔରԠ ܾࡁ୺຤ υϩΞʔ όʔίʔυεΩϟφʔ ΧελϚʔσΟεϓϨΠ #FBDPO ϚΠΫ εϐʔΧʔ ϖϯγϧ Ϛ΢ε ΩʔϘʔυ ΠϠϗϯ ೖྗ ग़ྗ ϓϦϯλʔ εϚʔτϑΥϯ୯ମͰ͸ ղܾͰ͖ͳ͍՝୊ʹϦʔνͰ͖Δ

Slide 6

Slide 6 text

4503&4ϨδͷରԠϋʔυ΢ΣΞͱػೳ όʔίʔυεΩϟφʔͰɺΞΠςϜΛΧʔτʹ௥Ճ ௥Ճͨ͠Χʔτͷ৘ใΛɺΧελϚʔσΟεϓϨΠʹ൓ө ܾࡁ୺຤ͰɺܾࡁॲཧΛ࣮ߦ ܾࡁ͕׬ྃͨ͠஫จͷϨγʔτΛɺϓϦϯλʔͰग़ྗ

Slide 7

Slide 7 text

ར༻͍ͯ͠Δٕज़ ୺຤ ར༻ٕज़ ܾࡁ୺຤ #MVFUPPUI ϓϦϯλʔ υϩΞʔ #MVFUPPUI όʔίʔυεΩϟφʔ #MVFUPPUI ΧελϚʔσΟεϓϨΠ 
 ʢεϚʔτϑΥϯʣ -PDBM/FUXPSL ղܾͰ͖Δ՝୊΋େ͖͍͕ɺ։ൃɾӡ༻ͷίετ΋େ͖͍

Slide 8

Slide 8 text

։ൃͷϦΞϧ

Slide 9

Slide 9 text

࣮૷ϋʔυϧ͕ߴ͍ w ୺຤ͱͷ࿈ܞ෦෼Ͱ 
 ௿ϨΠϠʔͳ࣮૷͕ඞཁ w ઀ଓ؅ཧɾ௨৴ॲཧͰͷ 
 ࡉ͔͍έΞ͕େม w ඇಉظॲཧ͕ଟ͘ɺ 
 ॲཧͷྲྀΕ͕௫ΈͮΒ͍ uint8_t *pos_papercut(cy_printer const printer, size_t *out_len) { if(printer & cy_paper_cut) { INIT_BUF(); size_t nl_len; uint8_t * const newlines = pos_cutter_newlines(printer, &nl_len); if(nl_len > 0) APPEND_BUF(newlines, nl_len); if(CY_PRINTER_TYPE(printer) == cy_sm_desktop_printer) APPEND_BUF_AUTO(POS_LM_CUTPAPER); else APPEND_BUF_AUTO(POS2_CUTPAPER); if(out_len) *out_len = BUF_LEN(); return BUF(); } else return pos_cutter_newlines(printer, out_len); } $ݴޠʹΑΔ࣮૷ίʔυ

Slide 10

Slide 10 text

ςετ͕ͮ͠Β͍ w ग़͕ࣾඞཁ w ࣗಈςετͰͷ୲อ͕ͮ͠Β͍ w 04ɾ୺຤όʔδϣϯ͚ͩͰͳ͘ɺ 
 ϝʔΧʔ΍ϋʔυ΢ΣΞछผͷ 
 ֻ͚߹Θͤ΋૿͑Δ

Slide 11

Slide 11 text

ӡ༻ͷϦΞϧ

Slide 12

Slide 12 text

༷ʑͳ؀ڥɾछྨ΁ͷରԠ͕େม w #MVFUPPUIͷׯব΍8J'JઃఆʹΑΔҟৗಈ࡞ w ϝʔΧʔ΍୺຤ʹґଘͨ͠ෆ۩߹ใࠂ w αϙʔτΛ੾ΓͮΒ͍

Slide 13

Slide 13 text

Ϋϥογϡ΍ෆ۩߹͕ൃੜ͠΍͍͢ w τοϓΫϥογϡ͸ϋʔυ΢ΣΞؔ࿈͕੮ר w ؆୯ʹݪҼΛಛఆͰ͖ͳ͍Ϋϥογϡϩά

Slide 14

Slide 14 text

ͭΒΈϙΠϯτ·ͱΊ w ࣮૷ɾอकͷϋʔυϧ͕ߴ͍ w ෆ۩߹͕ى͖΍͘͢୺຤ࠩ෼΋͋Δ w ςετίετ͕ߴࣗ͘ಈԽ΋ͮ͠Β͍ w αϙʔτΛ੾ΓͮΒ͍ ςΫϊϩδʔͰղܾ͠Α͏ʂ

Slide 15

Slide 15 text

࣮૷ɾอकͷϋʔυϧΛԼ͛ΔऔΓ૊Έ w ࣄྫɿඇಉظॲཧΛ4XJGU$PODVSSFODZͰ୯७Խ w ࣄྫɿυΩϡϝϯτཧղΛ$IBU(15Ͱߴ଎Խ w ࣄྫɿ۪௚ͳ࣮૷Λ3FTVMU#VJMEFSͰந৅Խ

Slide 16

Slide 16 text

ࣄྫɿඇಉظॲཧΛ4XJGU$PODVSSFODZͰ୯७Խ w ՝୊ w %FMFHBUF$PNQMFUJPO)BOEMFSϕʔεͷ࣮૷͕ଟ͍ w ඇಉظॲཧΛ࿈ଓͰߦ͏έʔε΋ଟ͍ w ίʔϧόοΫ஍ࠈʹͳΓɺॲཧϑϩʔ͕ಡΈऔΓͮΒ͍ w 5SZ w 4XJGU$PODVSSFODZΛ༻͍࣮ͨ૷ʹஔ͖׵͑ w ίʔυΛ୯७ʹ্͔ΒԼ΁ಡΉ͚ͩͰ͍͍ঢ়گʹվળ

Slide 17

Slide 17 text

detectPaperWidth { guard $0 != PaperWidth.unknown else { // Ϩγʔτ෯ͷऔಘʹࣦഊͨ͠৔߹ɺ1౓͚ͩϦτϥΠ͢Δ _ = detectPaperWidth { update(paperWidth: $0) } return } update(paperWidth: $0) } var paperWidth = await paperWidthDetector.getWidth() if paperWidth == .unknown { // Ϩγʔτ෯ͷऔಘʹࣦഊͨ͠৔߹ɺ1౓͚ͩϦτϥΠ͢Δ paperWidth = await paperWidthDetector.getWidth() } update(paperWidth: paperWidth) ωετ͕গͳ͘ɺॲཧͷྲྀΕ͕௫Έ΍͘͢ͳͬͨ $PNQMFUJPO)BOEMFS%FMFHBUF 4XJGU$PODVSSFODZ ˞ཁ఺ΛߜΔͨΊσϑΥϧϝͯ͠·͢ XJUI$IFDLFE$POUJOVBUJPOͰɺ 
 ڧ੍తʹ4XJGU$PODVSSFODZͷܗ΁

Slide 18

Slide 18 text

func getWidth() async -> PaperWidth { await withCheckedContinuation { (continuation: CheckedContinuation) in session.listen { inputStream, _ in var input: UInt8 = 0 let inputLength = inputStream.read(&input, maxLength: 4096) if inputLength > 0 { let paperWidth = getPaperWidth( printerModel: printerModel, fromResponseValue: Data(bytes: &input, count: inputLength).ex.toBytes() ) continuation.resume(returning: paperWidth) } } session.write(Data(bytes: cmd, count: cmdLength)) } } ֎͔Βݟͨ࣌͸BTZODBXBJUͷγϯϓϧͳ*' $PNQMFUJPO)BOEMFSϕʔεͷ۪௚ͳ࣮૷͸ ด͡ࠐΊͯந৅Խ͢Δ

Slide 19

Slide 19 text

let print = { printReceiptML(receiptML) _ = cutPaper() completion() } let supportedVariableWidth = (printerType & cy_variable_paper_width) != 0 if supportedVariableWidth { let continuePrint = { (width: PrinterWidth) in paperWidth = width print() } detectPaperWidth { guard $0 != PrinterWidth.unknown else { _ = detectPaperWidth { continuePrint($0) } return } continuePrint($0) } } else { print() } guard let activePrinter, let receipt = PaymentReceipt(order: order, store: store)?.build(), let image = try? await receipt.image( width: CGFloat(await activePrinter.receiptWidth()) ) else { return } activePrinter.printReceiptImage(image) ϨΨγʔͳ෦෼ΛϞμϯͳٕज़Ͱϥοϓ ҹ࡮໋ྩΛߦ͏ؔ਺ͷαϯϓϧ ॲཧͷྲྀΕ͕௥͍΍͘͢ͳΓɺίʔυͷ࡟ݮ΋Ͱ͖ͨ

Slide 20

Slide 20 text

ࣄྫɿυΩϡϝϯτཧղΛ$IBU(15Ͱߴ଎Խ ʮग़ྗ͞ΕΔ༻ࢴ෯ͷऔಘʯʹؔ͢ΔϓϦϯλʔͷެࣜυΩϡϝϯτ

Slide 21

Slide 21 text

ϋʔυ΢ΣΞؔ࿈ͷυΩϡϝϯτ w ՝୊ w ීஈࢀর͢Δ%PDͱ͸͔͚཭Εͨ಺༰ w αοͱཧղ͢Δʹ͸ϋʔυϧ͕ߴ͍ w ࣄྫ͕গͳ͘άάͬͯ΋ώοτͮ͠Β͍ w 5SZ w άάͬͯμϝͳΒδϐͬͯΈΑ͏

Slide 22

Slide 22 text

%PDͷҰ෦Λίϐϖͯ͠ ʮΑ͘Θ͔Βͳ͍ͷͰɺΘ͔ΔΑ͏ʹڭ͑ͯʯ ͬͯݴͬͯΈΔ ˠৄࡉͳղઆΛͯ͘͠ΕΔ $IBU(15ͷ׆༻

Slide 23

Slide 23 text

·ͩΑ͘Θ͔Βͳ͍ͷͰɺ υΩϡϝϯτʹهࡌͷͳ͍ύλʔϯΛྫʹ ࢓༷ͷཧղΛਂΊΑ͏ͱ͢Δ ˠ%PDͷΑ͏ʹҰൠԽͨ͠಺༰Ͱ͸ͳ͘ɺ 
 ʮ"ͷ৔߹ɺ#ʹͳΔʯͱ͍ͬͨ ۩ମతͳ࢓༷Λڭ͑ͯ͘ΕΔ

Slide 24

Slide 24 text

ˠ۩ମతͳظ଴݁ՌΛڭ͑ͯ͘ΕΔ ੩తͳ%PDͰ͸ෆՄೳͳΠϯλϥΫςΟϒͳ2"ʹΑΓɺ ཧղ͕ઙ͍෦෼Λ໌֬ʹ͠ͳ͕Β࢓༷Λ೺ѲͰ͖ͨ ࢓༷͕໌֬ʹͳͬͨͷͰɺ ࠓճͷϢʔεέʔεΛΠϯϓοτ͢Δ͜ͱͰ ͦͷ৔߹Ͳ͏ͳΔ͔Λฉ͘

Slide 25

Slide 25 text

ࣄྫɿ۪௚ͳ࣮૷Λ3FTVMU#VJMEFSͰந৅Խ 9.-จࣈྻͷੜ੒Λɺ4XJGU6*ͷΑ͏ͳ*'ͰͰ͖ΔΑ͏ʹͨ͠ SFGʲJ04%$ʳ෼ͰΘ͔Δʂ଎शSFTVMU#VJMEFS

Slide 26

Slide 26 text

·ͱΊ w ਖ਼௚ϋʔυ΢ΣΞରԠΛͯ͠ΔͱɺͭΒ͍ہ໘ʹ౓ʑͿ͔ͭΔ w ௿ϨΠϠʔͳ࣮૷΍ϨΨγʔͳ෦෼Λɺ 
 Ϟμϯͳٕज़Ͱิ׬Ͱ͖Δָ͕͋͠͞Δ w ιϑτ΢ΣΞ͚ͩͰ͸࣮ݱͰ͖ͳ͍ϢʔβʔମݧΛఏڙͰ͖Δ

Slide 27

Slide 27 text

େม͚ͩͲɺ ໘ന͞΋͋ΔΑʂ