Mündəricat:
- Addım 1: VUgt Samt Qeydiyyatında Af UID üçün Af Məlumatlarının Alınması
- Addım 2: Arduino proqramı
- Addım 3: Node-RED, Lagring Af Data I Veritabanı
- Addım 4: Verilənlər bazasının dizaynı
- Addım 5: Patelog
- Addım 6: Təyin edilə bilən
- Addım 7: Xüsusi qəbul edilə bilən
- Addım 8: Rangetable
- Addım 9: C# Proqramı
Video: EAL-Industri4.0-RFID Dataopsamling Til Veritabanı: 10 Addım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Şəxsi məlumatların qeydiyyatdan keçməsi, qeydiyyatdan keçmələri ilə bağlı bir layihə var. RFID, MySQL verilənlər bazası ilə əlaqəli məlumatları gecikdirir. node-QIRMIZI, Windows Məlumat Proqramı və C# proqramı ilə əlaqəli məlumatların işlənməsi. Meşə işçisi:
İstehsalçıya 200 qramlıq məhsullar istehsal olunur. Əlavə məlumatları əldə etmək üçün RFID etiketi və nömrələri, indeks və identifikator ID (UID = Unikal Identifier, 32 bitlik kod, 8 hexadecimale karakter) üçün e -poçtdan istifadə etmək daha asandır. Hər hansı bir məlumatı əldə etmək mümkün olmadıqda, hər kəs öz xüsusiyyətlərini və xüsusiyyətlərini nəzərə alır. spesifikasiyalara əlavə olunmalıdır. Ətraflı məlumat:
1. İrma. Ən çox +/- 5%, ən azı 190 qr və maksimum 210 qr.
2. Brugsen. Brugsens-in ən böyük dəyəri +/- 10%, ən az 180 qram və maksimum 220 qr.
3. Aldi. Aldis endirimləri +/- 15%, ən az 170 qr və maksimum 230 qr təşkil edir.
Ətraflı sorğular:
0 aralığı: sıra xaricində
Aralığı1: minimum 190g/maksimum210g
Aralığı2: minimum 180g/maksimum220g
Aralığı3: minimum 170g/maksimum230g
Addım 1: VUgt Samt Qeydiyyatında Af UID üçün Af Məlumatlarının Alınması
RFID etiketləri və RFID-RC522 oxucu/yazıçı üçün RFID etiketlərinin qeydiyyatı üçün bütün məlumatları toplamaq lazımdır. Hər hansı bir məlumat əldə etmək mümkün olmadıqda, Arduino üçün analoq və analitik məlumatları əldə edə bilərsiniz.
Fəaliyyət göstərin:
1 stk potmetr 25k line. Əlbəttə ki, hhv. GND və +5V, AN0 -un orta hissəsi
RFID-RC522, Arduino kartları üçün SPI portlarını təqdim edir:
SDA -> pin 53
SCK -> pin52
MOSI -> pin51
MISO-> pin50
IRQ -> NC
GND -> GND
RST -> pin5
3.3V -> 3.3V
Məlumat, hhv üçün. UID və ya məlumat bazasında məlumat panosunda məlumatların göstərilməsini təmin etmək üçün düymələri ayırmaq üçün düymələri ayırın.
Addım 2: Arduino proqramı
Mən Arduino proqramını SPI.h və MFRC522.h bibliotekerinə RFID -dən istifadə edərək daxil etdim. Proqramı dəyişəndən sonra işə salmağa başladım. Dərin lövhələr MFRC522 -də mövcuddur. Mən qurduqdan sonra, MFRC522 və SPI -ni işə sala bilərsiniz. Derefter RFID etiketlərini daha yaxşı tarar. UID -dən istifadə etmək üçün bir çox məlumat əldə etmək lazımdırsa, ən çox məlumat əldə edə bilərsiniz. Skaner və UID etiketi yoxlanılır, UID -in bütün məlumatları yüklənir. Hədiyyələr haqqında məlumatların köhnə məlumatların verilməsi ilə əlaqədar olaraq, UID istifadə edə bilərsiniz. OldUID və ya nUUd etiketləri, UID etiketləri və cahil insanlardır. UID və ya UID ilə əlaqəli bütün məlumatlar, UID -in ən böyük portu kimi xidmət göstərir. 150-250 aralığında oxşar məlumat əldə edə bilərsiniz. Verilənlər bir neçə aydan çoxdur. OldUID = nUUID, RFID etiketlərinin və şifrələrin açılması ilə bağlı bütün məlumatları əldə edə bilərsiniz.. Bu proqramlar 2 funksiyanı yerinə yetirir. Funktionen qayıtmaq üçün həqiqi məlumatların aranjımanı və yanlış məlumatların sıralanması lazımdır.
#daxil edin
#include // Bu proqram RDIF-RC522 oxucu/yazıçı lövhəsindən istifadə edərək RFID kartlarını tarar. // UID oxunur, analoq pin oxunur. Analog dəyər 0-1023 150-250-ə qədər ölçülür. // UID və analog dəyəri 9600, N, 8, 1 istifadə edərək seriyalı portda vergüllə ayrılmış mətn olaraq göndərilir. eyni UID yenidən göndərilməzdən əvvəl mövcuddur. // Bu funksiya, serialları müqayisə edərək kodda tətbiq olunur: oldUID nyUID array_cmp (oldUID , nyUID )
constexpr uint8_t RST_PIN = 5;
constexpr uint8_t SS_PIN = 53; int sensorPin = A0; int Dəyəri = 0; String StringValue = "0000"; bayt oldUID [4] = {}; bayt nyUID [4] = {};
MFRC522 mfrc522 (SS_PIN, RST_PIN); // MFRC522 nümunəsi yaradın.
boş quraşdırma ()
{Serial.begin (9600); // SPI.begin () seriyalı ünsiyyətə başlayın; // SPI avtobusunu başlat mfrc522. PCD_Init (); // MFRC522 başlatın}
boşluq döngəsi ()
{// (! Mfrc522. PICC_IsNewCardPresent ()) {return; əgər yeni kartlar axtarın; } // Kartlardan birini seçin, əgər (! Mfrc522. PICC_ReadCardSerial ()) {return; } // nyUID -ni UID etiketi ilə yükləyin (bayt i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // if oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// (bayt i = 0; i 1000) üçün serial porta UID etiketi göndərin {Value = 1000; } Dəyər = (Dəyər / 10) + 150; // Serial.print (Qiymət) miqyaslı analoq dəyəri göndərin; // yeni xətt göndər Serial.println (); // oldUID = nyUID üçün (bayt z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // 1 saniyə gecikmə gözləyin (1000); }
// 2 massivi müqayisə edin …
boolean array_cmp (bayt a , bayt b ) {bool testi = doğru; // hər bir elementin eyni olmasını yoxlayın. yalnız biri deyilsə, (byte n = 0; n <4; n ++) {if (a [n]! = b [n]) test = false; // bayt bərabər deyilsə, test = false} if (test == doğru) doğruya dönərsə; əks halda yalan; }
Addım 3: Node-RED, Lagring Af Data I Veritabanı
Node-QIRMIZI axın:
COM4, Arduino lövhəsi ilə əlaqəli bütün məlumatların dəyişdirilməsini təmin edir. "Bölün və Dəyər Alın" funksiyası və "Bölün və UID Alın" bölüşdürülməsi və geri qaytarılması və UID -in istifadəsi. İdarəetmə panelində və planşetinizdə hər hansı bir məlumat əldə edə bilərsiniz. UID ilə əlaqəli məlumatlar mövcuddur. Test_sound avareri "Aralığın xaricində", 230g -dən çox 170g -dən çox, dvs və 0 aralığında.
Bölün və dəyər alın:
var çıxış = msg.payload.split (',');
temp = {faydalı yük: (çıxış [1])}; qaytarılma temperaturu;
Bölün və UID əldə edin:
var çıxış = msg.payload.split (",");
temp = {yük: yük [0]}; qaytarılma temperaturu;
test_səsi:
var sayı = parseInt (msg.payload);
if (sayı> 230 || sayı <170) {newMsg = {faydalı yük: "Aralığın xaricində"}; newMsg qaytarın; } başqa {newMsg = {yük: ""}; newMsg qaytarın; }
Bölünmüş funksiyalar "," işarələri və zaman damgası, UID və verilənlər bazası patedb.patelogda.
var çıxış = msg.payload.split (","); // msg.payload vergüllə seriala bölün
UIDTag = çıxış [0]; // birinci hissə birinci mövqeyə [0] ValueTag = çıxış [1]; // ikinci hissə ikinci mövqeyə [1]
var m = {
mövzu: "INSERT INTO patedb.patelog (zaman damgası, UID, çəki) VALUES ('"+yeni Tarix (). toISOString ()+"', '"+UIDTag+"', '"+ValueTag+"');" }; qayıt m;
MySQL verilənlər bazası ilə bağlı bütün məlumatları əldə edə bilərsiniz:
Ev sahibi: localhost
Liman: 3306
İstifadəçi: kök
Verilənlər bazası: patedb
Addım 4: Verilənlər bazasının dizaynı
Verilənlər bazası 4 nəfərə aiddir
node-QIRMIZI və C# proqramları ilə əlaqəli məlumatlar
c# proqramlaşdırma məlumatlarını sifariş etmək, məlumatların sıralanması, məlumatların təhlili
customertable er və kunderegister
menyu C# proqramlaşdırılmış proqramlar üçün nəzərdə tutulmuş proqramlar.
Addım 5: Patelog
Tabellen patelog 6 nəfərdən ibarətdir:
pateID (int) avtomatlaşdırılmış əsas açar.
Zaman damgası, UID & yazın varchar (med forskellig max længde)
aralığını yazın (C# proqramını öyrənin)
orderID yazın int (C# proqramının sifariş nömrəsi)
Node-QIRMIZI düymələr sıralanır və sıralanır. sıraNr və sifariş KIMLIĞINI NULL rejimində, C# proqramını müəyyən etmək üçün proqram nömrəsi və digərləri üçün sifariş verin.
Addım 6: Təyin edilə bilən
Sifarişçi 5 kolonner:
orderID (int) sifarişi yerinə yetirin
orderQuant (orta qiymət) əvvəlcədən sifariş verə bilərsiniz
QuantProduct (orta qiymət) istehsalçıları tərəfindən satın alınır. (C# proqramına aiddir)
şərh (kiçik mətn) yazmaq üçün hadisə ilə əlaqədar şərhlər yazın.
müştəri ID (int) hər hansı bir məlumat əldə edə bilərsiniz.
Addım 7: Xüsusi qəbul edilə bilən
customertable indeholder 6 kolonner:
customerID (int) birincil açar və avtomatik inc.
ad, ünvan, telefon, e -poçt (varchar) med forskellig max længde
sıraNr (int)
Addım 8: Rangetable
rangetable indeholder 3 kolonner:
rangeNr (int) əsas açar və avtomatik inc.
aralıkMin (int)
sıraMax (int)
Addım 9: C# Proqramı
İstehsalçıların hazırladıqları əməliyyatlar:
Gündəlik, yazılı, cari proqramlar, C# proqramının sınanması ilə əlaqədardır (bu proqramlar rəqəmsal sistemlərin işlənməsi üçün bir başlanğıcdır. Başlanğıcda heç bir problem yoxdur). pd et transportbånd), UID və ya düymələri QIRMIZI sistemə daxil olduqda, paneldəki məlumatların göstərildiyi və göstərildiyi zaman göstərilir, vaxt damgası, UID və digər sənədlər də daxil edilir. bir sıra hallarda, NULL və SİFARİŞLƏR üçün NULL yazın.
Nömrələr və zaman aralığında C# proqramının hazırlanması NULL və ya silsiləsi üçün nəzərdə tutulmuşdur. NULL məlumatların silinməməsi üçün məlumatların silinməməsi üçün bir sıra məlumatların sıralanması tələb olunur. İstehsalçıya heç bir şey verilmir və "dayan" düyməsini basın. Müvafiq qaydalar yoxlanılmadığı təqdirdə, hər hansı bir aktuallaşdırıla bilər. Məlumat əldə etmək mümkün olmadıqda, məlumatların təhlili və məlumatların toplanması, DataGridview -un yenilənməsi ilə əlaqədardır. Şəxsi sifarişlər və ya sənədlər UID istifadəçilər tərəfindən fərdi olaraq sifariş edilə bilər.
System. Collections. Generic istifadə edərək; System. ComponentModel istifadə edərək; System. Data istifadə edərək; System. Drawing istifadə edərək; System. Linq istifadə edərək; System. Text istifadə edərək; System. Threading. Tasks istifadə edərək; System. Windows. Forms istifadə edərək; MySql. Data. MySqlClient istifadə edərək;
ad sahəsi show_data_from_database
{ictimai qismən sinif Form1: Form {MySqlConnection bağlantısı = yeni MySqlConnection ("data source = localhost; istifadəçi adı = kök; parol = ''"); int RowNumber = 0; // pateID dəyərini saxlamaq üçün dəyişən int RangeNumber = 0; // int int weight = 0 rəqəmini saxlamaq üçün dəyişən; // Ağırlığın saxlanılması üçün dəyişən int OrderNr = 0; // OrderNR int QuantProduced saxlamaq üçün dəyişən = 0; // İstehsal olunan miqdarın saxlanması üçün dəyişən int NumberOfRows = 0; // sıfır olan satır sayı.. bool ProdRunning = false; // Başlat və dayandır düymələrinin aktiv olub olmadığını göstərən dəyişən int limits = new int [6]; // int CustomerID massivini başlatmaq; // customerID ictimai Form1 () {InitializeComponent (); load_table (); // zəng load_table}
void load_table ()
{MySqlCommand əmri = yeni MySqlCommand ("SELECT * FROM patedb.patelog ORDER BY timestamp DESC;", əlaqə); cəhd edin {MySqlDataAdapter adapteri = yeni MySqlDataAdapter (); adapter. SelectCommand = əmr; DataTable dbdataset = yeni DataTable (); adapter doldurun (dbdataset); BindingSource bsource = yeni BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter Yeniləmə (dbdataset); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }}
şəxsi boşluq SetRowOrder ()
{dataGridView1. Columns ["pateID"]. DisplayIndex = 0; // Bütün məlumatları əldə etmək üçün dataGridView1. Columns ["timestamp"]. DisplayIndex = 1; // Məlumat məlumatlarıGridView1. Columns ["UID"] ilə əlaqəli bütün məlumatları göstərir. DisplayIndex = 2; // Bütün məlumatları əldə etmək üçün dataGridView1. Columns ["weight"]. DisplayIndex = 3; // Bütün məlumatları əldə etmək üçün dataGridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Bütün məlumatları əldə etmək üçün dataGridView1. Columns ["orderID"]. DisplayIndex = 5; // Kolonner Andres} haqqında məlumat
şəxsi boşluq GetData_Click (obyekt göndərən, EventArgs e) // Verilənlər bazası cədvəlini və Zaman damgası ilə sifarişləri oxuyur
{load_table (); }
şəxsi boşluq btnRefreshUID_Click (obyekt göndərən, EventArgs e) //
{string timeStr = "UID ÜZRƏ SİFARİŞ patedb.patelog SELECT * FROM;"; MySqlCommand əmri = yeni MySqlCommand (timeStr, əlaqə); cəhd edin {MySqlDataAdapter adapteri = yeni MySqlDataAdapter (); adapter. SelectCommand = əmr; DataTable dbdataset = yeni DataTable (); adapter doldurun (dbdataset); BindingSource bsource = yeni BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter Yeniləmə (dbdataset); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }}
şəxsi boşluq btnRefreshValue_Click (obyekt göndərən, EventArgs e)
{string weightSort = "SELECT * FROM patedb.patelog SİFARİŞDƏ SİFARİŞ EDİN (çəki BÜTÜN İMZƏ EDİLDİ);"; MySqlCommand əmri = yeni MySqlCommand (weightSort, əlaqə); cəhd edin {MySqlDataAdapter adapteri = yeni MySqlDataAdapter (); adapter. SelectCommand = əmr; DataTable dbdataset = yeni DataTable (); adapter doldurun (dbdataset); BindingSource bsource = yeni BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter Yeniləmə (dbdataset); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }}
xüsusi boşluq ChkNullBtn_Click (obyekt göndərən, EventArgs e)
{if (ProdRunning) {CheckTableForNull (); load_table (); }}
şəxsi boşluq CheckTableForNull ()
{// Zaman aralığını yoxlayın/təyin edin minimum 100 ms int i; int. TryParse (textTimer1. Text, i xaricində); if (i <100) {timer1. Stop (); i = 100; taymer 1. Aralıq = i; MessageBox. Show ("Minimum dəyər i 100mS"); timer 1. Başlat (); } başqa {timer1. Interval = i; } textTimer1. Text = timer1. Interval. ToString (); // Cədvəldə null olan hər hansı bir satırın olub olmadığını yoxlayın, dəyişən sətirlərin sayını qaytarır: NumberOfRows string weightStr = ""; string chkNull = "COUNT SELECT (*) FROM patedb.patelog WHERE rangeNR NULL ORDER PATEID LIMIT 1;"; MySqlCommand əmri = yeni MySqlCommand (chkNull, əlaqə); cəhd edin {connection. Open (); NumberOfRows = Convert. ToInt32 (command. ExecuteScalar ()); əlaqə. Close (); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); } nəhayət {if (NumberOfRows! = 0) {try {// rangeNr -nin NULL string olduğu ən aşağı pateID sayını seçir readID = "pateID FROM patedb.patelog WHERE rangeNR NULL ORDER BY pateID ASC LIMIT 1;"; MySqlCommand cmdID = yeni MySqlCommand (readID, əlaqə); {connection. Open (); RowNumber = (int) cmdID. ExecuteScalar (); //tam!! əlaqə. Close (); } listPateID. Text = RowNumber. ToString (); // seçilmiş PateID nömrəsini oxumaq // Seçilmiş rownumber string sətrindən çəki seçir = RowNumber. ToString (); string readweight = "SEÇİN çəkisini FROM patedb.patelog WHERE pateID =" + sıra; MySqlCommand cmdweight = yeni MySqlCommand (oxunan çəki, əlaqə); {connection. Open (); weightStr = (string) cmdweight. ExecuteScalar (); // String !! əlaqə. Close (); } çəki = int. Parse (weightStr); // int txtWeight. Text = weight. ToString () -ə çevirmək; // çap int RangeNumber = 0; if (çəki> = məhdudiyyətlər [0] && çəki = məhdudiyyətlər [2] && çəki = məhdudiyyətlər [4] && çəki <= məhdudiyyətlər [5]) {RangeNumber = 3; }} txtRange. Text = RangeNumber. ToString (); UpdateLog (); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); } QuantProduced = QuantProduced + 1; }}} şəxsi boşluq btnStart_Click (obyekt göndərən, EventArgs e) {if (ProdRunning == false) {int valtest; cəhd edin {CustomerID = int. Parse (txtCustomerNr. Text); // oxumaq customerID} catch {MessageBox. Show ("İstehsalat məlumatlarını daxil edin və 'start' düyməsinə basın."); }
string test = "SELECT COUNT (*) FROM patedb.customertable WHERE customerID ="+CustomerID;
MySqlCommand cmdtestcustomer = yeni MySqlCommand (test, əlaqə); {connection. Open (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // müştəri əlaqəsi yoxdursa 0 qaytarır. Close (); } if (valtest == 1) // müştəri verilənlər bazasında varsa - istehsalata başlayın {cəhd edin {OrderNr = int. Parse (txtOrderNumber. Text); ProdRunning = doğru; timer 1. Başlat (); textTimer1. Text = timer1. Interval. ToString (); ReadLimits (); } catch (Exception ex) {MessageBox. Show ("İstehsalat məlumatlarını daxil edin və 'start' düyməsinə basın."); }} başqa MessageBox. Show ("Müştəri verilənlər bazasında deyil, yenidən cəhd edin"); } // ReadLimits (); }
xüsusi boşluq ReadLimits ()
{// Sınırları dəyişəndən oxuyur, 1 -dən 3 -ə qədər int counter = 0; for (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin FROM patedb.rangetable WHERE rangeNr ="+rangeNr; MySqlCommand cmdmin = yeni MySqlCommand (readmin, əlaqə); {connection. Open (); limitlər [sayğac] = (int) cmdmin. ExecuteScalar (); sayğac = sayaç + 1; əlaqə. Close (); } // MessageBox. Show (counter. ToString ()); string readmax = "SELECT rangeMax FROM patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmax = yeni MySqlCommand (readmax, əlaqə); {connection. Open (); limitlər [sayğac] = (int) cmdmax. ExecuteScalar (); sayğac = sayaç + 1; əlaqə. Close (); }} // döngə üçün son}
şəxsi boşluq UpdateLog ()
{// UPDATE rangeNR & orderID sətri Aralığı = RangeNumber. ToString (); string Sifariş = OrderNr. ToString (); string update = "UPDATE patedb.patelog SET rangeNr ="+Range+','+"orderID ="+OrderNr+"WHERE pateID ="+RowNumber; MySqlCommand updatecmd = yeni MySqlCommand (yeniləmə, əlaqə); cəhd edin {connection. Open (); updatecmd. ExecuteNonQuery (); əlaqə. Close (); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }}
xüsusi boşluq btnStop_Click (obyekt göndərən, EventArgs e)
{if (ProdRunning == true) {timer1. Stop (); ProdRunning = yalan; UpdateOrderTable (); } başqa {MessageBox. Show ("Hələ heç bir istehsal başlamadı. Məlumat daxil edin və 'start' düyməsinə basın"); }}
xüsusi boşluq UpdateOrderTable ()
{string insert = "INSERT INTO patedb.ordertable (orderID, orderQuant, quantProduced, comment, customerID) VALUES ('" + this.txtOrderNumber. Text + "', '" + this.txtOrderQuant. Text + "', '" + QuantProduced. ToString ()+"','"+this.txtComment. Text+"','"+this.txtCustomerNr. Text+"');"; MySqlCommand insertcmd = yeni MySqlCommand (daxil edin, əlaqə); cəhd edin {connection. Open (); insertcmd. ExecuteNonQuery (); əlaqə. Close (); QuantProduced = 0; } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }}
private void timer1_Tick (obyekt göndərən, EventArgs e)
{CheckTableForNull (); load_table (); }
şəxsi boşluq btnShowOrderTable_Click (obyekt göndərən, EventArgs e)
{if (ProdRunning == false) {MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.ordertable ORDER BY orderID DESC;", bağlantı); cəhd edin {MySqlDataAdapter adapteri = yeni MySqlDataAdapter (); adapter. SelectCommand = əmr; DataTable dbdataset = yeni DataTable (); adapter doldurun (dbdataset); BindingSource bsource = yeni BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter Yeniləmə (dbdataset); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }} başqa {MessageBox. Show ("OrderTable üçün stop düyməsini basın"); }}
şəxsi boşluq btnShowOrderDetails_Click (obyekt göndərən, EventArgs e)
{if (ProdRunning == false) {string test = ("SELECT patedb.ordertable.orderID, orderQuant, quantProduced, comment, customerID FROM patedb.ordertable INNER JOIN patedb.patelog ON patedb.patelog.orderID = patedb.ordertable.orderID WHERE patedb.patelog. UID = '" + txtShowOrderDetails. Text +"' "); MySqlCommand əmri = yeni MySqlCommand (test, əlaqə); cəhd edin {connection. Open (); MySqlDataAdapter adapteri = yeni MySqlDataAdapter (); adapter. SelectCommand = əmr; DataTable dbdataset = yeni DataTable (); adapter doldurun (dbdataset); BindingSource bsource = yeni BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter Yeniləmə (dbdataset); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); } əlaqə. Close (); } başqa {MessageBox. Show ("Sifariş təfərrüatlarını görmək üçün stop düyməsini basın"); }}
şəxsi boşluq btnShowCustomerDetails_Click (obyekt göndərən, EventArgs e)
{if (ProdRunning == false) {string test = ("SELECT patedb.customertable.customerID, name, address, phone, email, rangeNr FROM patedb.customertable INNER JOIN patedb.ordertable ON patedb.ordertable.customerID = patedb.customertable. customerID WHERE patedb.ordertable.orderID = '" + txtShowCustomerDetails. Text +"' "); MySqlCommand əmri = yeni MySqlCommand (test, əlaqə); cəhd edin {MySqlDataAdapter adapteri = yeni MySqlDataAdapter (); adapter. SelectCommand = əmr; DataTable dbdataset = yeni DataTable (); adapter doldurun (dbdataset); BindingSource bsource = yeni BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter Yeniləmə (dbdataset); } catch (Exception ex) {MessageBox. Show (məs. Mesaj); }} başqa {MessageBox. Show ("Müştəri məlumatlarını öyrənmək üçün dayanma düyməsini basın"); }}}
}
Tövsiyə:
Şirkətinizdə əmək haqqı hazırlamaq üçün Ms Access Veritabanı Proqramı yaradın: 6 addım
Şirkətinizdə əmək haqqı hazırlamaq üçün Ms Access Verilənlər Bazası Proqramı yaradın: Sizə aylıq əmək haqqı yaratmaq və bununla əmək haqqı kartlarını asanlıqla çap etmək üçün MS -dən istifadə edərək əmək haqqı sistemi yaratmaq üçün qısa təlimat verəcəyəm. Bu yolla hər ay əmək haqqı məlumatlarının qeydlərini verilənlər bazası altında saxlaya və gec redaktə edə və ya nəzərdən keçirə bilərsiniz
EAL - Rc Car -da Sənaye 4.0 GPS Məlumatlarının Toplanması: 4 Addım
EAL - Rc Car -da Sənaye 4.0 GPS Məlumatlarının Toplanması: Bu Təlimat kitabında bir RC avtomobildə GPS modulunu necə qurduğumuzdan və topladığımız məlumatları asan izləmək üçün veb səhifəyə yerləşdirməyimizdən bəhs edəcəyik. Burada tapıla bilən RC avtomobilimizi necə hazırladığımızı əvvəlcədən öyrətdik. Bu istifadə edir
Dataopsamling Af Tyverialarm IIOT 4.0: 8 Addımlar
Tyverialarm IIOT 4.0 -da məlumatların toplanması: Araşdırma və layihə ilə əlaqədar olaraq, IIOT -un ilk versiyasıdır. Məlumat əldə etmək üçün bir neçə layihə hazırladıqdan sonra, məlumatların və məlumatların bir -birindən uzaq olmasını təmin edin. D
Arduino Layihəsi: Nodejs + SQL Veritabanı və Veb Saytı istifadə edərək İnternet üzərindən Elektronikaya Nəzarət Edin .: 6 Addım
Arduino Layihəsi: Nodejs + SQL Veritabanı və Veb Saytı istifadə edərək İnternet üzərindən Elektronikaya Nəzarət .: Layihə Müəllifi: Mahmed.tech Tarix: 14 İyul 2017 Çətinlik Səviyyə: Bəzi proqramlaşdırma biliklərinə sahib olan. Avadanlıq Tələbi: - Arduino Uno, Nano, Mega (serial bağlantısı olan MCU -nun çoxunun işləyəcəyini düşünürəm) - Tək LED & Cari məhdudlaşdıran res
EAL-Sənaye 4.0-Ağıllı Roket: 8 Addım (Şəkillərlə birlikdə)
EAL-Industry 4.0-Smart Rocket: Bu, Danimarkada Erhversakademiet Lilleb aelig; lt üzərində hazırlanan bir məktəb layihəsidir. Layihə "Industri 4.0" adlı bir sinifdə hazırlanmışdır. Vəzifə, sənayenin 4.0 avtomatik sistemini tətbiq etməkdir. prinsiplər. Sistem bacarmalıdır