extface 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b4af1253c55c88d821b794698c562d77438ea05
|
4
|
+
data.tar.gz: 65742b57205bea9b06f7ab0d3ad0143412437880
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8facf9db5877c6102d22da94fe1fb4631af1835558fd0f573c1df81fd329fe52e12c5b4368191fad8e6e59e4f65f3369372a64069bd8048f0afb6806c7a63d7e
|
7
|
+
data.tar.gz: 078de35e90e207440b1ece29bf390848663f8078d3180f1f19bb75e00e948d2d9e50567c423c3e708c0088b543520be52900160a1971da667d2231ef33a57bbc
|
@@ -73,9 +73,9 @@ module Extface
|
|
73
73
|
while data
|
74
74
|
response.stream.write data
|
75
75
|
r.publish(job.id, "OK")
|
76
|
-
if (Time.now - start) >
|
77
|
-
p "Will continue next time"
|
78
|
-
|
76
|
+
if (Time.now - start) > 1.8.seconds
|
77
|
+
p "############ Will continue next time"
|
78
|
+
break
|
79
79
|
end
|
80
80
|
list, data = r.blpop(job.id, timeout: 1)
|
81
81
|
end
|
@@ -18,7 +18,8 @@ module Extface
|
|
18
18
|
REPORT = false #only transmit data that must be parsed by handler, CDR, report devices
|
19
19
|
|
20
20
|
RESPONSE_TIMEOUT = 3 #seconds
|
21
|
-
INVALID_FRAME_RETRIES = 6 #
|
21
|
+
INVALID_FRAME_RETRIES = 6 #count
|
22
|
+
BUSY_WAIT_CYCLES = 12 #count
|
22
23
|
|
23
24
|
FLAG_TRUE = "\xff\xff"
|
24
25
|
FLAG_FALSE = "\x00\x00"
|
@@ -33,33 +34,36 @@ module Extface
|
|
33
34
|
len = frame_match.captures.first.ord
|
34
35
|
skip = frame_match.pre_match.length
|
35
36
|
bytes_processed = skip + 7 + len # 6 pre + 1 check sum
|
36
|
-
|
37
|
+
if bytes_processed <= buffer.length #packet in buffer
|
38
|
+
rpush buffer[skip..bytes_processed]
|
39
|
+
else
|
40
|
+
bytes_processed = skip #not whole packet, just remove trail
|
41
|
+
end
|
37
42
|
end
|
38
43
|
return bytes_processed
|
39
44
|
end
|
40
45
|
|
41
46
|
def open_receipt(variant = nil)
|
42
47
|
fsend Receipt::OPEN_RECEIPT
|
43
|
-
status = printer_status!
|
44
48
|
unless variant.blank?
|
45
49
|
fsend Receipt::PRINT_RECEIPT, variant
|
46
|
-
status = printer_status!
|
47
50
|
end
|
51
|
+
status = get_printer_status
|
48
52
|
end
|
49
53
|
|
50
54
|
def close_receipt
|
51
55
|
fsend Receipt::CLOSE_RECEIPT
|
52
|
-
status =
|
56
|
+
status = get_printer_status
|
53
57
|
end
|
54
58
|
|
55
59
|
def send_comment(text)
|
56
60
|
fsend Receipt::PRINT_RECEIPT, Receipt::Variant::COMMENT + text
|
57
|
-
status =
|
61
|
+
status = get_printer_status
|
58
62
|
end
|
59
63
|
|
60
64
|
def send_plu(plu_data)
|
61
65
|
fsend Receipt::PRINT_RECEIPT, Receipt::Variant::PLU + plu_data
|
62
|
-
status =
|
66
|
+
status = get_printer_status
|
63
67
|
end
|
64
68
|
|
65
69
|
def send_payment(type_num = 0, value = nil) # 0, 1, 2, 3
|
@@ -70,6 +74,7 @@ module Extface
|
|
70
74
|
4.times{ |shift| value_bytes.insert 0, ((value_units >> shift*8) & 0xff).chr }
|
71
75
|
end
|
72
76
|
fsend Receipt::PRINT_RECEIPT, "" << (9 + type_num).chr << value_bytes
|
77
|
+
status = get_printer_status
|
73
78
|
end
|
74
79
|
|
75
80
|
def non_fiscal_test
|
@@ -129,40 +134,45 @@ module Extface
|
|
129
134
|
device.session("Z Report") do |s|
|
130
135
|
s.notify "Z Report Start"
|
131
136
|
s.fsend Reports::DAILY_REPORT, FLAG_TRUE
|
132
|
-
status = s.
|
137
|
+
status = s.get_printer_status
|
133
138
|
s.notify "Z Report End"
|
134
139
|
end
|
135
140
|
end
|
136
141
|
|
137
142
|
def x_report_session
|
138
143
|
device.session("Z Report") do |s|
|
139
|
-
s.notify "
|
144
|
+
s.notify "X Report Start"
|
140
145
|
s.fsend Reports::DAILY_REPORT, FLAG_FALSE
|
141
|
-
status = s.
|
142
|
-
s.notify "
|
146
|
+
status = s.get_printer_status
|
147
|
+
s.notify "X Report End"
|
143
148
|
end
|
144
149
|
end
|
145
150
|
|
146
151
|
def cancel_doc_session
|
147
152
|
device.session("Doc cancel") do |s|
|
148
153
|
s.notify "Doc Cancel Start"
|
149
|
-
#
|
154
|
+
# cancel old one by open/close new one
|
155
|
+
s.open_receipt
|
156
|
+
s.close_receipt
|
150
157
|
s.notify "Doc Cancel End"
|
151
158
|
end
|
152
159
|
end
|
153
160
|
|
154
|
-
|
155
|
-
def printer_status!
|
161
|
+
def check_ready!
|
156
162
|
fsend Info::GET_STATUS
|
157
163
|
raise errors.full_messages.join(", ") if errors.any?
|
158
|
-
|
159
|
-
|
160
|
-
|
164
|
+
end
|
165
|
+
|
166
|
+
def get_printer_status
|
167
|
+
PrinterStatus.new(fsend(Info::GET_PRINTER_STATUS))
|
161
168
|
end
|
162
169
|
|
163
170
|
def check_status
|
164
171
|
flush
|
165
|
-
|
172
|
+
status = get_printer_status
|
173
|
+
#TODO check for:
|
174
|
+
#1. sold PLUs dangerously high -> solution PLU Report (0x32)
|
175
|
+
#2. open bon and transaction count
|
166
176
|
errors.empty?
|
167
177
|
end
|
168
178
|
|
@@ -181,6 +191,12 @@ module Extface
|
|
181
191
|
def fsend(cmd, data = "") #return data or nil
|
182
192
|
packet_data = build_packet(cmd, data)
|
183
193
|
result = false
|
194
|
+
BUSY_WAIT_CYCLES.times do |retries|
|
195
|
+
push build_packet(Info::GET_STATUS)
|
196
|
+
if status = frecv(RESPONSE_TIMEOUT)
|
197
|
+
break if status.ready?
|
198
|
+
end
|
199
|
+
end
|
184
200
|
INVALID_FRAME_RETRIES.times do |retries|
|
185
201
|
errors.clear
|
186
202
|
push packet_data
|
@@ -244,6 +260,10 @@ module Extface
|
|
244
260
|
@ready || true
|
245
261
|
end
|
246
262
|
|
263
|
+
def busy?
|
264
|
+
!ready?
|
265
|
+
end
|
266
|
+
|
247
267
|
private
|
248
268
|
def check_sum_validation
|
249
269
|
sum = 0
|
@@ -317,42 +337,55 @@ module Extface
|
|
317
337
|
class PrinterStatus
|
318
338
|
|
319
339
|
def initialize(status)
|
340
|
+
@status = status
|
320
341
|
end
|
321
342
|
|
322
343
|
def start_bon_flag?
|
344
|
+
@status[2,2] == "\xff\xff"
|
323
345
|
end
|
324
346
|
|
325
347
|
def end_bon_flag?
|
348
|
+
@status[4,2] == "\xff\xff"
|
326
349
|
end
|
327
350
|
|
328
351
|
def last_transaction
|
352
|
+
@status[8,2]
|
329
353
|
end
|
330
|
-
|
354
|
+
|
331
355
|
def transaction_count
|
356
|
+
@status[10,2]
|
332
357
|
end
|
333
358
|
|
334
359
|
def last_transaction_sum
|
360
|
+
@status[12,4]
|
335
361
|
end
|
336
362
|
|
337
363
|
def all_transaction_sum
|
364
|
+
@status[16,4]
|
338
365
|
end
|
339
366
|
|
340
367
|
def total_sum
|
368
|
+
@status[20,4]
|
341
369
|
end
|
342
370
|
|
343
371
|
def stl_discount_flag?
|
372
|
+
@status[24,2] == '\xff\xff'
|
344
373
|
end
|
345
374
|
|
346
375
|
def last_recept_number
|
376
|
+
@status[26,2]
|
347
377
|
end
|
348
378
|
|
349
379
|
def last_invoice_number
|
380
|
+
@status[34,2] + @status[28,4]
|
350
381
|
end
|
351
382
|
|
352
383
|
def available_invoice_numbers
|
384
|
+
@status[36,2]
|
353
385
|
end
|
354
386
|
|
355
387
|
def plu_count_in_memory
|
388
|
+
@status[32,2]
|
356
389
|
end
|
357
390
|
end
|
358
391
|
end
|
data/lib/extface/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extface
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Vangelov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|