76 |
|
|
77 |
//generate reply |
//generate reply |
78 |
m_buffer[0] = 0x01; //Ack; |
m_buffer[0] = 0x01; //Ack; |
79 |
m_buffer[1] = tmpprice<<24; |
m_buffer[1] = tmpprice>>24; |
80 |
m_buffer[2] = tmpprice<<16; |
m_buffer[2] = tmpprice>>16; |
81 |
m_buffer[3] = tmpprice<<8; |
m_buffer[3] = tmpprice>>8; |
82 |
m_buffer[4] = tmpprice; |
m_buffer[4] = tmpprice; |
83 |
m_buffer[5] = litem.item.description.GetLength(); |
m_buffer[5] = litem.item.description.GetLength(); |
84 |
|
|
102 |
//Id 2 |
//Id 2 |
103 |
void TerminalSocket::RequestTotalPackage() |
void TerminalSocket::RequestTotalPackage() |
104 |
{ |
{ |
105 |
|
m_total = 0; |
106 |
for (unsigned int i=0; i<m_items.size(); i++) |
for (unsigned int i=0; i<m_items.size(); i++) |
107 |
{ |
{ |
108 |
m_total += m_items[i].item.price * m_items[i].count; |
m_total += m_items[i].item.price * m_items[i].count; |
110 |
|
|
111 |
unsigned tmpprice = (unsigned) m_total*100; |
unsigned tmpprice = (unsigned) m_total*100; |
112 |
m_buffer[0] = 0x01; //ack |
m_buffer[0] = 0x01; //ack |
113 |
m_buffer[1] = tmpprice<<24; |
m_buffer[1] = tmpprice>>24; |
114 |
m_buffer[2] = tmpprice<<16; |
m_buffer[2] = tmpprice>>16; |
115 |
m_buffer[3] = tmpprice<<8; |
m_buffer[3] = tmpprice>>8; |
116 |
m_buffer[4] = tmpprice; |
m_buffer[4] = tmpprice; |
117 |
|
|
118 |
Send(m_buffer, 5); |
Send(m_buffer, 5); |
119 |
|
|
120 |
|
m_message.Format("Total requested - returning %.2f", m_total); |
121 |
} |
} |
122 |
|
|
123 |
//Id 3 |
//Id 3 |
124 |
void TerminalSocket::RequestChangePackage() |
void TerminalSocket::RequestChangePackage() |
125 |
{ |
{ |
126 |
unsigned amount = m_buffer[1]>>24 + m_buffer[2]>>16 + m_buffer[3]>>8 + m_buffer[4]; |
unsigned amount = (m_buffer[1]<<24) + (m_buffer[2]<<16) + (m_buffer[3]<<8) + m_buffer[4]; |
127 |
unsigned tmpprice = (unsigned) m_total; |
unsigned tmpprice = (unsigned) m_total*100; |
128 |
unsigned change = amount - tmpprice; |
unsigned change = amount - tmpprice; |
129 |
|
|
130 |
m_buffer[0] = 0x01; //ack |
m_buffer[0] = 0x01; //ack |
131 |
m_buffer[1] = change<<24; |
m_buffer[1] = change>>24; |
132 |
m_buffer[2] = change<<16; |
m_buffer[2] = change>>16; |
133 |
m_buffer[3] = change<<8; |
m_buffer[3] = change>>8; |
134 |
m_buffer[4] = change; |
m_buffer[4] = change; |
135 |
|
|
136 |
Send(m_buffer, 5); |
Send(m_buffer, 5); |
137 |
|
|
138 |
|
m_message.Format( "Request change (0x03) recieved %.2f -> returning %.2f", amount/100.0, change/100.0); |
139 |
} |
} |
140 |
|
|
141 |
//Id 4 |
//Id 4 |
144 |
char ack = 0x01; |
char ack = 0x01; |
145 |
m_items.pop_back(); |
m_items.pop_back(); |
146 |
Send(&ack,1); |
Send(&ack,1); |
147 |
|
|
148 |
|
m_message = "Abort last (0x04) recieved"; |
149 |
} |
} |
150 |
|
|
151 |
//Id 5 |
//Id 5 |
154 |
char ack = 0x01; |
char ack = 0x01; |
155 |
m_items.clear(); |
m_items.clear(); |
156 |
Send(&ack,1); |
Send(&ack,1); |
157 |
|
|
158 |
|
m_message = "Abort session (0x05) recieved"; |
159 |
} |
} |
160 |
|
|
161 |
//Id 6 |
//Id 6 |
166 |
Sleep(1); |
Sleep(1); |
167 |
Close(); |
Close(); |
168 |
m_message = "Goodbye (0x06) recieved"; |
m_message = "Goodbye (0x06) recieved"; |
169 |
|
|
170 |
m_items.clear(); |
m_items.clear(); |
171 |
m_total = 0.0; |
m_total = 0.0; |
172 |
|
|
173 |
|
m_isOpen = false; |
174 |
} |
} |
175 |
|
|
176 |
|
|
184 |
item.isOk = true; |
item.isOk = true; |
185 |
item.barcode = barcode; |
item.barcode = barcode; |
186 |
item.description = "ĝl"; |
item.description = "ĝl"; |
187 |
item.price = 7.65; |
item.price = 7.00; |
188 |
} |
} |
189 |
else if (barcode == "1234567000992") |
else if (barcode == "1234567000992") |
190 |
{ |
{ |