diff options
26 files changed, 3073 insertions, 0 deletions
diff --git a/OLD/Viewer_vesy/KeyBoard.pde b/OLD/Viewer_vesy/KeyBoard.pde new file mode 100644 index 0000000..c20e2f6 --- /dev/null +++ b/OLD/Viewer_vesy/KeyBoard.pde @@ -0,0 +1,58 @@ +//***************************************************** +// Работа с клавиатурой + +void keyReleased() { + if (key > 31 && key < 127 || key > 1039 && key < 1104) { // ввод данных + if (selectDataEdit != 0) { + if (inputData.length() < 30) { + inputData += key; + } + } + reset(); + } + + if (key == 8) { // backspase + if (inputData.length() >= 1) { + inputData = inputData.substring(0, inputData.length() - 1); + } + reset(); + } + + if (key == 127) { // стереть все + inputData = ""; + reset(); + } + + if (key == 13 || key == 10) { // enter или return + + int hCode = table.getInt(index-1, 0); + int hCode1 = table.getInt(index-1, 9) * 2 + table.getInt(index-1, 10) * 2 + + table.getInt(index-1, 12) * 2 + table.getInt(index-1, 13) * 2 + + table.getInt(index-1, 14) * 2 + table.getInt(index-1, 15) * 2; + table.setInt(index-1, 0, hCode); + + if (selectDataEdit == 1) { + table.setInt(index-1, selectDataEdit - 1, int(inputData.trim())); + } else if (selectDataEdit == 14 || selectDataEdit == 15) { + table.setInt(index-1, selectDataEdit, int(inputData.trim())); + } else { + table.setString(index-1, selectDataEdit, inputData.trim()); + } + + if (hCode == hCode1) { + hCode1 = table.getInt(index-1, 9) * 2 + table.getInt(index-1, 10) * 2 + + table.getInt(index-1, 12)*2 + + table.getInt(index-1, 13)*2 + table.getInt(index-1, 14)*2 + + table.getInt(index-1, 15)*2; + table.setInt(index-1, 0, hCode1); + } + + saveTable(table, filePath1 + "base.csv"); + saveTable(table, filePath + "base.csv"); + + selectDataEdit = 0; + reset(); + inputData = ""; + } + key = 0; +} diff --git a/OLD/Viewer_vesy/Mouse.pde b/OLD/Viewer_vesy/Mouse.pde new file mode 100644 index 0000000..3252e55 --- /dev/null +++ b/OLD/Viewer_vesy/Mouse.pde @@ -0,0 +1,96 @@ +//**************************************************** +void mousePressed() { + TableRow row = table.getRow(index-1); + for (int i = 0; i < count; ++i) { // выбор строки + if ((mouseX > tablo[0]) && (mouseX < tablo[0] + tablo[2]) && + (mouseY > tablo[1] + h * i) && (mouseY < tablo[1] + h + h * i)) { + select = i + 1; + reset(); + } + } + + if ((mouseX > tabloW[0] + shift) && (mouseX < tabloW[1] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 1; + inputData = row.getString(0); + reset(); + } + + if ((mouseX > tabloW[2] + shift) && (mouseX < tabloW[3] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 4; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[3] + shift) && (mouseX < tabloW[4] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 6; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[4] + shift) && (mouseX < tabloW[5] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 7; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[9] + shift) && (mouseX < tabloW[10] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 14; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[10] + shift) && (mouseX < tabloW[11] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 15; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[11] + shift) && (mouseX < tabloW[12] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 5; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[13] + shift) && (mouseX < tabloW[16] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + fill(#FFFF00); + rect(tablo[0] + tabloW[13], s, tabloW[16] - tabloW[13], 27); + fill(0); + text("ОТВЕС", tabloW[13] + shift * 9 + tablo[0], s + 20); + } + + if ((mouseX > tabloW[17] - 30) && (mouseX < tabloW[17]) && + (mouseY > tablo[1] + tablo[3] - 8) && (mouseY < tablo[1] + tablo[3] + 12)) { + fill(#836FFF); + rect(tabloW[17] - 30, tablo[1] + tablo[3] - 8, 30, 20); + } +} +//**************************************************** +void mouseReleased() { + if ((mouseX > tabloW[13] + shift) && (mouseX < tabloW[16] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + //selectDataEdit = 0; + fill(#FF0000); + rect(tablo[0] + tabloW[13], s, tabloW[16] - tabloW[13], 27); + fill(255); + text("ОТВЕС", tabloW[13] + shift * 9 + tablo[0], s + 20); + printOtwes(); + } + + if ((mouseX > tabloW[17] - 30) && (mouseX < tabloW[17]) && + (mouseY > tablo[1] + tablo[3] - 8) && (mouseY < tablo[1] + tablo[3] + 12)) { + fill(0); + rect(tabloW[17] - 30, tablo[1] + tablo[3] - 8, 30, 20); + select = 0; + selectData = 0; + selectDataEdit = 0; + reset(); + } +} diff --git a/OLD/Viewer_vesy/PrintOtwes.pde b/OLD/Viewer_vesy/PrintOtwes.pde new file mode 100644 index 0000000..a707a1e --- /dev/null +++ b/OLD/Viewer_vesy/PrintOtwes.pde @@ -0,0 +1,122 @@ +//***************************************************** +// Печать отвеса + +void printOtwes() { + int[] wO = {10, 73, 105, 165, 200}; + int[] hO = {10, 55, 70, 85, 100, 115, 130}; + String D = ""; + String M = ""; + String Y = ""; + String H = ""; + String N = ""; + String S = ""; + D += (day() < 10) ? "0" + day() : day(); + M += (month() < 10) ? "0" + month() : month(); + Y += (year() < 10) ? "0" + year() : year(); + H += (hour() < 10) ? "0" + hour() : hour(); + N += (minute() < 10) ? "0" + minute() : minute(); + S += (second() < 10) ? "0" + second() : second(); + String time1 = H + N + S; + + TableRow row = table.getRow(index-1); + + PGraphics pdf = createGraphics(210, 297, PDF, otwes + + "/" + M + "/" + D + "/" + time1 + "_" + row.getString(3) + ".pdf"); + pdf.beginDraw(); + pdf.background(255); + + pdf.rect(wO[0], hO[0], wO[4]-wO[0], hO[1]-hO[0], 5, 5, 0, 0); + pdf.rect(wO[0], hO[1], wO[4]-wO[0], hO[2]-hO[1]); + pdf.rect(wO[0], hO[2], wO[4]-wO[0], hO[3]-hO[2]); + pdf.rect(wO[0], hO[3], wO[4]-wO[0], hO[4]-hO[3]); + pdf.rect(wO[0], hO[4], wO[4]-wO[0], hO[5]-hO[4]); + pdf.rect(wO[0], hO[5], wO[4]-wO[0], hO[6]-hO[5], 0, 0, 5, 5); + + pdf.line(wO[1], hO[1], wO[1], hO[5]); + pdf.line(wO[2], hO[1], wO[2], hO[6]); + pdf.line(wO[3], hO[1], wO[3], hO[6]); + + pdf.rect(13, 13, 40, 30, 3); + pdf.ellipse(40, 25, 50, 20); + pdf.fill(0); + pdf.textSize(4); + String k = ""; + if (row.getInt(17) != 0) { + k = row.getString(11).substring(0, 5) + " [" + float(row.getString(17)) / 1000 + "]"; + } else { + k = row.getString(11).substring(0, 5); + } + pdf.text(k, 17, 40); + pdf.textSize(6); + pdf.text(row.getString(1) + "/1" + M + int(random(101, 999)), 24, 27); // row.getString(2), 28, 27); + + pdf.textSize(7); + pdf.text("Дубликат отвеса", 73, 20); + pdf.textSize(4); + pdf.text("ГосНомер а/м:", 80, 30); + pdf.textAlign(RIGHT); + pdf.textSize(8); + pdf.text(row.getString(3), 190, 30); + pdf.textAlign(LEFT); + pdf.textSize(4); + pdf.text("Сдатчик лома и отходов:", 59, 40); + pdf.textSize(8); + pdf.textAlign(RIGHT); + pdf.text(row.getString(4), 190, 40); + pdf.textAlign(LEFT); + pdf.textSize(3); + pdf.text("Бытовой лом, отходы частного строительства, или прочее..", 15, 50); + pdf.textAlign(RIGHT); + pdf.textSize(4); + pdf.text(row.getString(5), 190, 50); + + pdf.textAlign(RIGHT); + pdf.textSize(5); + pdf.text("Брутто (т)", 70, 65); + pdf.text("Тара (т)", 70, 80); + pdf.text("Нетто (чистый вес) (т)", 70, 95); + pdf.text("Не принято мусора (кг)", 70, 110); + pdf.textAlign(LEFT); + pdf.text(row.getString(16), 15, 125); + pdf.textAlign(RIGHT); + pdf.textSize(6); + pdf.text(printData(str(row.getInt(9))), 102, 65); + pdf.text(printData(row.getString(12)), 102, 80); + //float n = row.getInt(9) - row.getInt(12) + row.getInt(17) / 2; + int chist = int(row.getInt(9) - row.getInt(12) - (row.getInt(9) - row.getInt(12)) / + 100.0 * row.getInt(7) - row.getInt(15) + row.getInt(17) / 2); + pdf.text(printData(str(chist)), 102, 95); + pdf.text(printData(row.getString(15)), 100, 110); + + pdf.textAlign(RIGHT); + pdf.textSize(5); + pdf.text("Цена (руб)", 162, 65); + pdf.text("Процент засора (%)", 162, 80); + pdf.text("Стоимость (руб)", 162, 95); + pdf.text("Аренда КАМАЗ (руб)", 162, 110); + pdf.text("ИТОГО к выдаче (руб)", 162, 125); + pdf.textSize(6); + pdf.text(printData(row.getString(6)), 197, 65); + pdf.text(row.getString(7), 195, 80); + int sum = int(chist * row.getInt(6) / 1000.0); + pdf.text(printData(str(sum)), 197, 95); + pdf.text(printData(row.getString(14)), 195, 110); + pdf.text(printData(str(int(sum) - int(row.getString(14)))), 197, 125); + + pdf.dispose(); + pdf.endDraw(); +} + +//***************************************************** +// работа над числом для вывода + +float workNumber(float v) { + if (int(v * 1000) % 10 >= 5) { + v = int(v * 100 + 1) / 100.0; + } else { + v = int(v * 100) / 100.0; + } + return v; +} + +//***************************************************** diff --git a/OLD/Viewer_vesy/Viewer_vesy.pde b/OLD/Viewer_vesy/Viewer_vesy.pde new file mode 100644 index 0000000..59396cc --- /dev/null +++ b/OLD/Viewer_vesy/Viewer_vesy.pde @@ -0,0 +1,122 @@ +//******************************************************************* +// Zasor2 - viewer +// 2021.03.06 - 2021.09.05 +// v. 037 +//******************************************************************* +import processing.pdf.*; + +String filePath = "data/"; // путь для сохранения копии файла базы +String filePath1; // путь для сохранения файла базы (Ядиск) +String put = "data/Custom/"; // путь для сохранения копии файла настроек +String otwes = "OTWESY/"; // путь для сохранения отвесов +int count = 0; +int select = 0; +int selectData = 0; +int selectDataEdit = 0; +int h = 17; +int w = 80; +int otH = 13; +int otW = 10; +int shift = 10; + +boolean flagHighlight = false; +boolean flagWork = false; +boolean flagBoss = false; +boolean flagNext = false; + +int[] tablo = {10, 30, 1350, 900}; +int[] tabloW = {0, 40, 135, 270, 335, 370, 435, 500, 565, 630, 690, + 745, 955, 1035, 1110, 1185, 1270, tablo[2]}; + +String[][] data = new String[60][20]; +String inputData = ""; +int numberReport; +int millisOld = 0; + +int index = 0; + +int sumN1 = 0; +int sumN = 0; +int sumChist = 0; +int sumArenda = 0; +int sumDopSor = 0; +int sumSum = 0; + +int rowCount = 0; + +int s = tablo[1] + tablo[3] - 11; + +Table table; +PFont myFont; + +//***************************************************** +void settings() { + size(tablo[2] + 20, tablo[3] + 60); +} +void setup() { + myFont = createFont("Arial", 12, true); + textFont(myFont); + + JSONArray values; + values = loadJSONArray(put + "option.json"); + JSONObject animal = values.getJSONObject(0); + filePath1 = animal.getString("filePath"); + println(filePath1); + table = loadTable(filePath1 + "base.csv"); + if (table == null) { + fill(0); + textSize(50); + text("File 'base.csv' not found !", 50, 150); + } +} +//***************************************************** +void draw() { + if (millis() >= millisOld + 1000) { + table = loadTable(filePath1 + "base.csv", "header"); + if (table.getRowCount() == rowCount) { + return; + } else { + rowCount = table.getRowCount(); + fill(255); + rect(tablo[0], tablo[1], tablo[2], tablo[3]); + reset(); + } + } +} + +//**************************************************** +void reset() { + count = 0; + sumN1 = 0; + sumN = 0; + sumChist = 0; + sumArenda = 0; + sumDopSor = 0; + sumSum = 0; + visible(); +} + +//**************************************************** +String printData(String d) { + String d1 = ""; + if (d.length() == 0 || d.length() == 1) { + d1 = ""; + } else if (d.length() < 2) { + d1 = d.substring(d.length() - 1, d.length()); + } else if (d.length() < 3) { + d1 = d.substring(d.length() - 2, d.length()); + } else if (d.length() < 4) { + d1 = d.substring(d.length() - 3, d.length()); + } else if (d.length() < 5) { + d1 = d.substring(d.length() - 4, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } else if (d.length() < 6) { + d1 = d.substring(d.length() - 5, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } else if (d.length() < 7) { + d1 = d.substring(d.length() - 6, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } else if (d.length() < 8) { + d1 = d.substring(d.length() - 7, d.length() - 6) + "'" + d.substring(d.length() - 6, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } + return d1; +} + +//***************************************************** diff --git a/OLD/Viewer_vesy/Visible.pde b/OLD/Viewer_vesy/Visible.pde new file mode 100644 index 0000000..c245014 --- /dev/null +++ b/OLD/Viewer_vesy/Visible.pde @@ -0,0 +1,244 @@ +//***************************************************** +// Отображение на экране + +void visible() { + fill(255); + rect(tablo[0], tablo[1], tablo[2], tablo[3] + 20); + for (TableRow row : table.rows()) { + if (count == select-1) { + index = row.getInt(2); + println(index); + } + fill(#F0FFFF); + if (select == count + 1) fill(#00FF00); + rect(tablo[0], tablo[1] + h * count, tablo[2], h); + rect(tablo[0] + tabloW[1], tablo[1] + h * count, tabloW[2] - tabloW[1], h); + rect(tablo[0] + tabloW[2], tablo[1] + h * count, tabloW[3] - tabloW[2], h); + rect(tablo[0] + tabloW[3], tablo[1] + h * count, tabloW[4] - tabloW[3], h); + rect(tablo[0] + tabloW[4], tablo[1] + h * count, tabloW[5] - tabloW[4], h); + rect(tablo[0] + tabloW[5], tablo[1] + h * count, tabloW[6] - tabloW[5], h); + rect(tablo[0] + tabloW[6], tablo[1] + h * count, tabloW[7] - tabloW[6], h); + rect(tablo[0] + tabloW[7], tablo[1] + h * count, tabloW[8] - tabloW[7], h); + rect(tablo[0] + tabloW[8], tablo[1] + h * count, tabloW[9] - tabloW[8], h); + rect(tablo[0] + tabloW[9], tablo[1] + h * count, tabloW[10] - tabloW[9], h); + rect(tablo[0] + tabloW[10], tablo[1] + h * count, tabloW[11] - tabloW[10], h); + rect(tablo[0] + tabloW[11], tablo[1] + h * count, tabloW[12] - tabloW[11], h); + rect(tablo[0] + tabloW[12], tablo[1] + h * count, tabloW[13] - tabloW[12], h); + rect(tablo[0] + tabloW[13], tablo[1] + h * count, tabloW[14] - tabloW[13], h); + rect(tablo[0] + tabloW[14], tablo[1] + h * count, tabloW[15] - tabloW[14], h); + rect(tablo[0] + tabloW[15], tablo[1] + h * count, tabloW[16] - tabloW[15], h); + rect(tablo[0] + tabloW[16], tablo[1] + h * count, tablo[2] - tabloW[16], h); + + fill(0); + int hCode = row.getInt(0); + int hCode1 = row.getInt(9)*2 + row.getInt(10)*2 + row.getInt(12)*2 + + row.getInt(13)*2 + row.getInt(14)*2 + row.getInt(15)*2; + println(hCode + " - " + hCode1); + if (hCode != hCode1) fill(#FF0000); + textSize(11); + textAlign(RIGHT); + text(count + 1, tablo[1] + shift, tablo[1] + otH + h * (count)); + text(row.getString(3), tabloW[2] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(row.getString(4), tabloW[3] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(printData(row.getString(6)), tabloW[4] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(row.getString(7), tabloW[5] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(printData(str(row.getInt(9))), tabloW[6] - shift + tablo[0], tablo[1] + otH + h * (count)); + String q = (row.getInt(10) == 0) ? "" : row.getString(10); + text(q, tabloW[7] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(printData(row.getString(12)), tabloW[8] - shift + tablo[0], tablo[1] + otH + h * (count)); + String w = (row.getInt(13) == 0) ? "" : row.getString(13); + text(w, tabloW[9] - shift + tablo[0], tablo[1] + otH + h * (count)); + String e = (row.getInt(14) == 0) ? "" : row.getString(14); + text(printData(e), tabloW[10] - shift + tablo[0], tablo[1] + otH + h * (count)); + String r = (row.getInt(15) == 0) ? "" : row.getString(15); + text(printData(r), tabloW[11] - shift + tablo[0], tablo[1] + otH + h * (count)); + textAlign(LEFT); + String g; + if (row.getInt(17) != 0) { + g = "[" + row.getFloat(17) / 1000 + "] "; + } else { + g = ""; + } + text(g + row.getString(5), tabloW[11] + shift + tablo[0], tablo[1] + otH + h * (count)); + textAlign(RIGHT); + //int n1 = row.getInt(9) - row.getInt(10) - row.getInt(12) + row.getInt(13); + //text(printData(str(n1)), tabloW[13] - shift + tablo[0], tablo[1] + otH + h * (count)); + //int n = row.getInt(9) - row.getInt(12) + row.getInt(17) / 2; + //text(printData(str(n)), tabloW[14] - shift + tablo[0], tablo[1] + otH + h * (count)); + int chist = int(row.getInt(9) - row.getInt(12) - (row.getInt(9) - row.getInt(12)) / 100.0 * + row.getInt(7) - row.getInt(15) + row.getInt(17) / 2); + text(printData(str(int(chist))), tabloW[15] - shift + tablo[0], tablo[1] + otH + h * (count)); + int sum = chist * row.getInt(6) / 1000; + text(printData(str(sum)), tabloW[16] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(row.getString(11), tabloW[17] - shift + tablo[0], tablo[1] + otH + h * (count)); + + int sum1 = chist * row.getInt(6) / 1000 - row.getInt(14); + text(printData(str(sum1)), tabloW[13] - shift + tablo[0], tablo[1] + otH + h * (count)); + + //sumN1 += n1; + //sumN += n; + sumChist += chist; + sumArenda += row.getInt(14); + sumDopSor += row.getInt(15); + sumSum += sum; + + count++; + } + + //String[] kamazy = loadStrings(filePath1 + "kamazy.txt"); + //println("File 'kamazy.txt' found !"); + //int sumKamazy = 0; + //int sumKamEach = 0; + //for (int k = 0; k < kamazy.length; ++k) { + // for (TableRow row : table.findRows(kamazy[k], "nomer")) { + // sumKamEach += row.getInt(9) - row.getInt(12) - int((row.getInt(9) - + // row.getInt(12)) / 100.0 * row.getInt(7)) - row.getInt(15) + row.getInt(17); + // } + // sumKamazy += sumKamEach; + // sumKamEach = 0; + //} + + + fill(#FFF0F5); + rect(tablo[0] + tabloW[0], tablo[1] - 30, tabloW[1] - tabloW[0], h + shift); + rect(tablo[0] + tabloW[1], tablo[1] - 30, tabloW[2] - tabloW[1], h + shift); + rect(tablo[0] + tabloW[2], tablo[1] - 30, tabloW[3] - tabloW[2], h + shift); + rect(tablo[0] + tabloW[3], tablo[1] - 30, tabloW[4] - tabloW[3], h + shift); + rect(tablo[0] + tabloW[4], tablo[1] - 30, tabloW[5] - tabloW[4], h + shift); + rect(tablo[0] + tabloW[5], tablo[1] - 30, tabloW[6] - tabloW[5], h + shift); + rect(tablo[0] + tabloW[6], tablo[1] - 30, tabloW[7] - tabloW[6], h + shift); + rect(tablo[0] + tabloW[7], tablo[1] - 30, tabloW[8] - tabloW[7], h + shift); + rect(tablo[0] + tabloW[8], tablo[1] - 30, tabloW[9] - tabloW[8], h + shift); + rect(tablo[0] + tabloW[9], tablo[1] - 30, tabloW[10] - tabloW[9], h + shift); + rect(tablo[0] + tabloW[10], tablo[1] - 30, tabloW[11] - tabloW[10], h + shift); + rect(tablo[0] + tabloW[11], tablo[1] - 30, tabloW[12] - tabloW[11], h + shift); + rect(tablo[0] + tabloW[12], tablo[1] - 30, tabloW[13] - tabloW[12], h + shift); + rect(tablo[0] + tabloW[13], tablo[1] - 30, tabloW[14] - tabloW[13], h + shift); + rect(tablo[0] + tabloW[14], tablo[1] - 30, tabloW[15] - tabloW[14], h + shift); + rect(tablo[0] + tabloW[15], tablo[1] - 30, tabloW[16] - tabloW[15], h + shift); + rect(tablo[0] + tabloW[16], tablo[1] - 30, tablo[2] - tabloW[16], h + shift); + textSize(14); + + //rect(tablo[0] + tabloW[8], tablo[1] + h * count, tabloW[9] - tabloW[8], h * 2); + rect(tablo[0] + tabloW[9], tablo[1] + h * count, tabloW[10] - tabloW[9], h * 2); + rect(tablo[0] + tabloW[10], tablo[1] + h * count, tabloW[11] - tabloW[10], h * 2); + rect(tablo[0] + tabloW[11], tablo[1] + h * count, tabloW[12] - tabloW[11], h * 2); + rect(tablo[0] + tabloW[12], tablo[1] + h * count, tabloW[13] - tabloW[12], h * 2); + rect(tablo[0] + tabloW[13], tablo[1] + h * count, tabloW[14] - tabloW[13], h * 2); + rect(tablo[0] + tabloW[14], tablo[1] + h * count, tabloW[15] - tabloW[14], h * 2); + rect(tablo[0] + tabloW[15], tablo[1] + h * count, tabloW[16] - tabloW[15], h * 2); + rect(tablo[0] + tabloW[16], tablo[1] + h * count, tablo[2] - tabloW[16], h * 2); + + fill(0); + rect(tabloW[17] - 30, tablo[1] + tablo[3] - 8, 30, 20); + + fill(0); + textSize(14); + textAlign(LEFT); + text("№", tabloW[0] + tablo[0] + shift + 5, tablo[1] - otH); + text("Номер", tabloW[1] + tablo[0] + shift + 15, tablo[1] - otH); + text("Клиент", tabloW[2] + tablo[0] + shift + 30, tablo[1] - otH); + text("Цена", tabloW[3] + tablo[0] + shift + 5, tablo[1] - otH); + text("%", tabloW[4] + tablo[0] + shift + 5, tablo[1] - otH); + text("Вес 1", tabloW[5] + tablo[0] + shift + 5, tablo[1] - otH); + text("z21", tabloW[6] + tablo[0] + shift + 10, tablo[1] - otH); + text("Вес 2", tabloW[7] + tablo[0] + shift + 5, tablo[1] - otH); + text("z22", tabloW[8] + tablo[0] + shift + 10, tablo[1] - otH); + text("Камаз", tabloW[9] + tablo[0] + shift, tablo[1] - otH); + text("ДС", tabloW[10] + tablo[0] + shift + 8, tablo[1] - otH); + text("Объект", tabloW[11] + tablo[0] + shift + 60, tablo[1] - otH); + text("К выдаче", tabloW[12] + tablo[0] + shift, tablo[1] - otH); + //text("H1", tabloW[12] + tablo[0] + shift * 3, tablo[1] - otH); + //text("Н", tabloW[13] + tablo[0] + shift * 3, tablo[1] - otH); + text("Чистый", tabloW[14] + tablo[0] + shift + 5, tablo[1] - otH); + text("Сумма", tabloW[15] + tablo[0] + shift + 10, tablo[1] - otH); + text("Время 2", tabloW[16] + tablo[0] + shift + 5, tablo[1] - otH); + + textAlign(RIGHT); + //text("" + workNumber(sumKamazy / 1000.0), tabloW[9] + shift - 5, tablo[1] + h * count + 25); + text("" + workNumber(sumArenda / 1000.0), tabloW[10] + shift - 5, tablo[1] + h * count + 25); + text("" + workNumber(sumDopSor / 1000.0), tabloW[11] + shift - 5, tablo[1] + h * count + 25); + textAlign(LEFT); + //float w = workNumber((sumN1 - sumChist) / float(sumN1) * 10000 / 100.0); + //float w1 = workNumber((sumN - sumChist - sumDopSor) / float(sumN) * 100); + //text(" " + w1 + " / " + workNumber((sumN1 - sumN) / 1000.0) + " / " + w, tabloW[11] + + //shift * 2, tablo[1] + h * count + 25); + textAlign(RIGHT); + //text("" + (sumN1) / 1000.0, tabloW[13] + shift - 5, tablo[1] + h * count + 25); + //text("" + (sumN) / 1000.0, tabloW[14] + shift - 5, tablo[1] + h * count + 25); + text("" + int(sumChist / 1000.0 * 100) / 100.0, tabloW[15] + shift - 5, tablo[1] + h * count + 25); + text("" + int(sumSum / 1000.0 * 100) / 100.0, tabloW[16] + shift - 5, tablo[1] + h * count + 25); + text("" + printData(str(int(float(sumSum) / sumChist * 1000))), tabloW[17] - 10, tablo[1] + h * count + 25); + + if (select != 0) { + fill(#F0FFF0); + if (selectDataEdit == 1) fill(#1E90FF); + rect(tablo[0] + tabloW[1], s, tabloW[0] - tabloW[1], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 4) fill(#1E90FF); + rect(tablo[0] + tabloW[2], s, tabloW[3] - tabloW[2], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 6) fill(#1E90FF); + rect(tablo[0] + tabloW[3], s, tabloW[4] - tabloW[3], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 7) fill(#1E90FF); + rect(tablo[0] + tabloW[4], s, tabloW[5] - tabloW[4], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 14) fill(#1E90FF); + rect(tablo[0] + tabloW[9], s, tabloW[10] - tabloW[9], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 15) fill(#1E90FF); + rect(tablo[0] + tabloW[10], s, tabloW[11] - tabloW[10], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 5) fill(#1E90FF); + rect(tablo[0] + tabloW[11], s, tabloW[12] - tabloW[11], h + shift); + + fill(#FF3030); + rect(tablo[0] + tabloW[13], s, tabloW[16] - tabloW[13], h + shift); + + fill(#FF0000); + textSize(14); + + TableRow row = table.getRow(index-1); + + if (selectDataEdit == 4) { + text(inputData, tabloW[3] - shift + tablo[0], s + shift * 2); + } else { + text(row.getString(4), tabloW[3] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 6) { + text(inputData, tabloW[4] - shift + tablo[0], s + shift * 2); + } else { + text(row.getString(6), tabloW[4] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 7) { + text(inputData, tabloW[5] - shift + tablo[0], s + shift * 2); + } else { + text(row.getString(7), tabloW[5] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 14) { + text(inputData, tabloW[10] - shift + tablo[0], s + shift * 2); + } else { + text(row.getInt(14), tabloW[10] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 15) { + text(inputData, tabloW[11] - shift + tablo[0], s + shift * 2); + } else { + text(row.getInt(15), tabloW[11] - shift + tablo[0], s + shift * 2); + } + + textAlign(LEFT); + if (selectDataEdit == 5) { + text(inputData, tabloW[11] + shift + tablo[0], s + shift * 2); + } else { + text(row.getString(5), tabloW[11] + shift + tablo[0], s + shift * 2); + } + + fill(255); + text("ОТВЕС", tabloW[13] + shift * 9 + tablo[0], s + shift * 2); + } + + millisOld = millis(); +} + +//***************************************************** diff --git a/OLD/Viewer_vesy/data/Custom/source.json b/OLD/Viewer_vesy/data/Custom/source.json new file mode 100644 index 0000000..6fe2bf2 --- /dev/null +++ b/OLD/Viewer_vesy/data/Custom/source.json @@ -0,0 +1,3 @@ +[{ + "filePath": "data/delete/" +}]
\ No newline at end of file diff --git a/OLD/Viewer_vesy/data/delete/base.csv b/OLD/Viewer_vesy/data/delete/base.csv new file mode 100644 index 0000000..5533e8f --- /dev/null +++ b/OLD/Viewer_vesy/data/delete/base.csv @@ -0,0 +1,9 @@ +id_R,date,id,nomer,client,object,price,prots,time1,ves1,cor1,time2,ves2,cor2,arenda,dopsor,note,1/2 +84700,16,1,_с635на790,ниджат,1я ямская,20400,6,16:09:03,26540,-50,16:17:39,14310,20,1500,30,,0 +9100,16,2,о497св790,сафар,,18800,6,16:14:05,2470,-30,16:24:18,2110,0,0,0,,0 +19100,16,3,м497ос97,сафар,,18800,6,16:21:15,6320,-30,16:30:25,3200,20,0,40,,0 +63780,16,4,_е588еа790,шерзод,котельники,19400,6,16:54:23,17490,-40,17:01:20,14410,10,0,20,,0 +15700,16,5,_в934ту199,фазли,,20300,6,16:51:41,4880,-40,17:27:29,3000,10,0,0,,0 +70600,16,6,_к225рс790,эльнур,,19700,6,17:10:33,20260,-50,17:28:59,14990,30,0,70,,0 +67040,16,7,_т743вк790,артур,энтузиастов,20300,6,17:48:26,18800,-40,17:55:52,14490,20,0,250,,0 +71160,16,8,_т065хн790,эльнур,,20000,6,18:35:09,20510,-50,18:43:10,15020,0,0,100,,0 diff --git a/OLD/Viewer_vesy/data/delete/clients.txt b/OLD/Viewer_vesy/data/delete/clients.txt new file mode 100644 index 0000000..5a1b320 --- /dev/null +++ b/OLD/Viewer_vesy/data/delete/clients.txt @@ -0,0 +1,20 @@ +Ниджат +Курбан +МосЛом +Евгений +Алик ЗиЛ +Эльвин +Эльнур +Молоково +Эльшат +Дима +Саид +Джалиль +Мадиор +Миша +РТС Женя +РТС Саша +Руфат +Эльчин +Макс +Ибрагим
\ No newline at end of file diff --git a/OLD/Viewer_vesy/data/delete/kamazy.txt b/OLD/Viewer_vesy/data/delete/kamazy.txt new file mode 100644 index 0000000..4813a9b --- /dev/null +++ b/OLD/Viewer_vesy/data/delete/kamazy.txt @@ -0,0 +1,16 @@ +_т706вк790 +_т743вк790 +_т639вк790 +_с644на790 +_к225рс790 +_т065хн790 +_с635на790 +_м220ас790 +_е588еа790 +м597со790 +т490ех177 +о174еа71 +о431ву71 +о580сх71 +н535мт10 +н829вх790
\ No newline at end of file diff --git a/OLD/Viewer_vesy/data/delete/option.json b/OLD/Viewer_vesy/data/delete/option.json new file mode 100644 index 0000000..ef6921e --- /dev/null +++ b/OLD/Viewer_vesy/data/delete/option.json @@ -0,0 +1,15 @@ +[{ + "COMport": 0, + "numberScales": 13, + "protsUmolch": 6, + "filePath": "C:/Users/DZ-KASSA/YandexDisk/_data/", + "threshold": 700, + "tara": 14200, + "stabWeight": 10, + "beginIn": 3, + "portSpeed": 9600, + "scalesOff": "ww000000 kg\n\r", + "scalesIn": "ww0", + "scalesOut": " kg\n", + "numberReport": 1423 +}]
\ No newline at end of file diff --git a/OLD/Viewer_vesy/data/delete/report.txt b/OLD/Viewer_vesy/data/delete/report.txt new file mode 100644 index 0000000..06091ec --- /dev/null +++ b/OLD/Viewer_vesy/data/delete/report.txt @@ -0,0 +1,37 @@ + +Всего взвешиваний: 8 + +Кам / ДС +1.5 / 0.41 + +% / з2 / % +6.01 / 0.44 / 8.29 + +Н1 / Н +36.18 / 35.74 + +Ч / Сум / Средн +33.18 / 662.83 / 19975 + +--------------------- + +_т706вк790 - +_т743вк790 - 3.8 +_т639вк790 - +_с644на790 - +_к225рс790 - 4.88 +_т065хн790 - 5.16 +_с635на790 - 11.47 +_м220ас790 - +_е588еа790 - 2.88 +--------------------- +Камазы: 28.19 т. + +--------------------- +3.8 - 20.3 - артур +11.47 - 20.4 - ниджат +3.23 - 18.8 - сафар +1.77 - 20.3 - фазли +2.88 - 19.4 - шерзод +10.05 - 20.0 - эльнур + diff --git a/OLD/Viewer_vesy/data/delete/temp.json b/OLD/Viewer_vesy/data/delete/temp.json new file mode 100644 index 0000000..5aa5872 --- /dev/null +++ b/OLD/Viewer_vesy/data/delete/temp.json @@ -0,0 +1,92 @@ +[ + { + "note": "", + "dopsor": 0, + "ves": 0, + "arenda": 0, + "prots": 0, + "1/2": 0, + "price": 0, + "client": "", + "id": 0, + "nomer": "", + "time": "", + "zas2": 0, + "object": "" + }, + { + "note": "", + "dopsor": 0, + "ves": 0, + "arenda": 0, + "prots": 0, + "1/2": 0, + "price": 0, + "client": "", + "id": 1, + "nomer": "", + "time": "", + "zas2": 0, + "object": "" + }, + { + "note": "", + "dopsor": 0, + "ves": 0, + "arenda": 0, + "prots": 0, + "1/2": 0, + "price": 0, + "client": "", + "id": 2, + "nomer": "", + "time": "", + "zas2": 0, + "object": "" + }, + { + "note": "", + "dopsor": 0, + "ves": 0, + "arenda": 0, + "prots": 0, + "1/2": 0, + "price": 0, + "client": "", + "id": 3, + "nomer": "", + "time": "", + "zas2": 0, + "object": "" + }, + { + "note": "", + "dopsor": 0, + "ves": 0, + "arenda": 0, + "prots": 0, + "1/2": 0, + "price": 0, + "client": "", + "id": 4, + "nomer": "", + "time": "", + "zas2": 0, + "object": "" + }, + { + "note": "", + "dopsor": 0, + "ves": 0, + "arenda": 0, + "prots": 0, + "1/2": 0, + "price": 0, + "client": "", + "id": 5, + "nomer": "", + "time": "", + "zas2": 0, + "object": "" + } +]
\ No newline at end of file diff --git a/OLD/Zasor2 b/OLD/Zasor2 new file mode 160000 +Subproject 900416a6dd8a333fc5136b3852c6bf22ca12833 diff --git a/SOURCE/Viewer_vesy/KeyBoard.pde b/SOURCE/Viewer_vesy/KeyBoard.pde new file mode 100644 index 0000000..e8b9700 --- /dev/null +++ b/SOURCE/Viewer_vesy/KeyBoard.pde @@ -0,0 +1,58 @@ +//***************************************************** +// Работа с клавиатурой + +void keyReleased() { + if (key > 31 && key < 127 || key > 1039 && key < 1104) { // ввод данных + if (selectDataEdit != 0) { + if (inputData.length() < 30) { + inputData += key; + } + } + reset(); + } + + if (key == 8) { // backspase + if (inputData.length() >= 1) { + inputData = inputData.substring(0, inputData.length() - 1); + } + reset(); + } + + if (key == 127) { // стереть все + inputData = ""; + reset(); + } + + if (key == 13 || key == 10) { // enter или return + + int hCode = table.getInt(index-1, 0); + int hCode1 = table.getInt(index-1, 9) * 2 + table.getInt(index-1, 10) * 2 + + table.getInt(index-1, 12) * 2 + table.getInt(index-1, 13) * 2 + + table.getInt(index-1, 14) * 2 + table.getInt(index-1, 15) * 2; + table.setInt(index-1, 0, hCode); + + if (selectDataEdit == 1) { + table.setInt(index-1, selectDataEdit - 1, int(inputData.trim())); + } else if (selectDataEdit == 14 || selectDataEdit == 15) { + table.setInt(index-1, selectDataEdit, int(inputData.trim())); + } else { + table.setString(index-1, selectDataEdit, inputData.trim()); + } + + if (hCode == hCode1) { + hCode1 = table.getInt(index-1, 9) * 2 + table.getInt(index-1, 10) * 2 + + table.getInt(index-1, 12)*2 + + table.getInt(index-1, 13)*2 + table.getInt(index-1, 14)*2 + + table.getInt(index-1, 15)*2; + table.setInt(index-1, 0, hCode1); + } + + //saveTable(table, filePath1 + "base.csv"); + saveTable(table, filePath + "base.csv"); + + selectDataEdit = 0; + reset(); + inputData = ""; + } + key = 0; +} diff --git a/SOURCE/Viewer_vesy/LoadSetup.pde b/SOURCE/Viewer_vesy/LoadSetup.pde new file mode 100644 index 0000000..b7c4a49 --- /dev/null +++ b/SOURCE/Viewer_vesy/LoadSetup.pde @@ -0,0 +1,32 @@ +//***************************************************** +// чтение файла настроек и данных +// все настройки, клиенты, камазы и 1 взвешивания = data/ + +void loadSetup() { + JSONArray values; + + // Считываем путь до папки с настройками из put/sourse.json: + try { + values = loadJSONArray(put + "source.json"); // = data/ + ... // Ядиск + for (int i = 0; i < values.size(); i++) { + JSONObject animal = values.getJSONObject(i); + filePath = animal.getString("filePath"); // адрес папки с Ядиск + println(filePath); + } + } + catch (Exception e) { + printFileLog("File 'source.json' - undetected"); + selectFolder("Select a folder to process:", "folderSelected"); + while (!flagWork) { + delay(100); + } + } + + values = new JSONArray(); + JSONObject animal = new JSONObject(); + animal.setString("filePath", filePath); + values.setJSONObject(0, animal); + saveJSONArray(values, "data/" + "source.json"); + + println("NEXT--->>>"); +} diff --git a/SOURCE/Viewer_vesy/Mouse.pde b/SOURCE/Viewer_vesy/Mouse.pde new file mode 100644 index 0000000..0eca4a1 --- /dev/null +++ b/SOURCE/Viewer_vesy/Mouse.pde @@ -0,0 +1,96 @@ +//**************************************************** +void mousePressed() { + TableRow row = table.getRow(index-1); + for (int i = 0; i < count; ++i) { // выбор строки + if ((mouseX > tablo[0]) && (mouseX < tablo[0] + tablo[2]) && + (mouseY > tablo[1] + h * i) && (mouseY < tablo[1] + h + h * i)) { + select = i + 1; + reset(); + } + } + + if ((mouseX > tabloW[0] + shift) && (mouseX < tabloW[1] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 1; + inputData = row.getString(0); + reset(); + } + + if ((mouseX > tabloW[2] + shift) && (mouseX < tabloW[3] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 4; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[3] + shift) && (mouseX < tabloW[4] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 6; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[4] + shift) && (mouseX < tabloW[5] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 7; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[9] + shift) && (mouseX < tabloW[10] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 14; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[10] + shift) && (mouseX < tabloW[11] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 15; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[11] + shift) && (mouseX < tabloW[12] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + selectDataEdit = 5; + inputData = row.getString(selectDataEdit); + reset(); + } + + if ((mouseX > tabloW[13] + shift) && (mouseX < tabloW[16] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + fill(#FFFF00); + rect(tablo[0] + tabloW[13], s, tabloW[16] - tabloW[13], 27); + fill(0); + text("ОТВЕС", tabloW[13] + shift * 9 + tablo[0], s + 20); + } + + if ((mouseX > tabloW[17] - 30) && (mouseX < tabloW[17]) && + (mouseY > tablo[1] + tablo[3] - 8) && (mouseY < tablo[1] + tablo[3] + 12)) { + fill(#836FFF); + rect(tabloW[17] - 30, tablo[1] + tablo[3] - 8, 30, 20); + } +} +//**************************************************** +void mouseReleased() { + if ((mouseX > tabloW[13] + shift) && (mouseX < tabloW[16] + shift) && + (mouseY > s) && (mouseY < s + 30)) { + //selectDataEdit = 0; + fill(#FF0000); + rect(tablo[0] + tabloW[13], s, tabloW[16] - tabloW[13], 27); + fill(255); + text("ОТВЕС", tabloW[13] + shift * 9 + tablo[0], s + 20); + printOtwes(); + } + + if ((mouseX > tabloW[17] - 30) && (mouseX < tabloW[17]) && + (mouseY > tablo[1] + tablo[3] - 8) && (mouseY < tablo[1] + tablo[3] + 12)) { + fill(0); + rect(tabloW[17] - 30, tablo[1] + tablo[3] - 8, 30, 20); + select = 0; + selectData = 0; + selectDataEdit = 0; + reset(); + } +} diff --git a/SOURCE/Viewer_vesy/PrintOtwes.pde b/SOURCE/Viewer_vesy/PrintOtwes.pde new file mode 100644 index 0000000..a707a1e --- /dev/null +++ b/SOURCE/Viewer_vesy/PrintOtwes.pde @@ -0,0 +1,122 @@ +//***************************************************** +// Печать отвеса + +void printOtwes() { + int[] wO = {10, 73, 105, 165, 200}; + int[] hO = {10, 55, 70, 85, 100, 115, 130}; + String D = ""; + String M = ""; + String Y = ""; + String H = ""; + String N = ""; + String S = ""; + D += (day() < 10) ? "0" + day() : day(); + M += (month() < 10) ? "0" + month() : month(); + Y += (year() < 10) ? "0" + year() : year(); + H += (hour() < 10) ? "0" + hour() : hour(); + N += (minute() < 10) ? "0" + minute() : minute(); + S += (second() < 10) ? "0" + second() : second(); + String time1 = H + N + S; + + TableRow row = table.getRow(index-1); + + PGraphics pdf = createGraphics(210, 297, PDF, otwes + + "/" + M + "/" + D + "/" + time1 + "_" + row.getString(3) + ".pdf"); + pdf.beginDraw(); + pdf.background(255); + + pdf.rect(wO[0], hO[0], wO[4]-wO[0], hO[1]-hO[0], 5, 5, 0, 0); + pdf.rect(wO[0], hO[1], wO[4]-wO[0], hO[2]-hO[1]); + pdf.rect(wO[0], hO[2], wO[4]-wO[0], hO[3]-hO[2]); + pdf.rect(wO[0], hO[3], wO[4]-wO[0], hO[4]-hO[3]); + pdf.rect(wO[0], hO[4], wO[4]-wO[0], hO[5]-hO[4]); + pdf.rect(wO[0], hO[5], wO[4]-wO[0], hO[6]-hO[5], 0, 0, 5, 5); + + pdf.line(wO[1], hO[1], wO[1], hO[5]); + pdf.line(wO[2], hO[1], wO[2], hO[6]); + pdf.line(wO[3], hO[1], wO[3], hO[6]); + + pdf.rect(13, 13, 40, 30, 3); + pdf.ellipse(40, 25, 50, 20); + pdf.fill(0); + pdf.textSize(4); + String k = ""; + if (row.getInt(17) != 0) { + k = row.getString(11).substring(0, 5) + " [" + float(row.getString(17)) / 1000 + "]"; + } else { + k = row.getString(11).substring(0, 5); + } + pdf.text(k, 17, 40); + pdf.textSize(6); + pdf.text(row.getString(1) + "/1" + M + int(random(101, 999)), 24, 27); // row.getString(2), 28, 27); + + pdf.textSize(7); + pdf.text("Дубликат отвеса", 73, 20); + pdf.textSize(4); + pdf.text("ГосНомер а/м:", 80, 30); + pdf.textAlign(RIGHT); + pdf.textSize(8); + pdf.text(row.getString(3), 190, 30); + pdf.textAlign(LEFT); + pdf.textSize(4); + pdf.text("Сдатчик лома и отходов:", 59, 40); + pdf.textSize(8); + pdf.textAlign(RIGHT); + pdf.text(row.getString(4), 190, 40); + pdf.textAlign(LEFT); + pdf.textSize(3); + pdf.text("Бытовой лом, отходы частного строительства, или прочее..", 15, 50); + pdf.textAlign(RIGHT); + pdf.textSize(4); + pdf.text(row.getString(5), 190, 50); + + pdf.textAlign(RIGHT); + pdf.textSize(5); + pdf.text("Брутто (т)", 70, 65); + pdf.text("Тара (т)", 70, 80); + pdf.text("Нетто (чистый вес) (т)", 70, 95); + pdf.text("Не принято мусора (кг)", 70, 110); + pdf.textAlign(LEFT); + pdf.text(row.getString(16), 15, 125); + pdf.textAlign(RIGHT); + pdf.textSize(6); + pdf.text(printData(str(row.getInt(9))), 102, 65); + pdf.text(printData(row.getString(12)), 102, 80); + //float n = row.getInt(9) - row.getInt(12) + row.getInt(17) / 2; + int chist = int(row.getInt(9) - row.getInt(12) - (row.getInt(9) - row.getInt(12)) / + 100.0 * row.getInt(7) - row.getInt(15) + row.getInt(17) / 2); + pdf.text(printData(str(chist)), 102, 95); + pdf.text(printData(row.getString(15)), 100, 110); + + pdf.textAlign(RIGHT); + pdf.textSize(5); + pdf.text("Цена (руб)", 162, 65); + pdf.text("Процент засора (%)", 162, 80); + pdf.text("Стоимость (руб)", 162, 95); + pdf.text("Аренда КАМАЗ (руб)", 162, 110); + pdf.text("ИТОГО к выдаче (руб)", 162, 125); + pdf.textSize(6); + pdf.text(printData(row.getString(6)), 197, 65); + pdf.text(row.getString(7), 195, 80); + int sum = int(chist * row.getInt(6) / 1000.0); + pdf.text(printData(str(sum)), 197, 95); + pdf.text(printData(row.getString(14)), 195, 110); + pdf.text(printData(str(int(sum) - int(row.getString(14)))), 197, 125); + + pdf.dispose(); + pdf.endDraw(); +} + +//***************************************************** +// работа над числом для вывода + +float workNumber(float v) { + if (int(v * 1000) % 10 >= 5) { + v = int(v * 100 + 1) / 100.0; + } else { + v = int(v * 100) / 100.0; + } + return v; +} + +//***************************************************** diff --git a/SOURCE/Viewer_vesy/Viewer_vesy.pde b/SOURCE/Viewer_vesy/Viewer_vesy.pde new file mode 100644 index 0000000..03a6229 --- /dev/null +++ b/SOURCE/Viewer_vesy/Viewer_vesy.pde @@ -0,0 +1,182 @@ +//******************************************************************* +// Zasor2 - viewer +// 2021.03.06 - 2025.02.16 +// v. 038 +//******************************************************************* +import processing.pdf.*; + +//String filePath = "data/"; // путь для сохранения копии файла базы +//String filePath1; // путь для сохранения файла базы (Ядиск) +String filePathLog = "LogFile.txt"; +String put = "data/"; // путь для сохранения копии файла настроек +String filePath; +String otwes = put + "OTWESY/"; // путь для сохранения отвесов +int count = 0; +int select = 0; +int selectData = 0; +int selectDataEdit = 0; +int h = 17; +int w = 80; +int otH = 13; +int otW = 10; +int shift = 10; + +boolean flagHighlight = false; +boolean flagWork = false; +boolean flagBoss = false; +boolean flagNext = false; + +int[] tablo = {10, 30, 1350, 900}; +int[] tabloW = {0, 40, 135, 270, 335, 370, 435, 500, 565, 630, 690, + 745, 955, 1035, 1110, 1185, 1270, tablo[2]}; + +String[][] data = new String[60][20]; +String inputData = ""; +int numberReport; +int millisOld = 0; + +String time, timeArh, timeMonth, timeDate, timeExc, timeReport; + +int index = 0; + +int sumN1 = 0; +int sumN = 0; +int sumChist = 0; +int sumArenda = 0; +int sumDopSor = 0; +int sumSum = 0; + +int rowCount = 0; + +int s = tablo[1] + tablo[3] - 11; + +Table table; +PFont myFont; + +//***************************************************** +void settings() { + size(tablo[2] + 20, tablo[3] + 60); +} +void setup() { + //myFont = createFont("Arial", 12, true); + //textFont(myFont); + + loadSetup(); + + //JSONArray values; + //values = loadJSONArray(put + "source.json"); + //JSONObject animal = values.getJSONObject(0); + //filePath = animal.getString("filePath"); + //println(filePath); + + table = loadTable(filePath + "base.csv"); + if (table == null) { + fill(0); + textSize(50); + text("File 'base.csv' not found !", 50, 150); + } +} +//***************************************************** +void draw() { + if (millis() >= millisOld + 1000) { + table = loadTable(filePath + "base.csv", "header"); + if (table.getRowCount() == rowCount) { + return; + } else { + rowCount = table.getRowCount(); + fill(255); + rect(tablo[0], tablo[1], tablo[2], tablo[3]); + reset(); + } + } +} + +//***************************************************** +// выбор папки с файлами: +void folderSelected(File selection) { + if (selection == null) { + println("Window was closed or the user hit cancel."); + stop(); + System.exit(1); + } else { + filePath = selection.getAbsolutePath() + "/"; + filePath = filePath.replace("\\", "/"); + println(filePath); + flagWork = true; + } +} + +//**************************************************** +void reset() { + count = 0; + sumN1 = 0; + sumN = 0; + sumChist = 0; + sumArenda = 0; + sumDopSor = 0; + sumSum = 0; + visible(); +} + +//**************************************************** +String printData(String d) { + String d1 = ""; + if (d.length() == 0 || d.length() == 1) { + d1 = ""; + } else if (d.length() < 2) { + d1 = d.substring(d.length() - 1, d.length()); + } else if (d.length() < 3) { + d1 = d.substring(d.length() - 2, d.length()); + } else if (d.length() < 4) { + d1 = d.substring(d.length() - 3, d.length()); + } else if (d.length() < 5) { + d1 = d.substring(d.length() - 4, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } else if (d.length() < 6) { + d1 = d.substring(d.length() - 5, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } else if (d.length() < 7) { + d1 = d.substring(d.length() - 6, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } else if (d.length() < 8) { + d1 = d.substring(d.length() - 7, d.length() - 6) + "'" + d.substring(d.length() - 6, d.length() - 3) + "'" + d.substring(d.length() - 3, d.length()); + } + return d1; +} + +//***************************************************** +// вывод времени +void TimeString() { + String D = ""; + String H = ""; + String M = ""; + String S = ""; + String Y = ""; + String N = ""; + Y += year(); + N += (month() < 10) ? "0" + month() : month(); + D += (day() < 10) ? "0" + day() : day(); + H += (hour() < 10) ? "0" + hour() : hour(); + M += (minute() < 10) ? "0" + minute() : minute(); + S += (second() < 10) ? "0" + second() : second(); + time = H + ":" + M + ":" + S; + timeArh = H + M + S; + timeMonth = N; + timeDate = D; + timeExc = D + "_" + H + ":" + M + ":" + S; + timeReport = Y + N + "_" + D; +} + +//***************************************************** +// Запись в файл лога: +void printFileLog(String dataLog) { + TimeString(); + + String[] lines = {}; + if (loadStrings(filePathLog) == null) { + saveStrings(put + filePathLog, lines); + lines = loadStrings(filePathLog); + } + loadStrings(filePathLog); + lines = append(lines, timeReport + "_" + timeArh + " vi " + dataLog); + saveStrings(put + filePathLog, lines); +} + +//***************************************************** diff --git a/SOURCE/Viewer_vesy/Visible.pde b/SOURCE/Viewer_vesy/Visible.pde new file mode 100644 index 0000000..c245014 --- /dev/null +++ b/SOURCE/Viewer_vesy/Visible.pde @@ -0,0 +1,244 @@ +//***************************************************** +// Отображение на экране + +void visible() { + fill(255); + rect(tablo[0], tablo[1], tablo[2], tablo[3] + 20); + for (TableRow row : table.rows()) { + if (count == select-1) { + index = row.getInt(2); + println(index); + } + fill(#F0FFFF); + if (select == count + 1) fill(#00FF00); + rect(tablo[0], tablo[1] + h * count, tablo[2], h); + rect(tablo[0] + tabloW[1], tablo[1] + h * count, tabloW[2] - tabloW[1], h); + rect(tablo[0] + tabloW[2], tablo[1] + h * count, tabloW[3] - tabloW[2], h); + rect(tablo[0] + tabloW[3], tablo[1] + h * count, tabloW[4] - tabloW[3], h); + rect(tablo[0] + tabloW[4], tablo[1] + h * count, tabloW[5] - tabloW[4], h); + rect(tablo[0] + tabloW[5], tablo[1] + h * count, tabloW[6] - tabloW[5], h); + rect(tablo[0] + tabloW[6], tablo[1] + h * count, tabloW[7] - tabloW[6], h); + rect(tablo[0] + tabloW[7], tablo[1] + h * count, tabloW[8] - tabloW[7], h); + rect(tablo[0] + tabloW[8], tablo[1] + h * count, tabloW[9] - tabloW[8], h); + rect(tablo[0] + tabloW[9], tablo[1] + h * count, tabloW[10] - tabloW[9], h); + rect(tablo[0] + tabloW[10], tablo[1] + h * count, tabloW[11] - tabloW[10], h); + rect(tablo[0] + tabloW[11], tablo[1] + h * count, tabloW[12] - tabloW[11], h); + rect(tablo[0] + tabloW[12], tablo[1] + h * count, tabloW[13] - tabloW[12], h); + rect(tablo[0] + tabloW[13], tablo[1] + h * count, tabloW[14] - tabloW[13], h); + rect(tablo[0] + tabloW[14], tablo[1] + h * count, tabloW[15] - tabloW[14], h); + rect(tablo[0] + tabloW[15], tablo[1] + h * count, tabloW[16] - tabloW[15], h); + rect(tablo[0] + tabloW[16], tablo[1] + h * count, tablo[2] - tabloW[16], h); + + fill(0); + int hCode = row.getInt(0); + int hCode1 = row.getInt(9)*2 + row.getInt(10)*2 + row.getInt(12)*2 + + row.getInt(13)*2 + row.getInt(14)*2 + row.getInt(15)*2; + println(hCode + " - " + hCode1); + if (hCode != hCode1) fill(#FF0000); + textSize(11); + textAlign(RIGHT); + text(count + 1, tablo[1] + shift, tablo[1] + otH + h * (count)); + text(row.getString(3), tabloW[2] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(row.getString(4), tabloW[3] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(printData(row.getString(6)), tabloW[4] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(row.getString(7), tabloW[5] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(printData(str(row.getInt(9))), tabloW[6] - shift + tablo[0], tablo[1] + otH + h * (count)); + String q = (row.getInt(10) == 0) ? "" : row.getString(10); + text(q, tabloW[7] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(printData(row.getString(12)), tabloW[8] - shift + tablo[0], tablo[1] + otH + h * (count)); + String w = (row.getInt(13) == 0) ? "" : row.getString(13); + text(w, tabloW[9] - shift + tablo[0], tablo[1] + otH + h * (count)); + String e = (row.getInt(14) == 0) ? "" : row.getString(14); + text(printData(e), tabloW[10] - shift + tablo[0], tablo[1] + otH + h * (count)); + String r = (row.getInt(15) == 0) ? "" : row.getString(15); + text(printData(r), tabloW[11] - shift + tablo[0], tablo[1] + otH + h * (count)); + textAlign(LEFT); + String g; + if (row.getInt(17) != 0) { + g = "[" + row.getFloat(17) / 1000 + "] "; + } else { + g = ""; + } + text(g + row.getString(5), tabloW[11] + shift + tablo[0], tablo[1] + otH + h * (count)); + textAlign(RIGHT); + //int n1 = row.getInt(9) - row.getInt(10) - row.getInt(12) + row.getInt(13); + //text(printData(str(n1)), tabloW[13] - shift + tablo[0], tablo[1] + otH + h * (count)); + //int n = row.getInt(9) - row.getInt(12) + row.getInt(17) / 2; + //text(printData(str(n)), tabloW[14] - shift + tablo[0], tablo[1] + otH + h * (count)); + int chist = int(row.getInt(9) - row.getInt(12) - (row.getInt(9) - row.getInt(12)) / 100.0 * + row.getInt(7) - row.getInt(15) + row.getInt(17) / 2); + text(printData(str(int(chist))), tabloW[15] - shift + tablo[0], tablo[1] + otH + h * (count)); + int sum = chist * row.getInt(6) / 1000; + text(printData(str(sum)), tabloW[16] - shift + tablo[0], tablo[1] + otH + h * (count)); + text(row.getString(11), tabloW[17] - shift + tablo[0], tablo[1] + otH + h * (count)); + + int sum1 = chist * row.getInt(6) / 1000 - row.getInt(14); + text(printData(str(sum1)), tabloW[13] - shift + tablo[0], tablo[1] + otH + h * (count)); + + //sumN1 += n1; + //sumN += n; + sumChist += chist; + sumArenda += row.getInt(14); + sumDopSor += row.getInt(15); + sumSum += sum; + + count++; + } + + //String[] kamazy = loadStrings(filePath1 + "kamazy.txt"); + //println("File 'kamazy.txt' found !"); + //int sumKamazy = 0; + //int sumKamEach = 0; + //for (int k = 0; k < kamazy.length; ++k) { + // for (TableRow row : table.findRows(kamazy[k], "nomer")) { + // sumKamEach += row.getInt(9) - row.getInt(12) - int((row.getInt(9) - + // row.getInt(12)) / 100.0 * row.getInt(7)) - row.getInt(15) + row.getInt(17); + // } + // sumKamazy += sumKamEach; + // sumKamEach = 0; + //} + + + fill(#FFF0F5); + rect(tablo[0] + tabloW[0], tablo[1] - 30, tabloW[1] - tabloW[0], h + shift); + rect(tablo[0] + tabloW[1], tablo[1] - 30, tabloW[2] - tabloW[1], h + shift); + rect(tablo[0] + tabloW[2], tablo[1] - 30, tabloW[3] - tabloW[2], h + shift); + rect(tablo[0] + tabloW[3], tablo[1] - 30, tabloW[4] - tabloW[3], h + shift); + rect(tablo[0] + tabloW[4], tablo[1] - 30, tabloW[5] - tabloW[4], h + shift); + rect(tablo[0] + tabloW[5], tablo[1] - 30, tabloW[6] - tabloW[5], h + shift); + rect(tablo[0] + tabloW[6], tablo[1] - 30, tabloW[7] - tabloW[6], h + shift); + rect(tablo[0] + tabloW[7], tablo[1] - 30, tabloW[8] - tabloW[7], h + shift); + rect(tablo[0] + tabloW[8], tablo[1] - 30, tabloW[9] - tabloW[8], h + shift); + rect(tablo[0] + tabloW[9], tablo[1] - 30, tabloW[10] - tabloW[9], h + shift); + rect(tablo[0] + tabloW[10], tablo[1] - 30, tabloW[11] - tabloW[10], h + shift); + rect(tablo[0] + tabloW[11], tablo[1] - 30, tabloW[12] - tabloW[11], h + shift); + rect(tablo[0] + tabloW[12], tablo[1] - 30, tabloW[13] - tabloW[12], h + shift); + rect(tablo[0] + tabloW[13], tablo[1] - 30, tabloW[14] - tabloW[13], h + shift); + rect(tablo[0] + tabloW[14], tablo[1] - 30, tabloW[15] - tabloW[14], h + shift); + rect(tablo[0] + tabloW[15], tablo[1] - 30, tabloW[16] - tabloW[15], h + shift); + rect(tablo[0] + tabloW[16], tablo[1] - 30, tablo[2] - tabloW[16], h + shift); + textSize(14); + + //rect(tablo[0] + tabloW[8], tablo[1] + h * count, tabloW[9] - tabloW[8], h * 2); + rect(tablo[0] + tabloW[9], tablo[1] + h * count, tabloW[10] - tabloW[9], h * 2); + rect(tablo[0] + tabloW[10], tablo[1] + h * count, tabloW[11] - tabloW[10], h * 2); + rect(tablo[0] + tabloW[11], tablo[1] + h * count, tabloW[12] - tabloW[11], h * 2); + rect(tablo[0] + tabloW[12], tablo[1] + h * count, tabloW[13] - tabloW[12], h * 2); + rect(tablo[0] + tabloW[13], tablo[1] + h * count, tabloW[14] - tabloW[13], h * 2); + rect(tablo[0] + tabloW[14], tablo[1] + h * count, tabloW[15] - tabloW[14], h * 2); + rect(tablo[0] + tabloW[15], tablo[1] + h * count, tabloW[16] - tabloW[15], h * 2); + rect(tablo[0] + tabloW[16], tablo[1] + h * count, tablo[2] - tabloW[16], h * 2); + + fill(0); + rect(tabloW[17] - 30, tablo[1] + tablo[3] - 8, 30, 20); + + fill(0); + textSize(14); + textAlign(LEFT); + text("№", tabloW[0] + tablo[0] + shift + 5, tablo[1] - otH); + text("Номер", tabloW[1] + tablo[0] + shift + 15, tablo[1] - otH); + text("Клиент", tabloW[2] + tablo[0] + shift + 30, tablo[1] - otH); + text("Цена", tabloW[3] + tablo[0] + shift + 5, tablo[1] - otH); + text("%", tabloW[4] + tablo[0] + shift + 5, tablo[1] - otH); + text("Вес 1", tabloW[5] + tablo[0] + shift + 5, tablo[1] - otH); + text("z21", tabloW[6] + tablo[0] + shift + 10, tablo[1] - otH); + text("Вес 2", tabloW[7] + tablo[0] + shift + 5, tablo[1] - otH); + text("z22", tabloW[8] + tablo[0] + shift + 10, tablo[1] - otH); + text("Камаз", tabloW[9] + tablo[0] + shift, tablo[1] - otH); + text("ДС", tabloW[10] + tablo[0] + shift + 8, tablo[1] - otH); + text("Объект", tabloW[11] + tablo[0] + shift + 60, tablo[1] - otH); + text("К выдаче", tabloW[12] + tablo[0] + shift, tablo[1] - otH); + //text("H1", tabloW[12] + tablo[0] + shift * 3, tablo[1] - otH); + //text("Н", tabloW[13] + tablo[0] + shift * 3, tablo[1] - otH); + text("Чистый", tabloW[14] + tablo[0] + shift + 5, tablo[1] - otH); + text("Сумма", tabloW[15] + tablo[0] + shift + 10, tablo[1] - otH); + text("Время 2", tabloW[16] + tablo[0] + shift + 5, tablo[1] - otH); + + textAlign(RIGHT); + //text("" + workNumber(sumKamazy / 1000.0), tabloW[9] + shift - 5, tablo[1] + h * count + 25); + text("" + workNumber(sumArenda / 1000.0), tabloW[10] + shift - 5, tablo[1] + h * count + 25); + text("" + workNumber(sumDopSor / 1000.0), tabloW[11] + shift - 5, tablo[1] + h * count + 25); + textAlign(LEFT); + //float w = workNumber((sumN1 - sumChist) / float(sumN1) * 10000 / 100.0); + //float w1 = workNumber((sumN - sumChist - sumDopSor) / float(sumN) * 100); + //text(" " + w1 + " / " + workNumber((sumN1 - sumN) / 1000.0) + " / " + w, tabloW[11] + + //shift * 2, tablo[1] + h * count + 25); + textAlign(RIGHT); + //text("" + (sumN1) / 1000.0, tabloW[13] + shift - 5, tablo[1] + h * count + 25); + //text("" + (sumN) / 1000.0, tabloW[14] + shift - 5, tablo[1] + h * count + 25); + text("" + int(sumChist / 1000.0 * 100) / 100.0, tabloW[15] + shift - 5, tablo[1] + h * count + 25); + text("" + int(sumSum / 1000.0 * 100) / 100.0, tabloW[16] + shift - 5, tablo[1] + h * count + 25); + text("" + printData(str(int(float(sumSum) / sumChist * 1000))), tabloW[17] - 10, tablo[1] + h * count + 25); + + if (select != 0) { + fill(#F0FFF0); + if (selectDataEdit == 1) fill(#1E90FF); + rect(tablo[0] + tabloW[1], s, tabloW[0] - tabloW[1], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 4) fill(#1E90FF); + rect(tablo[0] + tabloW[2], s, tabloW[3] - tabloW[2], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 6) fill(#1E90FF); + rect(tablo[0] + tabloW[3], s, tabloW[4] - tabloW[3], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 7) fill(#1E90FF); + rect(tablo[0] + tabloW[4], s, tabloW[5] - tabloW[4], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 14) fill(#1E90FF); + rect(tablo[0] + tabloW[9], s, tabloW[10] - tabloW[9], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 15) fill(#1E90FF); + rect(tablo[0] + tabloW[10], s, tabloW[11] - tabloW[10], h + shift); + fill(#F0FFF0); + if (selectDataEdit == 5) fill(#1E90FF); + rect(tablo[0] + tabloW[11], s, tabloW[12] - tabloW[11], h + shift); + + fill(#FF3030); + rect(tablo[0] + tabloW[13], s, tabloW[16] - tabloW[13], h + shift); + + fill(#FF0000); + textSize(14); + + TableRow row = table.getRow(index-1); + + if (selectDataEdit == 4) { + text(inputData, tabloW[3] - shift + tablo[0], s + shift * 2); + } else { + text(row.getString(4), tabloW[3] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 6) { + text(inputData, tabloW[4] - shift + tablo[0], s + shift * 2); + } else { + text(row.getString(6), tabloW[4] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 7) { + text(inputData, tabloW[5] - shift + tablo[0], s + shift * 2); + } else { + text(row.getString(7), tabloW[5] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 14) { + text(inputData, tabloW[10] - shift + tablo[0], s + shift * 2); + } else { + text(row.getInt(14), tabloW[10] - shift + tablo[0], s + shift * 2); + } + if (selectDataEdit == 15) { + text(inputData, tabloW[11] - shift + tablo[0], s + shift * 2); + } else { + text(row.getInt(15), tabloW[11] - shift + tablo[0], s + shift * 2); + } + + textAlign(LEFT); + if (selectDataEdit == 5) { + text(inputData, tabloW[11] + shift + tablo[0], s + shift * 2); + } else { + text(row.getString(5), tabloW[11] + shift + tablo[0], s + shift * 2); + } + + fill(255); + text("ОТВЕС", tabloW[13] + shift * 9 + tablo[0], s + shift * 2); + } + + millisOld = millis(); +} + +//***************************************************** diff --git a/SOURCE/Zasor2/KeyBoard.pde b/SOURCE/Zasor2/KeyBoard.pde new file mode 100644 index 0000000..4db56fa --- /dev/null +++ b/SOURCE/Zasor2/KeyBoard.pde @@ -0,0 +1,197 @@ +//***************************************************** +// данные с клавиатуры (нажатие) +void keyPressed() { + if (key == CODED) { + + if (keyCode == 122 && flagStab && data != 0) { + TimeString(); + input = 1; + inData[0] = ""; + inData[0] += dataTablo; + inData[10] = time; + } + + if (keyCode == 123 && inData[0] != "" && inData[1] != "" && inData[2] != "" + && inData[3] != "" && int(inData[5]) != 0) { + input = 2; + if (vis == 0) { + saveData1(); + } else { + saveData2(); + } + inputData = ""; + dataClear(); + } + + if (keyCode == 112) { + input = 3; + } + } + key = 0; +} +//***************************************************** +// данные с клавиатуры (отпускание) +void keyReleased() { + // Рабочий режим (work): + if (key == 'W' || key == 'Ц') { + flagOpen = true; + key = 0; + } + + if (key == 'R' || key == 'К') { + flagConfirm = true; + } + + if (key == 'L' || key == 'Д') { + if (flagConfirm) { + numberReport++; + writeSetup(); + dataSaveReport(); + flagOpen = false; + key = 0; + flagConfirm = false; + } + } + + if (key == 'Y' || key == 'Н' || key == 'y' || key == 'н') { + flagConfirm = false; + } + + if (vis != 0 && (key == 'D' || key == 'В')) { + for (int i = 0; i < m2; ++i) { + inData[i] = ""; + dataM1[vis - 1][i] = ""; + } + dataSave2next(); + key = 0; + } + + if (key == CODED) { + + if (keyCode == DOWN) { + workInputData(); + if (!flagMenu) { + place++; + if (place == 10) place = 9; + } else { + visMenu++; + if (place == 2) { + if (visMenu >= kamazy.length) visMenu = kamazy.length - 1; + } + if (place == 3) { + if (visMenu >= clients.length) visMenu = clients.length - 1; + } + } + inputData = inData[place]; + } + + if (keyCode == UP) { + workInputData(); + if (!flagMenu) { + place--; + if (place <= 0) place = 1; + } else { + visMenu--; + if (visMenu < 0) visMenu = 0; + } + inputData = inData[place]; + } + + if (keyCode == LEFT) { + workInputData(); + if (!flagMenu) { + place -= 4; + if (place <= 0) place = 1; + } else { + visMenu -= 4; + if (visMenu <= 0) visMenu = 0; + } + inputData = inData[place]; + } + + if (keyCode == RIGHT) { + workInputData(); + if (!flagMenu && (place == 2 || place == 3)) { + flagMenu = true; + visMenu = -4; + } + if (!flagMenu) { + place += 4; + if (place >= 9) place = 9; + } else { + visMenu += 4; + if (place == 2) { + if (visMenu >= kamazy.length - 1) visMenu = kamazy.length - 1; + } + if (place == 3) { + if (visMenu >= clients.length - 1) visMenu = clients.length - 1; + } + } + inputData = inData[place]; + } + + if (keyCode == 122 && + flagStab && data != 0) { // F11 - взвесить + input = 0; + } + + if (keyCode == 123) { // F12 - ок + input = 0; + } + + if (keyCode == 112) { // F1 - очистить + input = 3; + dataClear(); + input = 0; + vis = 0; + inData[1] = ""; + } + + key = 0; + } + + if (key > 31) { // ввод данных + if (place != 0) { + if (inputData.length() < 30) { + inputData += key; + } + } + flagMenu = false; + } + + if (key == 8) { // backspase + flagMenu = false; + if (inputData.length() >= 1) { + inputData = inputData.substring(0, inputData.length() - 1); + } + } + + if (key == 127) { // стереть все + inputData = ""; + flagMenu = false; + } + + if (key == 13 || key == 10) { // enter или return + workInputData(); + if (flagMenu && place == 2 && vis == 0) { + inData[2] = kamazy[visMenu]; + } + if (flagMenu && place == 3 && vis == 0) { + inData[3] = clients[visMenu]; + } + place++; + if (place < 11) { + inputData = inData[place]; + } else { + place = 0; + } + flagMenu = false; + } + + if (key == 9) { // вкл/выкл табло + println(vOff); + myPort.write(vOff); + flagTablo = !flagTablo; + place = 0; + } +} diff --git a/SOURCE/Zasor2/LoadSetup.pde b/SOURCE/Zasor2/LoadSetup.pde new file mode 100644 index 0000000..4fece46 --- /dev/null +++ b/SOURCE/Zasor2/LoadSetup.pde @@ -0,0 +1,99 @@ +//***************************************************** +// чтение файла настроек и данных +// все настройки, клиенты, камазы и 1 взвешивания = data/ + +void loadSetup() { + JSONArray values; + + // Считываем путь до папки с настройками из put/sourse.json: + try { + values = loadJSONArray(put + "source.json"); // = data/ + ... // Ядиск + for (int i = 0; i < values.size(); i++) { + JSONObject animal = values.getJSONObject(i); + filePath = animal.getString("filePath"); // адрес папки с Ядиск + println(filePath); + } + } + catch (Exception e) { + printFileLog("File 'source.json' - undetected"); + selectFolder("Select a folder to process:", "folderSelected"); + while (!flagWork) { + delay(100); + } + } + + values = new JSONArray(); + JSONObject animal = new JSONObject(); + animal.setString("filePath", filePath); + values.setJSONObject(0, animal); + saveJSONArray(values, "data/" + "source.json"); + + println("NEXT--->>>"); + + try { + values = loadJSONArray(filePath + "option.json"); // = data/Custom/ + ... + for (int i = 0; i < values.size(); i++) { + animal = values.getJSONObject(i); + serialPort = animal.getInt("COMport"); // номер COM порта + portSpeed = animal.getInt("portSpeed"); // скорость порта (9600) + lf = animal.getInt("numberScales"); // кол-во символов в посылке с весов + beginIn = animal.getInt("beginIn"); // начало значащих символов посылки + vIn = animal.getString("scalesIn"); // начало не значащих символов посылки + vOut = animal.getString("scalesOut"); // конец не значащих символов посылки + vOff = animal.getString("scalesOff"); // вся посылка полностью + //filePath = animal.getString("filePath"); // Ядиск + threshold = animal.getInt("threshold"); // нижний порог для обработки з2 + stab = animal.getInt("stabWeight"); // кол-во весовых посылок для "стабильного" веса + tara = animal.getInt("tara"); // минимальная тара камаза для % + protsUmolch = animal.getInt("protsUmolch"); // % засора по умолчанию + numberReport = animal.getInt("numberReport"); // порядковый номер отчета + } + } + catch (Exception e) { + printFileLog("File 'option.json' - undetected"); + System.exit(1); + } + + try { + values = loadJSONArray(filePath + "temp.json"); + for (int i = 0; i < values.size(); ++i) { + animal = values.getJSONObject(i); + dataM1[animal.getInt("id")][1] = "" + animal.getInt("zas2"); + dataM1[animal.getInt("id")][2] = animal.getString("nomer"); + dataM1[animal.getInt("id")][3] = animal.getString("client"); + dataM1[animal.getInt("id")][4] = animal.getString("object"); + dataM1[animal.getInt("id")][5] = "" + animal.getInt("price"); + dataM1[animal.getInt("id")][6] = "" + animal.getInt("prots"); + dataM1[animal.getInt("id")][7] = "" + animal.getInt("arenda"); + dataM1[animal.getInt("id")][8] = "" + animal.getInt("dopsor"); + dataM1[animal.getInt("id")][9] = animal.getString("note"); + dataM1[animal.getInt("id")][0] = "" + animal.getInt("ves"); + dataM1[animal.getInt("id")][10] = animal.getString("time"); + dataM1[animal.getInt("id")][11] = "" + animal.getInt("1/2"); + } + } + catch (Exception e) { + printFileLog("File 'temp.json' - undetected"); + System.exit(1); + } + + String[] temp; + temp = loadStrings(filePath + "kamazy.txt"); + if (temp == null) { + printFileLog("File 'kamazy.txt' - undetected"); + } else { + kamazy = temp; + } + + temp = loadStrings(filePath + "clients.txt"); + if (temp == null) { + printFileLog("File 'clients.txt' - undetected"); + } else { + clients = temp; + } + + for (int i = 0; i < m2; ++i) { + inData[i] = ""; + } + inData[6] = str(protsUmolch); +} diff --git a/SOURCE/Zasor2/Mouse.pde b/SOURCE/Zasor2/Mouse.pde new file mode 100644 index 0000000..2544fba --- /dev/null +++ b/SOURCE/Zasor2/Mouse.pde @@ -0,0 +1,201 @@ +//**************************************************** +void mousePressed() { + //--------------- + if ((mouseX > visClean[0]) && (mouseX < visClean[0] + visClean[2]) && + (mouseY > visClean[1]) && (mouseY < visClean[1] + visClean[3])) { + input = 3; + dataClear(); + inData[1] = ""; + inputData = ""; + flagProts = false; + flagConfirm = false; + } + //--------------- + if ((mouseX > visVes[0]) && (mouseX < visVes[0] + visVes[2]) && + (mouseY > visVes[1]) && (mouseY < visVes[1] + visVes[3]) && + flagStab && data != 0) { + TimeString(); + input = 1; + inData[0] = ""; + inData[0] += dataTablo; + inData[10] = time; + inputData = ""; + } + //--------------- + if ((mouseX > visOk[0]) && (mouseX < visOk[0] + visOk[2]) && + (mouseY > visOk[1]) && (mouseY < visOk[1] + visOk[3]) + && inData[0] != "" && inData[1] != "" && inData[2] != "" && inData[3] != "" + && int(inData[5]) != 0) { + input = 2; + if (vis == 0) { + saveData1(); + } else { + saveData2(); + } + inputData = ""; + dataClear(); + } + //--------------- + if ((mouseX > visZas2[0]+70) && (mouseX < visZas2[0] + visZas2[2] - 75) && + (mouseY > visZas2[1]) && (mouseY < visZas2[1] + visZas2[3])) { + workInputData(); + place = 1; + inputData = inData[place]; + } + if ((mouseX > visZas2[2]-60) && (mouseX < visZas2[0] + visZas2[2]) && + (mouseY > visZas2[1]) && (mouseY < visZas2[1] + visZas2[3])) { + workInputData(); + place = 11; + inputData = inData[place]; + } + if ((mouseX > visNom[0]+70) && (mouseX < visNom[0] + visNom[2]) && + (mouseY > visNom[1]) && (mouseY < visNom[1] + visNom[3])) { + workInputData(); + place = 2; + inputData = inData[place]; + } + if ((mouseX > visCl[0]+70) && (mouseX < visCl[0] + visCl[2]) && + (mouseY > visCl[1]) && (mouseY < visCl[1] + visCl[3])) { + workInputData(); + place = 3; + inputData = inData[place]; + } + if ((mouseX > visObj[0]+70) && (mouseX < visObj[0] + visObj[2]) && + (mouseY > visObj[1]) && (mouseY < visObj[1] + visObj[3])) { + workInputData(); + place = 4; + inputData = inData[place]; + } + if ((mouseX > visPrice[0]+70) && (mouseX < visPrice[0] + visPrice[2]) && + (mouseY > visPrice[1]) && (mouseY < visPrice[1] + visPrice[3])) { + workInputData(); + place = 5; + inputData = inData[place]; + } + if ((mouseX > visProts[0]+70) && (mouseX < visProts[0] + visProts[2]) && + (mouseY > visProts[1]) && (mouseY < visProts[1] + visProts[3])) { + workInputData(); + place = 6; + inputData = inData[place]; + } + if ((mouseX > visAren[0]+70) && (mouseX < visAren[0] + visAren[2]) && + (mouseY > visAren[1]) && (mouseY < visAren[1] + visAren[3])) { + workInputData(); + place = 7; + inputData = inData[place]; + } + if ((mouseX > visDopS[0]+70) && (mouseX < visDopS[0] + visDopS[2]) && + (mouseY > visDopS[1]) && (mouseY < visDopS[1] + visDopS[3])) { + workInputData(); + place = 8; + inputData = inData[place]; + } + if ((mouseX > visDopN[0]+70) && (mouseX < visDopN[0] + visDopN[2]) && + (mouseY > visDopN[1]) && (mouseY < visDopN[1] + visDopN[3])) { + workInputData(); + place = 9; + inputData = inData[place]; + } + //--------------- + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1]) && (mouseY < visVzw1[1] + visVzw1[3])) { + if (int(dataM1[0][0]) == 0) { + vis = 0; + } else { + vis = 1; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 30) && (mouseY < visVzw1[1] + visVzw1[3] + 30)) { + if (int(dataM1[1][0]) == 0) { + vis = 0; + } else { + vis = 2; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 60) && (mouseY < visVzw1[1] + visVzw1[3] + 60)) { + if (int(dataM1[2][0]) == 0) { + vis = 0; + } else { + vis = 3; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 90) && (mouseY < visVzw1[1] + visVzw1[3] + 90)) { + if (int(dataM1[3][0]) == 0) { + vis = 0; + } else { + vis = 4; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 120) && (mouseY < visVzw1[1] + visVzw1[3] + 120)) { + if (int(dataM1[4][0]) == 0) { + vis = 0; + } else { + vis = 5; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visVzw1[0]) && (mouseX < visVzw1[0] + visVzw1[2]) && + (mouseY > visVzw1[1] + 150) && (mouseY < visVzw1[1] + visVzw1[3] + 150)) { + if (int(dataM1[5][0]) == 0) { + vis = 0; + } else { + vis = 6; + place = 0; + dataIn(vis); + flagVzw = true; + flagProts = false; + } + } + if ((mouseX > visZas2[0]) && (mouseX < visZas2[0] + visZas2[2] - 150) && + (mouseY > visZas2[1]) && (mouseY < visZas2[1] + visZas2[3])) { + flagProts = !flagProts; + } +} + +//**************************************************** +void mouseReleased() { + if ((mouseX > visTablo[0]) && (mouseX < visTablo[0] + visTablo[2]) && + (mouseY > visTablo[1]) && (mouseY < visTablo[1] + visTablo[3])) { + myPort.write(vOff); + flagTablo = !flagTablo; + //vis = 0; + } + //--------------- + if ((mouseX > visClean[0]) && (mouseX < visClean[0] + visClean[2]) && + (mouseY > visClean[1]) && (mouseY < visClean[1] + visClean[3])) { + input = 0; + vis = 0; + inData[1] = ""; + } + if ((mouseX > visVes[0]) && (mouseX < visVes[0] + visVes[2]) && + (mouseY > visVes[1]) && (mouseY < visVes[1] + visVes[3])) { + input = 0; + } + if ((mouseX > visOk[0]) && (mouseX < visOk[0] + visOk[2]) && + (mouseY > visOk[1]) && (mouseY < visOk[1] + visOk[3])) { + input = 0; + } +} diff --git a/SOURCE/Zasor2/OutReport.pde b/SOURCE/Zasor2/OutReport.pde new file mode 100644 index 0000000..6862e5b --- /dev/null +++ b/SOURCE/Zasor2/OutReport.pde @@ -0,0 +1,133 @@ +// работа над числом для вывода + +float workNumber(float v) { + if (int(v * 1000) % 10 >= 5) { + v = int(v * 100 + 1) / 100.0; + } else { + v = int(v * 100) / 100.0; + } + return v; +} + +//***************************************************** +// Формирование отчета данных + +String outReport() { + table = loadTable(filePath + "base.csv", "header"); + String out = ""; + + int sumN1 = 0; + int sumN = 0; + int sumChist = 0; + int sumArenda = 0; + int sumDopSor = 0; + int sumSum = 0; + + String[] arrClients = {}; + for (TableRow row : table.rows()) { + arrClients = append(arrClients, row.getString("client").toLowerCase()); + int n1 = row.getInt(9) - row.getInt(10) - row.getInt(12) + row.getInt(13); + int n = row.getInt(9) - row.getInt(12) + row.getInt(17) / 2; + int chist = int(row.getInt(9) - row.getInt(12) - (row.getInt(9) - row.getInt(12)) / 100.0 * + row.getInt(7) - row.getInt(15) + row.getInt(17) / 2); + int sum = chist * row.getInt(6) / 1000; + + sumN1 += n1; + sumN += n; + sumChist += chist; + sumArenda += row.getInt(14); + sumDopSor += row.getInt(15); + sumSum += sum; + } + + out += "\nВсего взвешиваний: " + table.getRowCount(); + out += "\n\nКам / ДС\n"; + out += workNumber(sumArenda / 1000.0) + " / " + workNumber(sumDopSor / 1000.0) + "\n\n"; + out += "% / з2 / %\n"; + out += workNumber((sumN - sumChist - sumDopSor) / float(sumN) * 100) + " / "; + out += workNumber((sumN1 - sumN) / 1000.0) + " / "; + out += workNumber((sumN1 - sumChist) / float(sumN1) * 100) + "\n\n"; + out += "Н1 / Н\n"; + out += workNumber(sumN1 / 1000.0) + " / " + workNumber(sumN / 1000.0) + "\n\n"; + out += "Ч / Сум / Средн\n"; + out += workNumber(sumChist / 1000.0) + " / " + workNumber(sumSum / 1000.0) + " / "; + out += int(workNumber(float(sumSum) / sumChist * 1000)) + "\n\n"; + + int sumKamazy = 0; + int sumKamEach = 0; + //boolean flagTemp = false; + out += "---------------------\n\n"; + + for (int k = 0; k < kamazy.length; ++k) { + //if (kamazy[k].charAt(0) == '_' && !flagTemp) { + // out += "\n---------------------\nКамазы: " + + // workNumber(sumKamazy / 1000.0) + "т.\n\n"; + // flagTemp = true; + //} + for (TableRow row : table.findRows(kamazy[k], "nomer")) { + sumKamEach += row.getInt(9) - row.getInt(12) - int((row.getInt(9) - + row.getInt(12)) / 100.0 * row.getInt(7)) - row.getInt(15) + row.getInt(17); + } + String j = ""; + if (kamazy[k].charAt(0) != '_' && sumKamEach == 0) { + out += ""; + } else { + if (sumKamEach != 0) j += workNumber(sumKamEach / 1000.0); + out += kamazy[k] + " - " + j + "\n"; + } + if (kamazy[k].charAt(0) == '_') sumKamazy += sumKamEach; + sumKamEach = 0; + } + out += "---------------------\nКамазы: " + workNumber(sumKamazy / 1000.0) + " т.\n"; + out += "\n---------------------\n"; + + String[] arrClientsUnic = {arrClients[0]}; + int countU = 0; + for (int a = 0; a < arrClients.length; ++a) { + for (int r = 0; r < arrClientsUnic.length; ++r) { + if (arrClients[a].equals(arrClientsUnic[r])) { + countU = 0; + break; + } else { + countU++; + } + } + if (countU != 0) arrClientsUnic = append(arrClientsUnic, arrClients[a]); + } + arrClientsUnic = sort(arrClientsUnic); + + int sumClientEach = 0; + int priceClient = 0; + + for (int k = 0; k < arrClientsUnic.length; ++k) { + for (TableRow row : table.findRows(arrClientsUnic[k], "client")) { + sumClientEach += row.getInt(9) - row.getInt(12) - int((row.getInt(9) - + row.getInt(12)) / 100.0 * row.getInt(7)) - row.getInt(15) + row.getInt(17); + priceClient = row.getInt(6); + } + if (sumClientEach == 0) { + out += ""; + } else { + out += workNumber(sumClientEach / 1000.0) + " \t- " + priceClient / 1000.0 + "\t- " + arrClientsUnic[k] + "\n"; + } + sumClientEach = 0; + } + return out; +} + +//***************************************************** +// Запись в файл лога: +void printFileLog(String dataLog) { + TimeString(); + + String[] lines = {}; + if (loadStrings(filePathLog) == null) { + saveStrings(put + filePathLog, lines); + lines = loadStrings(filePathLog); + } + loadStrings(filePathLog); + lines = append(lines, timeReport + "_" + timeArh + " z2 " + dataLog); + saveStrings(put + filePathLog, lines); +} + +//***************************************************** diff --git a/SOURCE/Zasor2/Visible.pde b/SOURCE/Zasor2/Visible.pde new file mode 100644 index 0000000..0d112b7 --- /dev/null +++ b/SOURCE/Zasor2/Visible.pde @@ -0,0 +1,381 @@ +// отображение +// Режим рабочий: +void visible() { + // основной верхний и нижний контур + strokeWeight(3); + fill(#CFCFCF); + rect(4, 3, 394, 338, fillet); + rect(4, 348, 394, 188, fillet); + + strokeWeight(1.2); + // табло + if (!flagTablo) { + fill(#00FF7F); + rect(visTablo[0], visTablo[1], visTablo[2], visTablo[3], fillet); + fill(255, 0, 0); + } else { + fill(255, 0, 0); + rect(visTablo[0], visTablo[1], visTablo[2], visTablo[3], fillet); + fill(#00FF7F); + } + rect(visTablo[0]+4, visTablo[1]+4, visTablo[2]-8, visTablo[3]-8, fillet); + fill(0); + textSize(50); + text(dataTablo, visTablo[0] + 32, visTablo[1] + 58); + textSize(12); + text(numberReport, visTablo[0] + 10, visTablo[1] + 20); + textSize(10); + text(data, visTablo[0] + 10, visTablo[1] + 72); + + + fill(#1E90FF); + rect(visVzw[0], visVzw[1], visVzw[2], visVzw[3], fillet + 5); + textSize(40); + fill(255); + text(inData[0], visVzw[0] + 10, visVzw[1] + 50); + + if (place == 1) { + fill(255); + rect(visZas2[0], visZas2[1], visZas2[2] - 75, visZas2[3], fillet); + fill(150, 50, 255); + if (flagProts) fill(255, 150, 150); + rect(visZas2[0], visZas2[1], visZas2[2] - 150, visZas2[3], fillet); + fill(255); + rect(visZas2[0] + 3, visZas2[1] + 3, visZas2[2] - 156, visZas2[3] - 6, fillet); + fill(0); + textSize(16); + text(inputData, visZas2[0] + 85, visZas2[1] + 21); + } else { + fill(#FFD700); + rect(visZas2[0], visZas2[1], visZas2[2] - 75, visZas2[3], fillet); + rect(visZas2[2] - 60, visZas2[1], 70, visZas2[3], fillet); + fill(150, 50, 255); + if (flagProts) fill(255, 150, 150); + rect(visZas2[0], visZas2[1], visZas2[2] - 150, visZas2[3], fillet); + fill(#FFD700); + rect(visZas2[0] + 3, visZas2[1] + 3, visZas2[2] - 156, visZas2[3] - 6, fillet); + fill(0); + textSize(16); + text(inData[1], visZas2[0] + 85, visZas2[1] + 21); + } + + if (place == 11) { + fill(255); + rect(visZas2[2] - 60, visZas2[1], 70, visZas2[3], fillet); + fill(0); + textSize(16); + text(inputData, visZas2[2] - 45, visZas2[1] + 21); + } else { + fill(#FFD700); + rect(visZas2[2] - 60, visZas2[1], 70, visZas2[3], fillet); + fill(0); + textSize(16); + text(inData[11], visZas2[2] - 45, visZas2[1] + 21); + } + + fill(0); + textSize(16); + String a = (!flagProts) ? "кг" : " %"; + text(a, visZas2[0] + 27, visZas2[1] + 21); + + if (place == 2) { + fill(255); + rect(visNom[0], visNom[1], visNom[2], visNom[3], fillet); + rect(visNom[0], visNom[1], visNom[2] - 150, visNom[3], fillet); + textSize(16); + fill(0); + textSize(16); + text(inputData, visNom[0] + 80, visNom[1] + 21); + } else { + fill(#FFD700); + rect(visNom[0], visNom[1], visNom[2], visNom[3], fillet); + rect(visNom[0], visNom[1], visNom[2] - 150, visNom[3], fillet); + textSize(16); + fill(0); + textSize(16); + text(inData[2], visNom[0] + 80, visNom[1] + 21); + } + fill(0); + textSize(14); + text("Номер", visNom[0] + 13, visNom[1] + 21); + + if (place == 3) { + fill(255); + rect(visCl[0], visCl[1], visCl[2], visCl[3], fillet); + rect(visCl[0], visCl[1], visCl[2] - 150, visCl[3], fillet); + fill(0); + textSize(16); + text(inputData, visCl[0] + 80, visCl[1] + 21); + } else { + fill(#DDA0DD); + rect(visCl[0], visCl[1], visCl[2], visCl[3], fillet); + rect(visCl[0], visCl[1], visCl[2] - 150, visCl[3], fillet); + fill(0); + textSize(16); + text(inData[3], visCl[0] + 80, visCl[1] + 21); + } + fill(0); + textSize(14); + text("Клиент", visCl[0] + 9, visCl[1] + 21); + + if (place == 4) { + fill(255); + rect(visObj[0], visObj[1], visObj[2], visObj[3], fillet); + rect(visObj[0], visObj[1], visObj[2] - 150, visObj[3], fillet); + fill(0); + textSize(16); + text(inputData, visObj[0] + 80, visObj[1] + 21); + } else { + fill(#DDA0DD); + rect(visObj[0], visObj[1], visObj[2], visObj[3], fillet); + rect(visObj[0], visObj[1], visObj[2] - 150, visObj[3], fillet); + fill(0); + textSize(16); + text(inData[4], visObj[0] + 80, visObj[1] + 21); + } + fill(0); + textSize(14); + text("Объект", visObj[0] + 9, visObj[1] + 21); + + if (place == 5) { + fill(255); + rect(visPrice[0], visPrice[1], visPrice[2], visPrice[3], fillet); + rect(visPrice[0], visPrice[1], visPrice[2] - 85, visPrice[3], fillet); + fill(0); + textSize(16); + text(inputData, visPrice[0] + 85, visPrice[1] + 21); + } else { + fill(#FFE4C4); + rect(visPrice[0], visPrice[1], visPrice[2], visPrice[3], fillet); + rect(visPrice[0], visPrice[1], visPrice[2] - 85, visPrice[3], fillet); + fill(0); + textSize(16); + text(inData[5], visPrice[0] + 85, visPrice[1] + 21); + } + fill(0); + textSize(14); + text("Цена", visPrice[0] + 16, visPrice[1] + 21); + + if (place == 6) { + fill(255); + rect(visProts[0], visProts[1], visProts[2], visProts[3], fillet); + rect(visProts[0], visProts[1], visProts[2] - 85, visProts[3], fillet); + fill(0); + textSize(16); + text(inputData, visProts[0] + 105, visProts[1] + 21); + } else { + fill(#FFE4C4); + rect(visProts[0], visProts[1], visProts[2], visProts[3], fillet); + rect(visProts[0], visProts[1], visProts[2] - 85, visProts[3], fillet); + fill(0); + textSize(16); + text(inData[6], visProts[0] + 105, visProts[1] + 21); + } + fill(0); + textSize(14); + text("Засор", visProts[0] + 16, visProts[1] + 21); + + if (place == 7) { + fill(255); + rect(visAren[0], visAren[1], visAren[2], visAren[3], fillet); + rect(visAren[0], visAren[1], visAren[2] - 85, visAren[3], fillet); + fill(0); + textSize(16); + text(inputData, visAren[0] + 90, visAren[1] + 21); + } else { + fill(#32CD32); + rect(visAren[0], visAren[1], visAren[2], visAren[3], fillet); + rect(visAren[0], visAren[1], visAren[2] - 85, visAren[3], fillet); + fill(0); + textSize(16); + text(inData[7], visAren[0] + 90, visAren[1] + 21); + } + fill(0); + textSize(14); + text("Аренда", visAren[0] + 9, visAren[1] + 21); + + if (place == 8) { + fill(255); + rect(visDopS[0], visDopS[1], visDopS[2], visDopS[3], fillet); + rect(visDopS[0], visDopS[1], visDopS[2] - 85, visDopS[3], fillet); + fill(0); + textSize(16); + text(inputData, visDopS[0] + 95, visDopS[1] + 21); + } else { + fill(#FF8C69); + rect(visDopS[0], visDopS[1], visDopS[2], visDopS[3], fillet); + rect(visDopS[0], visDopS[1], visDopS[2] - 85, visDopS[3], fillet); + fill(0); + textSize(16); + text(inData[8], visDopS[0] + 95, visDopS[1] + 21); + } + fill(0); + textSize(14); + text("ДопСор", visDopS[0] + 8, visDopS[1] + 21); + + if (place == 9) { + fill(255); + rect(visDopN[0], visDopN[1], visDopN[2], visDopN[3], fillet); + rect(visDopN[0], visDopN[1], visDopN[2] - 310, visDopN[3], fillet); + fill(0); + textSize(16); + text(inputData, visDopN[0] + 80, visDopN[1] + 21); + } else { + fill(#FF8C69); + rect(visDopN[0], visDopN[1], visDopN[2], visDopN[3], fillet); + rect(visDopN[0], visDopN[1], visDopN[2] - 310, visDopN[3], fillet); + fill(0); + textSize(16); + text(inData[9], visDopN[0] + 80, visDopN[1] + 21); + } + fill(0); + textSize(14); + text("Прим.", visDopN[0] + 14, visDopN[1] + 21); + //-------------------- + stroke(0); + if (input == 3) { + fill(0); + rect(visClean[0], visClean[1], visClean[2], visClean[3], fillet + 5); + rect(visClean[0] + 9, visClean[1] + 9, visClean[2] - 18, visClean[3] - 18, fillet + 5); + place = 0; + } else { + fill(#836FFF); + rect(visClean[0], visClean[1], visClean[2], visClean[3], fillet + 5); + rect(visClean[0]+3, visClean[1]+3, visClean[2]-3*2, visClean[3]-3*2, fillet + 5); + } + fill(255); + textSize(24); + text("C", visClean[0] + 11, visClean[1] + 29); + + stroke(0); + if (input == 1) { + fill(0); + rect(visVes[0] + 6, visVes[1] + 6, visVes[2] - 12, visVes[3] - 12, fillet + 5); + rect(visVes[0] + 9, visVes[1] + 9, visVes[2] - 18, visVes[3] - 18, fillet + 5); + place = 0; + } else { + if (flagStab && data != 0) { + fill(#228B22); + } else { + fill(255, 0, 0); + } + rect(visVes[0], visVes[1], visVes[2], visVes[3], fillet + 5); + rect(visVes[0] + 3, visVes[1] + 3, visVes[2] - 6, visVes[3] - 6, fillet + 5); + } + fill(255); + textSize(24); + text("Взвесить", visVes[0] + 40, visVes[1] + 28); + + stroke(0); + if (input == 2) { + fill(0); + rect(visOk[0] + 6, visOk[1] + 6, visOk[2] - 12, visOk[3] - 12, fillet + 5); + rect(visOk[0] + 9, visOk[1] + 9, visOk[2] - 18, visOk[3] - 18, fillet + 5); + place = 0; + } else { + if (inData[0] != "" && inData[1] != "" && inData[2] != "" && inData[3] != "" + && int(inData[5]) != 0) { + fill(#54FF9F); + } else { + fill(#BC8F8F); + } + rect(visOk[0], visOk[1], visOk[2], visOk[3], fillet + 5); + rect(visOk[0] + 3, visOk[1] + 3, visOk[2] - 6, visOk[3] - 6, fillet + 5); + } + fill(255); + textSize(24); + text("Oк", visOk[0] + 37, visOk[1] + 28); + //-------------------- + for (int i = 0; i < m1; ++i) { + stroke(1); + fill(#00BFFF); + if (vis - 1 == i) fill(255); + rect(visVzw1[0], visVzw1[1] + 30 * i, visVzw1[2], visVzw1[3]); + rect(visVzw1[0] + 100, visVzw1[1] + 30 * i, visVzw1[2] - 270, visVzw1[3]); + rect(visVzw1[0] + 300, visVzw1[1] + 30 * i, visVzw1[2] - 300, visVzw1[3]); + fill(0); + textSize(12); + + text(dataM1[i][2], visVzw1[0] + 18, visVzw1[1] + 30 * i + 17); + text(dataM1[i][3], visVzw1[0] + 110, visVzw1[1] + 30 * i + 17); + if (int(dataM1[i][0]) != 0) { + text(dataM1[i][0], visVzw1[0] + 235, visVzw1[1] + 30 * i + 17); + } else { + text("", visVzw1[0] + 235, visVzw1[1] + 30 * i + 17); + } + if (int(dataM1[i][1]) != 0) { + text(dataM1[i][1], visVzw1[0] + 320, visVzw1[1] + 30 * i + 17); + } else { + text("", visVzw1[0] + 320, visVzw1[1] + 30 * i + 17); + } + } + + if (place == 2 && flagMenu) { + strokeWeight(3); + fill(255); + rect(menu[0], menu[1] + 30, menu[2], kamazy.length * offsetMenu, fillet); + strokeWeight(1); + for (int m = 0; m < kamazy.length; ++m) { + fill(0, 255, 0); + if (visMenu != m) fill(255); + rect(menu[0], menu[1] + offsetMenu * m + 30, menu[2], offsetMenu, fillet); + fill(0); + textSize(15); + text(kamazy[m], menu[0] + 20, menu[1] + offsetMenu * (m + 1) - 7 + 30); + } + } + + if (place == 3 && flagMenu) { + strokeWeight(3); + fill(255); + rect(menu[0], menu[1] - 8, menu[2], clients.length * offsetMenu, fillet); + strokeWeight(1); + for (int m = 0; m < clients.length; ++m) { + fill(0, 255, 0); + if (visMenu != m) fill(255); + rect(menu[0], menu[1] + offsetMenu * m - 8, menu[2], offsetMenu, fillet); + fill(0); + textSize(15); + text(clients[m], menu[0] + 15, menu[1] - 8 + offsetMenu * (m + 1) - 7); + } + } + + if (flagConfirm) { + fill(255); + strokeWeight(3); + fill(84, 255, 159); + rect(50, 50, 300, 200, fillet); + textSize(25); + fill(0); + text("Отправить отчет ?", 90, 110); + fill(255); + rect(210, 145, 45, 35, fillet); + rect(210, 195, 45, 35, fillet); + fill(0); + textSize(20); + text("Да - Д", 155, 170); + text("Нет - Н", 145, 220); + } +} + +//***************************************************** +void visible2() { + if (focused) { + fill(0, 255, 0); + textSize(125); + rect(1, 1, 398, 199); + fill(0); + text(dataTablo, 3, 150); + textSize(22); + text("[" + serialPort + "] - " + Serial.list()[serialPort], 10, 500); + } else { + background(0); + fill(0, 0, 255); + textSize(125); + rect(1, 1, 398, 199); + fill(255); + text(dataTablo, 3, 150); + textSize(22); + text("[" + serialPort + "] - " + Serial.list()[serialPort], 10, 500); + } +} diff --git a/SOURCE/Zasor2/Zasor2.pde b/SOURCE/Zasor2/Zasor2.pde new file mode 100644 index 0000000..8f5b4e9 --- /dev/null +++ b/SOURCE/Zasor2/Zasor2.pde @@ -0,0 +1,483 @@ +//******************************************************************* +// Zasor2 +// 2020.09.21 - 2025.02.16 +// v. 1067 +//******************************************************************* +import processing.serial.*; + +//PFont myFont; + +Serial myPort; // The serial portSerial myPort; +int lf; // кол-во знаков в посылке с весов +int serialPort; // порядковый номер Serial порта +int portSpeed; // скорость Serial порта +int beginIn; // начало данных в посылке с весов +String vIn; // начало посылки с весов (текст) +String vOut; // конец посылки с весов (текст) +String vOff; // весы выключены (текст) +String filePath; // путь для сохранения файла +int threshold; // порог веса +int stab; // кол-во повторяющихся данных с весов +int tara; // тара а/м для % +int protsUmolch; // % по умолчанию +int numberReport; // номер отчета в году (месяце и тд) + +// Переменные: +int data = 0; // данные с весов +int dataTemp = 0; +String time, timeArh, timeMonth, timeDate, timeExc, timeReport; +String inputData = ""; +boolean flagTablo = false; +boolean flagProts = false; +int place = 0; +int input = 0; +int stabTemp = 0; +boolean flagWork = false; +boolean flagStab = false; +boolean flagWeight = true; +boolean flagVzw = false; +int dataCorProts = 0; +int dataTablo = 0; +int onTime = 0; +int click = 500; +boolean flagButOn = false; + +String put = "data/"; // путь для сохранения файла настроек +String filePathLog = "LogFile.txt"; +PrintWriter outputCrash; // объект output (для файла) + +int fillet = 5; // скругление +int[] visTablo = {10, 10, 220, 80}; +int[] visVzw = {240, 15, 147, 70}; + +int[] visZas2 = {10, 110, 220, 30}; +int[] visNom = {10, 145, 220, 30}; +int[] visCl = {10, 180, 220, 30}; +int[] visObj = {10, 215, 220, 30}; +int[] visDopN = {10, 250, 382, 30}; + +int[] visPrice = {235, 110, 157, 30}; +int[] visProts = {235, 145, 157, 30}; +int[] visAren = {235, 180, 157, 30}; +int[] visDopS = {235, 215, 157, 30}; + +int[] visClean = {20, 290, 40, 40}; +int[] visVes = {80, 290, 180, 40}; +int[] visOk = {270, 290, 112, 40}; +int[] visVzw1 = {10, 355, 382, 25}; + +int[] menu = {235, 15, 157, 497}; +int offsetMenu = 25; +int inputMenu = 0; +int visMenu = 0; +boolean flagMenu = false; + +boolean flagConfirm = false; + +String[] kamazy; +String[] clients; + +int m1 = 6; // кол-во первых взвешиваний +int m2 = 15; // кол-во данных о первых взвешиваниях (номер, вес, корр) +String[][] dataM1 = new String[m1][m2]; +String[] dataM2 = new String[m2]; +String[] inData = new String[m2]; +int vis = 0; + +Table table; +boolean flagOpen = false; + +//***************************************************** +void setup() { + //myFont = createFont("Arial", 12); + //textFont(myFont); + printArray(Serial.list()); + loadSetup(); + size(403, 542); + try { + myPort = new Serial(this, Serial.list()[serialPort], portSpeed); + myPort.bufferUntil(lf); + myPort.write(vOff); + } + catch (Exception e) { + TimeString(); + String lines = "COMport = " + serialPort + " - does not exist"; + printFileLog(lines); + + strokeWeight(3); + fill(#CFCFCF); + rect(4, 3, 394, 338, fillet); + rect(4, 348, 394, 188, fillet); + fill(255, 0, 0); + textSize(24); + text("COM ( " + serialPort + " ) НЕ НАЙДЕН !", 60, 158); + + stop(); + } +} + +//***************************************************** +void draw() { + background(#CFCFCF); + if (flagOpen) { + visible(); + if (flagTablo && flagWeight) tabloVisible(); + } else { + visible2(); + if (flagWeight) tabloVisible(); + } +} + +//***************************************************** +// выбор папки с файлами: +void folderSelected(File selection) { + if (selection == null) { + println("Window was closed or the user hit cancel."); + stop(); + System.exit(1); + } else { + filePath = selection.getAbsolutePath() + "/"; + filePath = filePath.replace("\\", "/"); + println(filePath); + flagWork = true; + } +} + +//***************************************************** +// данные с Serial +void serialEvent(Serial p) { + data = int(p.readString().substring(beginIn, beginIn + 6)); + if (data != dataTemp) { + dataTemp = data; + stabTemp = 0; + flagStab = false; + } else { + stabTemp++; + if (stabTemp == stab) { + flagStab = true; + stabTemp = 0; + } + } + if (data > threshold) { + if (flagProts && data > tara + 1000) { + dataTablo = data + (data - tara) / 100 * int(inData[1]) / 10 * 10; + dataCorProts = (data - tara) / 100 * int(inData[1]) / 10 * 10; + } else { + dataTablo = data + int(inData[1]); + dataCorProts = int(inData[1]); + } + } else { + dataTablo = data; + } + flagWeight = true; +} + +//***************************************************** +// запись файла настроек +void writeSetup() { + JSONArray values; + values = new JSONArray(); + JSONObject animal = new JSONObject(); + animal.setInt("COMport", serialPort); + animal.setInt("portSpeed", portSpeed); + animal.setInt("numberScales", lf); + animal.setInt("beginIn", beginIn); + animal.setString("scalesIn", vIn); + animal.setString("scalesOut", vOut); + animal.setString("scalesOff", vOff); + animal.setString("filePath", filePath); + animal.setInt("threshold", threshold); + animal.setInt("stabWeight", stab); + animal.setInt("tara", tara); + animal.setInt("protsUmolch", protsUmolch); + animal.setInt("numberReport", numberReport); + + values.setJSONObject(0, animal); + saveJSONArray(values, filePath + "option.json"); +} +//***************************************************** +// вывод времени +void TimeString() { + String D = ""; + String H = ""; + String M = ""; + String S = ""; + String Y = ""; + String N = ""; + Y += year(); + N += (month() < 10) ? "0" + month() : month(); + D += (day() < 10) ? "0" + day() : day(); + H += (hour() < 10) ? "0" + hour() : hour(); + M += (minute() < 10) ? "0" + minute() : minute(); + S += (second() < 10) ? "0" + second() : second(); + time = H + ":" + M + ":" + S; + timeArh = H + M + S; + timeMonth = N; + timeDate = D; + timeExc = D + "_" + H + ":" + M + ":" + S; + timeReport = Y + N + "_" + D; +} + +//**************************************************** +// обработчик inputData +void workInputData() { + if (place == 1 && !flagProts) { + inData[1] = ""; + inData[1] += int(inputData) / 10 * 10; + } else + if (place == 5) { + inData[5] = ""; + inData[5] += int(inputData) / 100 * 100; + } else if (place == 5) { + inData[5] = ""; + inData[5] += int(inputData) / 100 * 100; + } else if (place == 6) { + inData[6] = ""; + inData[6] += int(inputData); + } else if (place == 7) { + inData[7] = ""; + inData[7] += int(inputData) / 10 * 10; + } else if (place == 8) { + inData[8] = ""; + inData[8] += int(inputData) / 10 * 10; + } else if (place == 11) { + inData[11] = ""; + inData[11] += int(inputData) / 10 * 10; + } else if (place != 0) inData[place] = inputData; +} + +//**************************************************** +// +void dataIn(int a) { + //TimeString(); + inData[0] = ""; + //inData[1] = ""; + inData[2] = dataM1[a-1][2]; + inData[3] = dataM1[a-1][3]; + inData[4] = dataM1[a-1][4]; + inData[5] = dataM1[a-1][5]; + inData[6] = dataM1[a-1][6]; + inData[7] = dataM1[a-1][7]; + inData[8] = dataM1[a-1][8]; + inData[9] = dataM1[a-1][9]; + inData[12] = dataM1[a-1][10]; + inData[11] = dataM1[a-1][11]; + + //time = ""; +} + +//***************************************************** +// вывод веса на табло +void tabloVisible() { + String temp = ""; + temp += vIn + nf(dataTablo, 5) + vOut; + myPort.write(temp); + flagWeight = false; + println(temp + "\t" + int(inData[1]) + "\t" + place + "\t" + + inputData + "\t" + numberReport); +} +//***************************************************** +// запись данных 1 взвешивания +void saveData1() { + TimeString(); + if (vis == 0) { + for (int k = m1 - 1; k > 0; --k) { + for (int n = 0; n < m2; ++n) { + dataM1[k][n] = dataM1[k - 1][n]; + } + } + dataM1[0][0] = inData[0]; + if (flagProts) { + dataM1[0][1] = ""; + dataM1[0][1] += dataCorProts; + } else { + dataM1[0][1] = inData[1]; + } + dataM1[0][2] = inData[2]; + dataM1[0][3] = inData[3]; + dataM1[0][4] = inData[4]; + dataM1[0][5] = inData[5]; + dataM1[0][6] = inData[6]; + dataM1[0][7] = inData[7]; + dataM1[0][8] = inData[8]; + dataM1[0][9] = inData[9]; + dataM1[0][10] = inData[10]; + dataM1[0][11] = inData[11]; + vis = 0; + place = 0; + + JSONArray values; + values = new JSONArray(); + for (int a = 0; a < m1; ++a) { + JSONObject animal = new JSONObject(); + animal.setInt("id", a); + animal.setInt("zas2", int(dataM1[a][1])); + animal.setString("nomer", dataM1[a][2]); + animal.setString("client", dataM1[a][3]); + animal.setString("object", dataM1[a][4]); + animal.setInt("price", int(dataM1[a][5])); + animal.setInt("prots", int(dataM1[a][6])); + animal.setInt("arenda", int(dataM1[a][7])); + animal.setInt("dopsor", int(dataM1[a][8])); + animal.setString("note", dataM1[a][9]); + animal.setInt("ves", int(dataM1[a][0])); + animal.setInt("1/2", int(dataM1[a][11])); + animal.setString("time", dataM1[a][10]); + values.setJSONObject(a, animal); + } + saveJSONArray(values, filePath + "temp.json"); + time = ""; + } +} +//**************************************************** +// запись данных 2 взвешивания +void saveData2() { + TimeString(); + + dataM2[0] = dataM1[vis-1][0]; + dataM2[1] = dataM1[vis-1][1]; + dataM2[2] = inData[2]; + dataM2[3] = inData[3]; + dataM2[4] = inData[4]; + dataM2[5] = inData[5]; + dataM2[6] = inData[6]; + dataM2[7] = inData[7]; + dataM2[8] = inData[8]; + dataM2[9] = inData[9]; + dataM2[10] = time; // dataM1[vis-1][10]; + dataM2[11] = inData[0]; + dataM2[12] = inData[11]; + + if (flagProts) { + dataM2[13] = ""; + dataM2[13] += dataCorProts; + } else { + dataM2[13] = inData[1]; + } + + dataSave2next(); + dataSave2next2(); +} +//**************************************************** +void dataSave2next() { + for (int k = vis-1; k < m1-1; ++k) { + for (int n = 0; n < m2; ++n) { + dataM1[k][n] = dataM1[k+1][n]; + } + } + for (int i = 0; i < m2; ++i) { + dataM1[m1-1][i] = ""; + } + vis = 0; + + JSONArray values; + values = new JSONArray(); + for (int a = 0; a < m1; ++a) { + JSONObject animal = new JSONObject(); + //animal.setInt("id_R", numberReport); + animal.setInt("id", a); + animal.setInt("zas2", int(dataM1[a][1])); + animal.setString("nomer", dataM1[a][2]); + animal.setString("client", dataM1[a][3]); + animal.setString("object", dataM1[a][4]); + animal.setInt("price", int(dataM1[a][5])); + animal.setInt("prots", int(dataM1[a][6])); + animal.setInt("arenda", int(dataM1[a][7])); + animal.setInt("dopsor", int(dataM1[a][8])); + animal.setString("note", dataM1[a][9]); + animal.setInt("ves", int(dataM1[a][0])); + animal.setString("time", dataM1[a][10]); + animal.setInt("1/2", int(dataM1[a][11])); + values.setJSONObject(a, animal); + } + saveJSONArray(values, filePath + "temp.json"); +} +//**************************************************** +void dataSave2next2() { + table = loadTable(filePath + "base.csv", "header"); + + TableRow newRow = table.addRow(); + //newRow.setInt("id_R", numberReport); + newRow.setInt("date", int(timeDate)); + newRow.setInt("id", table.getRowCount()); + newRow.setString("nomer", dataM2[2]); + newRow.setString("client", dataM2[3].toLowerCase()); + newRow.setString("object", dataM2[4]); + newRow.setInt("price", int(dataM2[5])); + newRow.setInt("prots", int(dataM2[6])); + newRow.setString("time1", inData[12]); + newRow.setInt("ves1", int(dataM2[0])); + newRow.setInt("cor1", int(dataM2[1])); + newRow.setString("time2", dataM2[10]); + newRow.setInt("ves2", int(dataM2[11])); + newRow.setInt("cor2", int(dataM2[13])); + newRow.setInt("arenda", int(dataM2[7])); + newRow.setInt("dopsor", int(dataM2[8])); + newRow.setString("note", dataM2[9]); + int u = int(dataM2[0])*2 + int(dataM2[1])*2 + int(dataM2[11])*2 + + int(dataM2[13])*2 + int(dataM2[7])*2 + int(dataM2[8])*2; + newRow.setInt("id_R", u); + newRow.setInt("1/2", int(dataM2[12])); + + String j = ","; + String rowArh = table.getRowCount() + j + dataM2[2] + j + dataM2[3] + j + + dataM2[4] + j + dataM2[5] + j + dataM2[6] + j + dataM2[10] + j + dataM2[0] + j + + dataM2[1] + j + dataM2[11] + j + dataM2[13] + j + dataM2[7] + j + dataM2[8] + + j + dataM2[9] + j + dataM2[12]; + + String[] list = {rowArh}; + saveTable(table, filePath + "base.csv"); + saveStrings(filePath + "Arhive/" + timeMonth + "/" + timeDate + "/" + + timeArh + ".txt", list); + + String[] rep = {outReport()}; + saveStrings(filePath + "report.txt", rep); +} + +//**************************************************** +void dataSaveReport() { + TimeString(); + + String[] rep = {outReport()}; + saveStrings(filePath + timeReport + "_" + timeArh + ".txt", rep); + + saveTable(table, filePath + timeReport + "_" + timeArh + ".csv"); + saveTable(table, filePath + "Arhive/" + timeMonth + "/" + timeDate + + "/" + timeReport + "_" + timeArh + ".csv"); + dataNullBase(); +} + +void dataNullBase() { + Table tableNew = new Table(); + tableNew.addColumn("id_R"); + tableNew.addColumn("date"); + tableNew.addColumn("id"); + tableNew.addColumn("nomer"); + tableNew.addColumn("client"); + tableNew.addColumn("object"); + tableNew.addColumn("price"); + tableNew.addColumn("prots"); + tableNew.addColumn("time1"); + tableNew.addColumn("ves1"); + tableNew.addColumn("cor1"); + tableNew.addColumn("time2"); + tableNew.addColumn("ves2"); + tableNew.addColumn("cor2"); + tableNew.addColumn("arenda"); + tableNew.addColumn("dopsor"); + tableNew.addColumn("note"); + tableNew.addColumn("1/2"); + saveTable(tableNew, filePath + "base.csv"); +} + +//**************************************************** +// очистка данных +void dataClear() { + for (int m = 0; m < m2; ++m) { + if (m == 1) ++m; + inData[m] = ""; + } + inData[6] += protsUmolch; +} + +//***************************************************** diff --git a/ПРОЧИТАЙ_!!!.txt b/ПРОЧИТАЙ_!!!.txt new file mode 100644 index 0000000..9bb5451 --- /dev/null +++ b/ПРОЧИТАЙ_!!!.txt @@ -0,0 +1,11 @@ +1 Копируем 2 папки туда, куда нужно + (например в корень диска С:) +2 Создаем ярлыки на Рабочем столе + (правой кнопкой мыши по файлу ___.exe + -> Отправить -> Рабочий стол (создать ярлык)) +3 Запускаем файл +4 Если запрашивает ПАПКУ (в которой все рабочие файлы (=Яндекс диск=)) + -> выбираем её (ИМЕННО ПАПКУ, а не ФАЙЛ!!!) +5 Если нужно все сделать заново(очистить все) + -> удаляем ВСЕ файлы из папки =data= и повторяем п3 и п4 +6 Пути к файлам вручную больше прописывать НЕ НАДО !
\ No newline at end of file |
