දේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)

මෙම වෙබ් අඩවියෙන් ආරම්භ කරන්න ලින්ක්.
ආරම්භකය සක්රිය කිරීම පිළිබඳ තොරතුරු ලබා ගැනීම සඳහා වඩාත් පහසු විකල්පය PC817 optocoupler සමඟ ඇති විකල්පය බවට පත් විය. ක්රමානුරූප සටහනදේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)පුවරු සමාන පරිපථ තුනක් අඩංගු වේ, සෑම දෙයක්ම ABS ප්ලාස්ටික් පෙට්ටිවල තබා ඇත, ප්රමාණය 100x100 මි.මී. ඔප්ටොකප්ලර් වල ඡායාරූපයදේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම) අර්ධ සන්නායක කපාට සහිත ආරම්භක උපාංගවලට සම්බන්ධ වූ විට, ඒවායේ කාන්දු වන ධාරාව PC817 විවෘත කිරීමට ප්රමාණවත් වන අතර කවුන්ටරය ව්යාජ ලෙස අවුලුවනු ඇත. එවැනි තත්වයක් බැහැර කිරීම සඳහා ඔප්ටොකප්ලර් LED සහ මෙහෙයුම් දර්ශකය LED ​​පරිපථයට ශ්‍රේණිගතව තවත් එකක් එකතු වේ. මෙය සිදු කිරීම සඳහා, ජම්පර් J1 විවෘත කර අතිරේක LED LED1 පෑස්සුම් කර ඇත.
ලැබෙන කොටස සාදා ඇත පැත්ත 1දේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)පැත්ත 2දේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)සංවර්ධන පුවරුව ARDUINO MEGA 2560 වෙත සම්බන්ධ කර ඇත. මේ සඳහා, ද්විත්ව පේළි සම්බන්ධකයක් අවසානයේ භාවිතා වේ. 240x400 විභේදනයක් සහිත තිරයක්, ප්‍රතිරෝධක ස්පර්ශ තිරයක් සහ උෂ්ණත්ව සංවේදකයක් සහිත, තොරතුරු සංදර්ශක උපාංගයක් ලෙස භාවිතා කරයි. HX8352B.දේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම) එපමණක් නොව, තිර පුවරුවේ ICSP වෙත සම්බන්ධකය ඉවත් කර ඇති අතර මයික්රෝ SD ස්ලට් භාවිතා නොකෙරේ. කාරණය වන්නේ SPI බස් රථයේ ගැටුමක් හේතුවෙන් "ස්වදේශීය" SD සොකට් භාවිතා කළ නොහැකි බවයි. ෆ්ලෑෂ් කාඩ්පත සඳහා, වෙනම කාඩ්පත් කියවනය භාවිතා කරන ලද අතර, එයට 3,3V ස්ථායීකාරකයක් සහ 74LVS125A ප්‍රතිදාන තුනක් සහිත බෆර් චිපයක් ඇතුළත් විය. මේ පෝරුව මා එනතුරු බලා සිටියේය. තුන්-රාජ්‍ය බෆරයක්, නමුත් E01-ML01DP5 හෝ කාඩ්පත් කියවනය ක්‍රියා කළේය. පුස්තකාල අදහස් දැක්වීමේදී, SdFat වෙනත් උපාංග සමඟ නොගැලපීම පිළිබඳ අනතුරු ඇඟවීමක් දුටුවේය. TXS0108E හි මට්ටමේ පරිවර්තකය ඉවත් කර ජම්පර් සමඟ ප්‍රතිස්ථාපනය කරන ලදී E01-ML01DP5 5V සංඥා වලට ඔරොත්තු දෙනවා - එය උදව් කළේ නැත. oscilloscope භාවිතා කරමින්, කාඩ්පත් කියවනය සම්බන්ධ වූ විට MISO රේඛාවේ සංඥා අලාභයක් අනාවරණය විය. ප්‍රවේශමෙන් පරීක්‍ෂා කිරීමේදී, 4LVS74A හි OE 125 නාලිකාවල සක්‍රීය සංඥා වල යෙදවුම් සාමාන්‍ය වයරයකට පාස්සන ලද අතර තුන්වන තත්වයක් ගැන කතා කළ නොහැකි බව සොයා ගන්නා ලදී. බෆර් චිපය 5V සිට 3.3V දක්වා ප්‍රාථමික මට්ටමේ පරිවර්තකයක් ලෙස 3,3 KΩ ප්‍රතිරෝධක භාවිතයෙන් සංඥා රේඛා සමඟ ශ්‍රේණිගතව සම්බන්ධ කර ඇත. MISO රේඛාව හැර. එහි නිමැවුම් පහළ ස්විචය සමහරවිට බිම් මට්ටමට සංඥා ආකර්ෂණය විය. MISO රේඛාවේ සක්‍රීය සංඥාව pin 13 බව තීරණය කිරීමෙන් පසු එය ධාවන පථයෙන් ඉරා දමා ඇත.පාස්සන ලදදේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)9LVS74A CS උපාංගය අතර ආදාන පින් (125) සහ අවසන් කිරීමේ ප්‍රතිරෝධය තෝරන්න. දැන්, මතක කාඩ්පතට ප්‍රවේශයක් නොමැති නම්, MISO බෆරය අක්‍රිය කර ඇති අතර වෙනත් උපාංගයක ක්‍රියාකාරිත්වයට බාධා නොකරයි.සංවර්ධන මණ්ඩල රූප සටහනදේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)ග්රාහකයා ක්රියාත්මක වේදේශීය ස්වයංක්‍රීය දත්ත අත්පත් කර ගැනීමේ පද්ධතිය (දිගටම)DS3231 ඔරලෝසුව සම්බන්ධ කිරීම සඳහා මෘදුකාංග I2C බසයක් (TWI) භාවිතා කරයි.
Arduino IDE වැඩසටහන// වැදගත්: Adafruit_TFTLCD පුස්තකාලය විශේෂයෙන් විය යුතුය
// TFT shield හෝ BREAKOUT BOARD සඳහා වින්‍යාස කර ඇත.
// සැකසීම සඳහා Adafruit_TFTLCD.h හි අදාළ අදහස් බලන්න.
//Open-Smart Team සහ Catalex කණ්ඩායම විසිනි
//[විද්‍යුත් ආරක්‍ෂිත]
//ගබඩාව: dx.com
// open-smart.aliexpress.com/store/1199788
//Demo Function: ප්‍රදර්ශන චිත්‍රක, අක්ෂර
//Arduino IDE: 1.6.5
// පුවරුව: Arduino UNO R3, Arduino Mega2560, Arduino Leonardo

