विषयसूची:
- चरण 1: आरएफआईडी कॉर्टल (सेर)
- चरण 2: सर्वोमोटर (Anlæg)
- चरण 3: MySQL डेटाबेस - इंडोल्ड
- चरण 4: अरुडिनो कोड
- चरण 5: विंडोज़ फॉर्म एप्लीकेशन
- चरण 6: भौतिकवादी
- चरण 7: फोबिन्देलसेडिग्राम / आई/ओ लिस्ट
वीडियो: ईएएल - औद्योगिक इंटरनेट - फैब्रिकशाल: 7 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:23
कार्यान्वयन और स्वचालित प्रणाली और उद्योग 4.0 के सिद्धांत पर आगे बढ़ने के लिए तैयार रहें। आई डेन्ने ओपगेव, एर डेर लावेट एन लिले सिमुलेशन एएफ एन फैब्रीक्षल। आई हॉलन स्टॉर डेर एन सर्वोमोटर, सैम्ट एट पार डायोडर। Udevendig, sidder en RFID kortlæser, der Skulle bruges til at lukke de प्रासंगिक ind i fabrikshallen। Alt डेटा, रत्न और डेटाबेस और Wampserver।
चरण 1: आरएफआईडी कॉर्टल (सेर)
आरएफआईडी में शामिल हैं। हेनसिग्टेन एर एट यूड फ्रा डे आईडी नंबर डेर एर पे डेट कोर्ट, ओग डेन ब्रिक डेर एर मेड एर स्क्रेवेट इंड आई वोरेस अरुडिनो कोड। når kortlæseren opfanger en brik eller et kort, kigger den på enhedens id-nummer, og Godkender सबसे पहले और न ही det nummer स्टेमर पर ध्यान दें, मेड डिटेर एर स्केवेट इंड आई कोडन को ओवरेन्स करता है।
नोर कॉर्टलसेरेन गिवर एडगैंग, सो टोंडेस लिसेट आई फैब्रीकेन। लिसेट स्लुक्केस इगेन, नूर एन एनहेड, डेर एर गॉडकेंड्ट एएफ कॉर्टलिसेरेन, ब्लिवर डिटेक्टरेट।
कोर्त्लसेरेन ब्लिवर फजर्नेट फ्रा प्रोजेक्ट, डा डेन कोरर सीरियल संचार। डेर कान ऑप्स्टा फोरस्टायरलसर पी डेन सेरिएल पोर्ट, डेर एर पी प्रोजेक्टेट्स अरुडिनो यूनो पर पता करें। सेरिएल पोर्टेन, स्केल ऑग्स ब्रुग्स टिल अरुडिनोएन्स ऑर्डरर, डेन विल फॉर फ्रा वॉयर विन्डोज फॉर्म्स एप्लीकेशन। आई डेन सैम्मेनहॉन्ग एर लिसेट ऑग्सå फ्रैवलगेट।
चरण 2: सर्वोमोटर (Anlæg)
आई हॉलन एर डेर एन सर्वोमोटर, डेर एर स्टायरेट एफ एन अरुडिनो यूनो। Den skalsimulere et anlæg, der kan निर्माता forskellige produkter. ऑर्डर बीहोल्डनिंगन, उत्पाद के लिए सभी प्रकार के उत्पाद, ब्लिवर रत्न और MySQL डेटाबेस में। मोटरें कान कोरे उड आई ट्रे फोरस्कैलिज पोजीशनर। Hver स्थिति प्रतीककर्ता ट्रे forskellige उत्पाद। न ही उत्पाद और उत्पाद निर्माता, कोरर मोटरन टिलबेज मैं शून्य स्थिति, और एफ़वेंटर नी ऑर्डरर। डब्ल्यूपीएफ एप्लिकेशंस के माध्यम से मैनिंग एट मैन का पता लगाएं, इसे ठीक करने के लिए आदेश दें। ऑल्ट ह्वाड ब्लिवर प्रोड्यूसर ब्लिवर जेम्ट आई एन मायएसक्यूएल डेटाबेस।
चरण 3: MySQL डेटाबेस - इंडोल्ड
मैं माईएसक्यूएल डाटाबेसन विल डेर वेरे ट्रे टेबेलर। डेन फर्स्ट होल्डर ओजे मेड हविल्के प्रोडक्ट डर एर बेस्टिल्ट, ओग होवर मांगे। उत्पादों को और अधिक पढ़ें. डेन ट्रेडजे, और सिडस्टे टैबल इंडेनहोल्डर और होवर मांगे प्रोडक्ट डेर एर प्रोड्यूसर, ओग होवर मांगे डेर मैंगलर पर ओवरसिगट। निर्माता और निर्माता हैं। पता लगाएँ कि विंडोज़ प्रपत्रों के लिए उपयोग किया जा रहा है, और इससे पहले कि आप Arduinoen, samt डेटाबेसन भेजें। ऑर्डर करने के लिए और अधिक जानकारी दें, Arduinoen, efterfølgende, vil den प्रासंगिक डेटा ब्लाइव लॉग इन डेटाबेसन तक भेजें। डेटाबेसन तक कौशल डेटाटाइपर भेजें। एन इंटीजर, एन स्ट्रिंग, सोम ब्लिवर कल्ट एन वरचर, और डाटाबेसन। डेर एर ऑग्स एट टाइमस्टैम्प, डिट एर एन इन इंडस्टिलिंग, डेर एर टिलफ-जेट आई डेटाबेसन।
चरण 4: अरुडिनो कोड
#शामिल
सर्वो माय सर्वो;
इंट सर्वोपोस; चार उत्पाद = '0'; शून्य सेटअप () {myServo.attach(3); // सीरियल संचार शुरू होता है Serial.begin(9600); } शून्य लूप () {// Læsning fra सीरियल पोर्ट उत्पाद = Serial.read (); // Godkendelse af ingående आदेश स्विच (उत्पाद) {// उत्पाद A (1) udføres i denne case case '1': myServo.write(50); देरी (1000); myServo.लिखें (0); देरी (1000); Serial.println ("हो गया"); टूटना; // उत्पाद बी (2) यूडफ़ेरेस आई डेन्ने केस केस '2': myServo.write(100); देरी (1000); myServo.लिखें (0); देरी (1000); Serial.println ("हो गया"); टूटना; // उत्पाद सी (3) udføres i denne case case '3': myServo.write(150); देरी (1000); myServo.लिखें (0); देरी (1000); Serial.println ("हो गया"); टूटना; } }
चरण 5: विंडोज़ फॉर्म एप्लीकेशन
सिस्टम का उपयोग करना; System. Collections. Generic का उपयोग करना; System. ComponentModel का उपयोग करना; System. Data का उपयोग करना; System. Drawing का उपयोग करना; System. Linq का उपयोग करना; System. Text का उपयोग करना; System. Threading. Tasks का उपयोग करना; System. Windows. Forms का उपयोग करना; सिस्टम का उपयोग करना। संग्रह; System. IO. Ports का उपयोग करना; MySQL का उपयोग करना; MySql. Data. MySqlClient का उपयोग करना;
नाम स्थान WindowsFormsApp2
{पब्लिक पार्टिकल क्लास फॉर्म १: फॉर्म {/* आई डेन्ने क्लास ब्लिवर एली पब्लिक वेरिएबलर ऑप्रेटेट. क्लास (MySqlConnection) डर स्केल टैग्स आई ब्रुग में हेरंडर एर डेर ओप्रेटेट है, क्योंकि इसके लिए MySQL सर्वरेन के लिए बिंदेलसे के लिए उपयोग किया जाता है। स्ट्रिंग (कनेक्शनस्ट्रिंग) डेन ब्रुग्स टिल एट डेफिनर हविलकेन ब्रुगर डेर स्कल पाओ और पासवर्ड, और हविलकेन डेटाबेस डेर टेल ओम। इसके अलावा, आप पूर्णांक में हैं, और 2d सरणी (ऑर्डे) हैं। ग्रंडन टिल डेट एर एट एन ऑर्डरर कान बेस्ट ऑफ फ्लेर प्रोडक्टर एएफ एट प्रोडक्ट, एलर फ्लेयर प्रोडक्ट। अरुडिनोइन ब्लिवर ऑग्सå डेफिनेट उसे तक सीमित करें। क्लास (बैकग्राउंडवर्कर) में डर ब्लिवर ऑप्सेटेट एन. डेन गोर एट एन बेस्टेम्ट डेल एएफ प्रोग्रामेट ब्लिवर एकसिकवेरेट जेंटागेंडे गंगे और बैगग्रुंडेन। आई डिटेट टिलफोल्ड एर डेट ब्रुगबार्ट, डा डेर कान ब्लिव ऑप्रेटेट नी ऑर्डरर, मेड कोर्ट मेलमरम। */ MySqlConnection कनेक्शन; स्ट्रिंग कनेक्शनस्ट्रिंग;
निजी int ordrenummer;
निजी इंट [,] ऑर्डर = नया इंट [१००, १००]; निजी इंट भेजने का आदेश = नया इंट [१००]; निजी स्ट्रिंग उत्पाद प्रकार;
सीरियलपोर्ट एसपी = नया सीरियलपोर्ट ();
निजी बैकग्राउंडवर्कर myWorker = नया बैकग्राउंडवर्कर ();
सार्वजनिक प्रपत्र1 ()
{आरंभिक कॉम्पोनेंट (); // उसका ब्लिवर स्ट्रिंग (कनेक्शनस्ट्रिंग) परिभाषित करता है। कनेक्शनस्ट्रिंग = "सर्वर = १९२.१६८.१.१००; यूजरिड = रूट; पीडब्ल्यूडी = लैंगलैंड; डेटाबेस = आर्डिनो;"; /* उसका ब्लिवर वेरिएबलन "माईवर्कर" लॉग इन पर बैठ गया और विविध बेस्टिलिंगर एर आई डेयर प्रोसेस। */ myWorker. DoWork += new DoWorkEventHandler(myWorker_DoWork); myWorker. WorkerReportsProgress = सच; myWorker. WorkerSupportsCancellation = सच; // उसका ब्लिवर सेल्व बैगग्रंड्सगेंनेमल-बेट एक्सिकवेरेट। myWorker. RunWorkerAsync (); // उसका ब्लिवर डेर डिफिनेट hvilket फॉर्मेट डेटोएन कोरर i. MySQL डेटाबेस के बाद उसका स्वरूप सबसे अच्छा है। dateTimePicker1. CustomFormat = "yyyy-MM-dd"; dateTimePicker1. Format = DateTimePickerFormat. Custom; }
निजी शून्य Afgiv_Ordre_Click (ऑब्जेक्ट प्रेषक, EventArgs e)
{/* उसकी एर डेर ऑप्रेटेट नोगल वेरिएबलर, डेर कुन ब्लिवर ब्रुगट आई डेट वॉयड। डे ट्रे फर्स्ट एर इंटेगर्स डेर स्कल डिफाइनर एचविलकेट प्रोडक्ट डेर एर टेल ओम। डे नेस्ट ट्रे एर ऑप्रेटेट फॉर एट कुन्ने स्क्रिव डेट एंटल मैन आंस्कर, इंड आई एप्लीकेशनन। få en længde på den pågældende ordre पर डेन सिडस्टे एर ऑप्रेटेट। */ इंट प्रोडक्टए = 1; int उत्पादबी = 2; इंट प्रोडक्टसी = 3; int prodA = int. Parse(prodAOorder. Text); int prodB = int. Parse(prodBOrder. Text); int prodC = int. Parse(prodCOrder. Text); int क्रम लम्बाई = prodA + prodB + prodC; /* आई डेस फॉर लूप्स ब्लिवर कोन ऑप्रेटेट, सेलेड्स एट ऑर्ड्रिन ब्लिवर प्रोड्यूसरेट आई डेन रेक्केफेल्ज, डे एर बेस्टिल्ट आई। */ के लिए (int prod1A = 0; prod1A <prodA; prod1A++) { ऑर्डर [ordrenummer, prod1A] = produktA; }
के लिए (int prod1B = (prodA); prod1B <(prodB + prodA); prod1B++) {आदेश [ordrenummer, prod1B] = produktB; }
के लिए (int prod1C = (prodA + prodB); prod1C 99)
{ऑड्रेनमर = 0; }//उसने डेटाबेसन तक उत्पाद को बेहतर बनाया है। DBQuery("INSERT INTO`bestilteprod`(`Produkt A`, `Produkt B`, `Produkt C`) VALUES ("+ prodA + "," + prodB + "," + prodC + ")"); // डेटाबेस बनाने के लिए ब्लाइव प्रोड्यूसर डेर मैंगलर के ऊपर उसकी निगरानी की जाती है। DBQuery("अपडेट `कुल` सेट `मैंगलेंडे प्रोडक्टर`= (`मैंगलेंडे प्रोडक्टर` +(" + (प्रोडए+प्रोडबी+प्रोडसी) + ")) जहां 1"); }
// मैं पूरी तरह से शून्य हूं और इसे कोड डर स्केल कोरे आई बैगग्रुंडेन, लैग्ट इंडस्ट्रीज़।
निजी शून्य myWorker_DoWork (ऑब्जेक्ट प्रेषक, EventArgs e) { जबकि (सत्य) {/* समन af den afsendte ordre ikke er lig med 0, vil dette जबकि लूप køre। */ स्थिति(); जबकि (sendingOrder. Sum() != 0) {/* मैं लूप फंगरर डिटे सेलेड्स के लिए पता लगाता हूं, यहां पर så længe den oprettede Integer (i) एर माइंड्रे एंड लैंगडेन पे डेन एफ़गिवेट ऑर्ड्रे, विल डेट एकिकवेर। वेरिएबलन (i) किगर पे डेन पेगल्डेंडे रेकके आई एरेट, डेर पे नुवेरेन्डे टिड्सपंकट अर्बेजेड्स आई। डेन किगर आई कॉलोनेंन, सेर हविलकेट ताल डेर स्टॉर आई कोलोनन। टैलेट ब्लिवर इक्सिकवेरेट, और इंडेन एट वेरिएबलन रिक्कर विडेरे टिल नेस्ट कोलोन, ब्लिवर डेन पेग्æल्डेंडे कोलोन सैट टिल 0. डे एक्सिकवेरेडे प्रोडक्ट ब्लिवर अपलोडेट टिल डेटाबेस। इंडेन इफ सैटनिंगर्न ब्लिवर कम्युनिकेशनन टिल अरुडिनोएन bnet, और डेन afgivet ordre bliver Sendt til Arduinoen। */ के लिए (int i = 0; i <sendingOrder. Length; i++) { Status (); एसपी बॉडरेट = 9600; sp. PortName = "COM4"; एसपी ओपन (); sp.लिखें (भेजना आदेश । ToString ()); // Programmet der er i en af disse if स्टेटमेंट्स, विल ब्लिव इक्सिकवेरेट, अफंगिग एएफ हविलकेट ताल फ्रा एट टिल ट्रे डर एर आई वेरिएरन (i)। अगर (भेजना ऑर्डर == 1) {prodType = "उत्पाद ए"; } और अगर (भेजने का आदेश == 2) {prodType = "उत्पाद बी"; } और अगर (भेजने का आदेश == 3) {prodType = "उत्पाद सी"; }
भेजने का आदेश = 0;
// पहले से ही उपयोग किए गए हैं, मैं सरणी नमूना दाता 0, ब्लिवर डे udførte उत्पाद अपलोडेट और डेटाबेसन, और कोमुनिकेशनन टिल अरुडिनोएन, ब्लिवर लुकेट। if (sendingOrder. Sum() == 0) { DBQuery("INSERT INTO `udforte`(`Produkt type`) VALUES ('" + prodType + "')");
DBQuery("अपडेट `कुल` सेट `उत्पादक उत्पाद`= (`उत्पादक उत्पाद` + 1), `मैंगलेंडे उत्पाद`= (`मैंगलेंडे उत्पाद` - 1)");
एसपी बंद ();
टूटना; } /* अरुडिनोईन एर फर्डिग मेड ऑर्ड्रेन में उसका अनुसरण करता है। डेर क्विटेरेस मेड एट "किया"। और अधिक जानकारी नहीं है, डेटाबेस तक ग्रुन्डेन टिल डेट, एर एट मैन स्केल वेर सिक्कर पी एट डिट सिडस्टे यूडफर्ट प्रोडक्ट ब्लिवर ओवरफॉर्ट टिल डेटाबेसन तक गैंग अपलोड करने के लिए अंतिम रूप से देखें। */ एसपी। रीडटो ("हो गया");
DBQuery("INSERT INTO`udforte`(`Produkt type`) VALUES ('" + prodType + "')");
DBQuery("अपडेट `कुल` सेट `उत्पादक उत्पाद`= (`उत्पादक उत्पाद` + 1), `मैंगलेंडे उत्पाद`= (`मैंगलेंडे उत्पाद` - 1)");
एसपी बंद (); स्थिति(); } } // आई डेट फॉर लूप ब्लिवर डेर लैग्ट एन नी रेकके मेड ऑर्ड्रे टिल इक्सिकवरिंग, नोर डेन फॉरेगेंडे रिक्के एर इक्सिकवेरेट (समन एएफ फॉरेगेंडे रिक्के एर लिग मेड 0)। for (int i = 0; i <order. GetLength(0); i++) { int test = order[i, 0]; अगर (परीक्षण! = 0) {के लिए (इंट जे = 0; जे <100; जे ++) {भेजने का आदेश [जे] = आदेश [i, जे];
आदेश [i, j] = 0;
}
टूटना; } }
}
} /* उसकी एर der oprettet et void ved navn "Status". Det er lavet for at skyle undgå at skrive de samme linjer code flere steder। मैं इसे "स्टेटस" के रूप में देखता हूं और इसे "स्टेटस" के रूप में देखता हूं। */ निजी शून्य स्थिति () {/* उसका bner man MySQL forbindelsen, vælger alt fra den tabel der heder Total, और eksikverer den forespørgsel. */ MySqlConnection con = नया MySqlConnection (कनेक्शनस्ट्रिंग); कॉन। ओपन (); स्ट्रिंग str = "कुल से * चुनें"; MySqlCommand com = नया MySqlCommand (str, con); MySqlDataReader रीडर = com. ExecuteReader (); // डेन फंकशन एर मेड फॉर डेले बैगग्रंडस्कोडेन पी एन ट्रुड आई सीपीयू'एन, ओग एन एंडेन ट्रुड टिल रेस्टेन ऑफ कोडन। पाठक। पढ़ें (); MissingProd. Invoke((MethodInvoker)प्रतिनिधि {// उसका ब्लिवर डे मैंगलेंडे प्रोडक्ट, samt produkter der er lavet, skrevet ud på applikationen। MissingProd. Text = "manglende produkter:" + (रीडर["मंगलेंडे"] ToString() प्रोडक्ट); OrdereProd. Text = "उत्पादक लावेट:" + (पाठक ["उत्पादक उत्पाद"]। ToString ());}); // उसका ब्लिवर डेर इम्प्लीमेंटरेट ह्वाड प्रोसेंटबरेन, स्केल यूडफिल्ड्स आफ्टर। ProcenteDone. Invoke((MethodInvoker)प्रतिनिधि {//Hvis læseren i My SQL forbindelsen læser at "producert produkter ikke er lig med 0, bliver denne if Statement eksikveret। Hvis det er lig med 0, bliver der udskrevet " लेबल। अगर (int. Parse(reader["produceret produkter"]. ToString()) != 0) {// उसके टैगर मैन डी प्रोड्यूसर प्रोडक्ट और प्लसर मेड डे मैंगलेंडे प्रोडक्ट। रिजल्टेट एएफ डेट गैंगर मैन मेड सौ, के लिए at मैं आगे बढ़ूंगा। फ्लोट.पार्स (रीडर ["मैंगलेंडे प्रोडक्ट"]। टूस्ट्रिंग ()))) * १००)। टूस्ट्रिंग ();//उसका ब्लिव रिजल्टेट एएफ टिडलीगेरे यूड्रेनिंग लैग ओवर पीå प्रोसेंटबैरन। प्रोग्रेसबार १.वैल्यू = इंट३२.पार्स (प्रोसेंटेडोन। टेक्स्ट); } और { ProcenteDone. Text = "0%"; }});// उसके लुक्स MySQL forbindelsen। Reader. Close (); con. Close (); } // मैं शून्य ब्लिवर एली प्रोडक्ट, डर एर प्रोड्यूसर का पता लगाता हूं पी डेन वाल्गते दातो, लगे उद पå ए प्लिकेशनन निजी शून्य Vis_Produkter_Click_1(ऑब्जेक्ट प्रेषक, EventArgs e) {स्ट्रिंग दिनांक = dateTimePicker1. Value. ToString ()। निकालें (10);
दिनांक = dateTimePicker1. Text;
स्ट्रिंग क्वेरी = "चुनें `उत्पाद प्रकार`, `टिड` udforte से जहां टीआईडी> = '" + दिनांक + "00:00:00' और टिड <= '" + दिनांक + "23:59:59'"; (कनेक्शन = नया MySqlConnection (कनेक्शनस्ट्रिंग)) का उपयोग करके (MySqlCommand कमांड = नया MySqlCommand (क्वेरी, कनेक्शन)) का उपयोग करके (MySqlDataAdapter एडाप्टर = नया MySqlDataAdapter (कमांड)) {डेटाटेबल प्रोडटेबल = नया डेटाटेबल (); एडेप्टर.फिल (प्रोडटेबल);
dataGridView1. DataSource = prodTable;
}
}//मैं शून्य ब्लिवर MySQL forbindelsen styret का पता लगाता हूं। डेन फंगरर ने फोर्बिंडेलसन ब्लिवर bnet, eksikverer, og lukkes पर बिक्री की। निजी शून्य DBQuery (स्ट्रिंग cmd) {स्ट्रिंग क्वेरी = cmd; (कनेक्शन = नया MySqlConnection (कनेक्शनस्ट्रिंग)) का उपयोग करके (MySqlCommand कमांड = नया MySqlCommand (क्वेरी, कनेक्शन)) {कनेक्शन। ओपन ();
कमांड। एक्सक्यूट स्केलर ();
कनेक्शन। बंद करें ();
} } } }
चरण 6: भौतिकवादी
1 सेंट। Arduino Uno
1 एसटीके। माइक्रो सर्वो SG90 9g
चरण 7: फोबिन्देलसेडिग्राम / आई/ओ लिस्ट
सर्वो मोटर:
+ = रड
- = क्रमबद्ध करें
सिग्नल = ग्रोन
सिफारिश की:
ईएएल - उद्योग 4.0 आरसी कार पर जीपीएस डेटा संग्रह: 4 कदम
ईएएल - आरसी कार पर उद्योग 4.0 जीपीएस डेटा संग्रह: इस निर्देश में हम इस बारे में बात करेंगे कि कैसे हम आरसी कार पर एक जीपीएस मॉड्यूल सेट करते हैं और एकत्रित डेटा को आसान निगरानी के लिए एक वेबपेज पर पोस्ट करते हैं। हमने पहले एक निर्देश दिया है कि हमने अपनी आरसी कार कैसे बनाई, जो यहां पाई जा सकती है। यह वें का उपयोग कर रहा है
ईएएल- एंबेडेड - कॉम्बिनेशन लॉक: 4 कदम
ईएएल- एंबेडेड - कॉम्बिनेशन लॉक: यह प्रोजेक्ट एक स्कूल प्रोजेक्ट है, जिसे मैंने ईएएल में विषय 2.1 सी-प्रोग्रामिंग चुनने के लिए बनाया है। यह पहली बार है, जब मैंने एक Arduino प्रोजेक्ट और C-प्रोग्रामिंग बनाया है। वह एक परियोजना है, जो एक संयोजन ताला प्रस्तुत करती है। एक संयोजन ताला
ईएएल - एंबेडेड प्रोग्रामिंग: कैंडी मिक्सर १०००: ९ कदम
EAL - एंबेडेड प्रोग्रामिंग: कैंडी मिक्सर 1000: Arduino में हमारे प्रोजेक्ट के लिए हमने कैंडी के लिए मिक्सर बनाने का फैसला किया है। विचार यह है कि उपयोगकर्ता एक बटन दबा सकता है और फिर मोटर्स कैंडी को कटोरे में निकालना शुरू कर देंगे, और जब प्रोग्राम अपना कोर्स चलाएगा तो यह बंद हो जाएगा। पहला ड्राफ्ट w
ईएएल- एंबेडेड इंडोर-क्लाइमेट: 5 कदम
ईएएल- एंबेडेड इंडोर-क्लाइमेट: हमारे स्कूल प्रोजेक्ट के लिए, हमें एक आर्डिनो को एक स्वचालित प्रणाली में एकीकृत करने का काम सौंपा गया था। हमने एक इनडोर क्लाइमेट सेंसर बनाना चुना, जो घर के अंदर तापमान, आर्द्रता और डेसिबल स्तर को समझ सके। हमने कैबिनेट में कुछ छेद किए
ईएएल - स्मार्टस्टोरेज: 3 कदम
EAL - SmartStorage: यह Kasper Borger Tulinius द्वारा SmartStorage के लिए एक प्रोजेक्ट है