// පුවරුව: Open-SMART UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2INCH TFT:
// www.aliexpress.com/store/product/3-2-TFT-LCD-Display-module-Touch-Screen-Shield-board-onboard-temperature-sensor-w-Touch-Pen/1199788_32755473754.html?spm=2114.12010615.0.0.bXDdc3
//OPEN-SMART UNO R3 5V / 3.3V:
// www.aliexpress.com/store/product/OPEN-SMART-5V-3-3V-Compatible-UNO-R3-CH340G-ATMEGA328P-Development-Board-with-USB-Cable-for/1199788_32758607490.html?spm=2114.12010615.0.0.ckMTaN

#ඇතුළත් // මූලික ග්‍රැෆික් පුස්තකාලය
//#ඇතුළත් // දෘඪාංග විශේෂිත පුස්තකාලය
#ඇතුළත්
MCUFRIEND_kbv tft;
#"SdFat.h" ඇතුලත් කරන්න // SdFat පුස්තකාලය භාවිතා කරන්න
SdFat SD;
SdFile ගොනුව;
MyFile ගොනු කරන්න;
#SD_CS_PIN SS නිර්වචනය කරන්න

#ඇතුළත් // SPI බසය සමඟ වැඩ කිරීමට පුස්තකාලය සම්බන්ධ කරන්න
#ඇතුළත් // RF24 පුස්තකාලයෙන් සිටුවම් ගොනුව සම්බන්ධ කරන්න
#ඇතුළත් // nRF24L24+ සමඟ වැඩ කිරීමට පුස්තකාලය සම්බන්ධ කරන්න
RF24 රේඩියෝව (47, 49);

#ඇතුළත්

DS3231 rtc(27, 25);
කාලය t;

uint16_t r = 6000;
uint32_t k = 0;

වාෂ්පශීලී අත්සන් නොකළ දිගු දත්ත;
පාවෙන leb_1;
පාවෙන leb_2;
පාවෙන leb_3;
පාවෙන leb_4;

uint8_t පයිප්ප;
int rc = 0;

uint8_t time_sec_prev;
uint8_t time_day_prev;

//*************************************************** *******************//
// ඔබ OPEN-SMART TFT breakout board භාවිතා කරන්නේ නම් //
// 5V-3.3V මට්ටමේ පරිවර්තන පරිපථයක් එක් කිරීමට ඔබට නිර්දේශ කරන්න.
// ඇත්ත වශයෙන්ම ඔබට 5V/3.3V බල ස්විචය සමඟ OPEN-SMART UNO Black අනුවාදය භාවිතා කළ හැකිය,
// ඔබට අවශ්‍ය වන්නේ 3.3V වෙත මාරු වීම පමණි.
// LCD සඳහා පාලන පින් ඕනෑම ඩිජිටල් හෝ වෙත පැවරිය හැක
// analog pins...නමුත් මෙය අපට ඉඩ දෙන පරිදි අපි ඇනලොග් පින් භාවිතා කරන්නෙමු
//—————————————-|
// TFT Breakout - Arduino UNO / Mega2560 / OPEN-SMART UNO Black
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - යළි පිහිටුවන්න
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// සමහර පොදු 16-bit වර්ණ අගයන් සඳහා මිනිසුන්ට කියවිය හැකි නම් පවරන්න:
#BLACK 0x0000 නිර්වචනය කරන්න
#නිල් 0x001F නිර්වචනය කරන්න
#RED 0xF800 නිර්වචනය කරන්න
#GREEN 0x07E0 නිර්වචනය කරන්න
#CYAN 0x07FF නිර්වචනය කරන්න
#MAGENTA 0xF81F නිර්වචනය කරන්න
#YELLOW 0xFFE0 අර්ථ දක්වන්න
#WHITE 0xFFFF නිර්වචනය කරන්න
#GRAY 0x8C51 අර්ථ දක්වන්න
#GRAYD 0x39E7 නිර්වචනය කරන්න

//Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// පලිහ භාවිතා කරන්නේ නම්, සියලු පාලන සහ දත්ත රේඛා සවි කර ඇත, සහ
// සරල ප්රකාශයක් විකල්ප වශයෙන් භාවිතා කළ හැක:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

String dataString;
//String numfileMonth = "1.txt";
char perv [] = {"2.txt"};
//String *numfileMonth="1.txt" (sizeof (numfileMonth));
//////////////////////////////////////////// ////////////////

අවලංගු සැකසුම (අවලංගු) {

rtc.begin();

// වේලාව සැකසීමට, අවශ්‍ය රේඛා ඉවත් කරන්න
// rtc.setDOW(6); // සතියේ දිනය
// rtc.setTime(22, 04, 0); // වේලාව, පැය 24 ආකෘතියෙන්.
// rtc.setDate(4, 5, 2019); // දිනය, ඔක්තෝබර් 29, 2018

Serial.begin (2000000);
//////// තිරය ආරම්භ කිරීම
tft.begin(0x65);
tft.reset ();
tft.setRotation(0);
tft.cp437(සත්‍ය);
////////////////// නම්වල ප්‍රතිදානය, උපකරණ උපාංග, සංවිධානයේ නම
tft.fillScreen (BLACK);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("සංවර්ධකයින් සහ ගොඩනැගීම");
tft.setCursor(30, 20);
tft.print (utf8rus("ඉදිකිරීම්කරු V.V." ));
tft.setCursor(40, 40);
tft.print (utf8rus("ටර්නර් I.I." ));
ප්රමාදය (2000);

radio.begin(); // වැඩ nRF24L01+ ආරම්භ කරන්න
radio.setChannel(120); // දත්ත පිළිගැනීමේ නාලිකාව සඳහන් කරන්න (0 සිට 127 දක්වා)
radio.setDataRate(RF24_250KBPS); // දත්ත හුවමාරු අනුපාතය සඳහන් කරන්න (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // සම්ප්‍රේෂක බලය සඳහන් කරන්න (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe(1, 0xAABBCCDD11LL); // දත්ත ලබා ගැනීම සඳහා 1xAABBCCDD1 සම්ප්‍රේෂක 0 හඳුනාගැනීම සමඟ නල 11ක් විවෘත කරන්න
// දත්ත ලබා ගැනීමට සම්ප්‍රේෂක ID 2xAABBCCDD2 සමඟ පයිප්ප 0 විවෘත කරන්න
radio.startListening(); // ග්‍රාහකය සක්‍රිය කරන්න, විවෘත පයිප්පවලට සවන් දීම ආරම්භ කරන්න
// radio.stopListening();
////////සේවා තොරතුරු ප්‍රතිදානය
tft.fillScreen (BLACK);
tft.setCursor(8, 0);
tft.setTextSize(1);
////////SD කාඩ්පත ආරම්භ කිරීම ආරම්භ කරන්න
Serial.println("ආරම්භක SD කාඩ්");
tft.println("ආරම්භක SD කාඩ්");
tft.setCursor(8, 10);
////////කාඩ්පත ආරම්භ කිරීම
නම් (!SD.begin(SD_CS_PIN)) {
Serial.println("ආරම්භක අසාර්ථකයි!");
tft.fillRect(8, 10, 85, 7, RED);
tft.setTextColor(BLACK);
tft.println("ආරම්භක අසාර්ථකයි!");
ආපසු;
}
tft.setTextColor(WHITE);
Serial.println("ආරම්භ කිරීම සිදු කරන ලදී");
tft.println("ආරම්භ කිරීම සිදු කරන ලදී");
ප්රමාදය (2000);
////////කාලය සහ දිනය කියවා ඒවා විචල්‍යයන් වෙත පැවරීම
t = rtc.getTime();
time_sec_prev = t.sec;
time_day_prev = t.date;
////////දිනය ප්‍රදර්ශනය සඳහා වෙනස් වන තෙක් බලා නොසිටීම සඳහා බලහත්කාරයෙන් දිනය ප්‍රතිදානය කරන්න
tft.setCursor(180, 0); // කර්සරයේ පිහිටීම සැකසීම
tft.fillRect(178, 0, 65, 7, GRAY); // කාල නිමැවුම් ප්‍රදේශය ඉවත් කිරීම
tft.setTextSize(1);
tft.print(rtc.getDateStr());
//////// පාලන වස්තු වල නම ප්‍රතිදානය කරන්න
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Winches I"));
////////ලොග් ගොනුවක් සාදා නිර්මාණය කිරීමේ උත්සාහයේ ප්‍රතිඵලය ප්‍රතිදානය කිරීම
tft.setTextSize(1);
tft.setCursor(130, 10); // ලොග් ගොනුව 2.txt නිර්මාණය කර ඇත්නම්, ගොනුවට ලිවීම දිගටම කරගෙන යනු ඇත
(SD.පවතියි (perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} වෙන {
myFile = SD.open(perv, FILE_WRITE); // ගොනුව 2.txt නොමැති නම්, එය සාදනු ලැබේ
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}

void loop (අවලංගු) {
////////කොම් පෝට් මොනිටරයට ලොගයක් ප්‍රතිදානය කිරීමට ඉල්ලීමක් තිබේදැයි පරීක්ෂා කිරීම
නම් (Serial.available() > 0) {
නම් (1 == Serial.read());
////////සහ "1" පිළිගන්නේ නම්, එවිට ප්රතිදානය
ගොනු myFile = SD.open(perv);
// ගොනුව තිබේ නම්, එයට ලියන්න:
නම් (myFile) {
අතරතුර (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
වෙනත් {
Serial.println("දෝෂය විවෘත කිරීමේ .txt");
}
}
////////කියවන කාලය
t = rtc.getTime();
tft.setTextColor(WHITE);
////////කාලය වෙනස් වී ඇත්නම්, නව ඔරලෝසු කියවීම් පෙන්වන්න
නම් (time_sec_prev != t.sec) {
tft.setCursor(120, 0); // කර්සරයේ පිහිටීම සැකසීම
tft.fillRect(118, 0, 50, 7, GRAY); // කාල නිමැවුම් ප්‍රදේශය ඉවත් කිරීම
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // ප්‍රතිදාන ඔරලෝසු කියවීම්
time_sec_prev = t.sec;
}
////////දිනය වෙනස් වී ඇත්නම්, නව දිනය පෙන්වන්න
නම් (time_day_prev != t.date) {
tft.setCursor(180, 0); // කර්සරයේ පිහිටීම සැකසීම
tft.fillRect(178, 0, 65, 7, GRAY); // දින දර්ශන ප්‍රදේශය පැහැදිලි කරන්න
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // දින කියවීම් පෙන්වන්න
time_day_prev = t.date;
}
////////ගුවන්විදුලි පිළිගැනීමක් තිබේ නම්, එසේ නම්
නම් (radio.available(&pipe)) {
////////ලබන බෆරය පිරී ඇත්දැයි පරීක්ෂා කිරීම,
radio.read (&data, sizeof(data));
////////අවශ්‍ය සම්ප්‍රේෂක ලිපිනය තිබේ නම්, එසේ නම්
නම් (නල == 1) {
//////// ශුන්‍ය සමමුහුර්ත කිරීමේ අනුපිළිවෙල තීරණය කිරීමට අපි බලා සිටිමු
//දත්ත වාරණයේ ආරම්භය
නම් (දත්ත == 0000) {
rc = 0;
} වෙන {
rc++;
}
//////// කවුන්ටර අගයන් පටිගත කිරීම සහ පැය 10 සහ 100 න් ඒවා ගණනය කිරීම
නම් (rc == 1) {
leb_1 = දත්ත / 3600.0;
}

නම් (rc == 2) {
leb_2 = දත්ත / 3600.0;
}

නම් (rc == 3) {
leb_3 = දත්ත / 3600.0;
}

නම් (rc == 4) {
leb_4 = දත්ත / 3600.0;
}
}
}
r++;
k++; // කවුන්ටරයක් ​​පමණි
//////// යම් ආවර්තිතා සමඟ දත්ත යාවත්කාලීන කිරීම
නම් (r >= 6500) {
tft.setTextSize(2);
tft.fillRect(0, 41, 180, 64, GRAYD);
Serial.println("Lebedki I");
tft.setCursor(0, 41);
tft.println(leb_1);
Serial.println(leb_1);
tft.println(leb_2);
Serial.println(leb_2);
tft.println(leb_3);
Serial.println(leb_3);
tft.println(leb_4);
Serial.println(leb_4);
Serial.println(k);
r = 0;
}
////////සෑම මිනිත්තු 10කට වරක් SD ලොග් එකට දත්ත ලියන්න.
නම් ((t.min % 10 == 0) && (t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(BLACK);
////////.csv ආකෘතියෙන් තන්තුවක් නිර්මාණය කිරීම
String dataString = String (rtc.getDateStr()) + ", "+(rtc.getTimeStr()) + ", " + (leb_1) + ", " + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
////////ගොනුවකට ලියා ලිවීමේ ක්‍රියාවලියේ ප්‍රතිඵල ප්‍රතිදානය කරන්න
myFile = SD.open(perv, FILE_WRITE); // "2.txt" නමින් ගොනුවක් නොමැති නම්, එය සාදනු ලැබේ.
නම් (myFile) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, GREEN);
tft.println("SD හරි");
Serial.println("SD හරි");
ප්රමාදය (900); // ප්‍රමාදය, එසේ නොමැතිනම් තත්පරයක් ගත වන තුරු සමාන කියවීම් 13ක් වාර්තා කරයි
} වෙන {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}චරිත පරිවර්තන වැඩසටහන/* UTF-8 සිට Windows-1251 දක්වා රුසියානු අකුරු නැවත සකස් කරන්න */

String utf8rus (String source)
{
int i,k;
නූල් ඉලක්කය;
අත්සන් නොකළ char n;
char m[2] = {'0', ' ' };

k = මූලාශ්රය.දිග (); i = 0;

අතරතුර (i < k) {
n = මූලාශ්රය[i]; i++;

නම් (n >= 0xC0) {
මාරු (n) {
නඩුව 0xD0: {
n = මූලාශ්රය[i]; i++;
නම් (n == 0x81) {n = 0xA8; කැඩීම; }
නම් (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
බිඳ;
}
නඩුව 0xD1: {
n = මූලාශ්රය[i]; i++;
නම් (n == 0x91) {n = 0xB8; කැඩීම; }
නම් (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
බිඳ;
}
}
}
m[0] = n; ඉලක්කය = ඉලක්කය + String(m);
}
ආපසු පැමිණීමේ ඉලක්කය;
}Adafruit_GFX පුස්තකාලය භාවිතයෙන් සිරිලික් ප්‍රතිදානය සඳහා අක්ෂර ට්‍රාන්ස්කෝඩින් වැඩසටහන ප්‍රධාන වැඩසටහන සමඟ එකම ෆෝල්ඩරය තුළ තබා ඇත. ඔබට Adafruit_GFX හි glcdfont.c ගොනුව වෙනත් අකුරු සමඟ ප්‍රතිස්ථාපනය කිරීමටද අවශ්‍ය වේ. එය අවශ්ය ආදේශනය සහිත පුස්තකාලය. Russification පිළිබඳ වැඩි විස්තර අන්තර්ජාලයෙන් පහසුවෙන් සොයාගත හැකිය.
සාරාංශගත කිරීම සඳහා, පද්ධතිය අපේක්ෂාවන්ට අනුව ජීවත් වූ බව මම කියමි, උපකරණවල මෙහෙයුම් කාලය නිරීක්ෂණය කිරීම පහසු වී ඇත. සෑම දෙයක්ම බ්‍රෙඩ්බෝඩ් මත එකලස් කර තිබුණද, වැඩ පිළිබඳ ක්ෂණික පැමිණිලි නොමැත. පළමු මූලද්රව්ය මාස හයකට වඩා වැඩි කාලයක් වැඩ කර ඇති අතර ශීත ඍතුවේ දී බේරී ඇත. නවතම නිර්මාණය එය මාර්තු 9 වනදා සිට පාලිත ඒකක 5 ක් සඳහා ක්‍රියාත්මක වන අතර එය භාවිතා කරමින් මෙහෙයුම් කාලය නිල වශයෙන් ලියාපදිංචි කෙරේ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න