Orodha ya maudhui:
- Hatua ya 1: Opsamling Af Data ya Vægt Samt Kusajili Af UID
- Hatua ya 2: Programu ya Arduino
- Hatua ya 3: Node-RED, Lagring Af Data I Hifadhidata
- Hatua ya 4: Uundaji wa hifadhidata
- Hatua ya 5: Patelog
- Hatua ya 6: Inastahili
- Hatua ya 7: Inastahili
- Hatua ya 8: Kubadilika
- Hatua ya 9: Programu ya C #
Video: EAL-Industri4.0-RFID Dataopsamling Til Hifadhidata: Hatua 10 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:54
Dette projekt omhandler opsamling af vægtdata, kusajili af kitambulisho vha. RFID, data ndogo juu ya hifadhidata ya MySQL. node-RED, na kufanya fremvisning na kushughulikia data ya opsamlede data na Programu ya # kuunda kwa Windows Maombi ya Fomu. Vi msimamizi wa misitu:
Vi har en produktionslinje som productrer leverpostej i 200g foliebakker. Alle fredge bagte leverpostejer udstyres after to play med and RFID tag and plasticlåget / labelen, som indeholder and unikt ID (UID = Kitambulisho cha kipekee, nambari 32 za kificho, alama 8 za hesabu) kwa utambulisho wa habari kwa kila siku. Kufanya kazi kwa kila siku kwa kufanya kazi (kufanya kazi kwa kufahamisha, kuachana na milango), na kutafutiwa kura kwa sababu ya kutafakari kwa muda mfupi, vitambulisho vya UID vitatolewa kwa sababu ya kufanya hivyo. leverpostejer kwa sababu maalum ya kufafanua. Kunderne er maduka makubwa:
1. Irma. Inaweza kuwa juu ya Irmas luksus leverpostej skal holde sig inden kwa +/- 5%, kwa kiwango cha chini 190g na maksimum 210g.
2. Brugsen. Chagua kwa Brugsens leverpostej skal holde sig inden kwa +/- 10%, na kiwango cha chini cha 180g na maksimum 220g.
3. Aldi. Ongeza kwenye Aldis punguzo la bei ya juu kwa kiwango cha +/- 15%, na kiwango cha chini cha 170g na kiwango cha 230g.
Der er således følgende sorteringer:
Range0: nje ya masafa
Range1: kiwango cha chini cha 190g / upeo210g
Range2: kiwango cha chini cha 180g / upeo2g
Range3: kiwango cha chini cha 170g / kiwango cha juu 230g
Hatua ya 1: Opsamling Af Data ya Vægt Samt Kusajili Af UID
Ili kufungua data ya habari, usajili wa vitambulisho vya vitambulisho vya RFID kwa Arduino MEGA2560 med en RFID-RC522 msomaji / mwandishi. Da vi ikke har nogen vægt, simulerer vi data kwa ajili ya kupigia med na potmeter tilsluttet en analog indgang på Arduinoen.
Njia mpya ya kuunda maandishi:
1 stk potmeter 25k lineært. Yder-benene er tilsluttet hhv. GND og + 5V, midterbenet er tilsluttet AN0
RFID-RC522 er tilsluttet Arduino boardets SPI port kwa njia ya fani:
SDA -> pini 53
SCK -> pini52
MOSI -> pini51
MISO-> pin50
IRQ -> NC
GND -> GND
RST -> pini5
3.3V -> 3.3V
De opsamlede data, kwa hhv. UID itaweza kupatikana, na kutuma bandari ya huduma kwa njia nyingine kwa njia ya kufanya kazi kwa kutumia vifaa vya red-red kwa ajili ya mpango wa kufanya kazi kwenye dashibodi na kuweka kwenye hifadhidata.
Hatua ya 2: Programu ya Arduino
Mimi Arduino programmet inkluderes de kwa biblioteker SPI.h og MFRC522.h kwa saa kunne bruge RFID læseren. Ninaanza programu za mwanzo za kutofautisha. Der laves en instans kwa MFRC522. I Setup blokken initialiseres den serielle forbindelse, SPI porten og MFRC522. Derefter scannes vitambulisho vya RFID efter. Kwa ikke katika sende det samme UID imesimamisha meli mbali mbali, ambayo inaweza kutekelezwa kwa kisiki. Baada ya kusoma na kuweka lebo ya UID, upeanaji wa mapato yako kwa UID. Hvis safu nyUID er forskellig fra oldUID er der tale tale and nyt UID som kan send up a den serielle port. Hvis nyUID og oldUID er ens, er der tale om samme UID tag na UID'et skal kupuuza. Hvis der er tale om et nyt UID, send UID'et på den serielle port sammen med en læst værdi fra den serielle port. Tundu analoge værdi skaleres til området 150-250. Takwimu zinatuma som en komma-separeret tekststreng. Kama mtu anaweza kutumia zamaniUID = nyuid, zilizowekwa kwenye klart ya simu na alama ya RFID.. Tangazo la programu hii linaweza kutekelezwa na programu mbili za safu mbili. Funktionen anayerudisha kweli hvis array'ne er ens, na uongo hvis array'ne er forskellige.
# pamoja
# pamoja # Mpango huu unakagua kadi za RFID ukitumia bodi ya kusoma / mwandishi wa RDIF-RC522. // UID inasomwa, pini ya analog inasomeka. Thamani ya Analog 0-1023 imepunguzwa hadi 150-250. // UID na thamani ya analog hutumwa kama maandishi yaliyotengwa kwa koma kwenye bandari ya serial kwa kutumia 9600, N, 8, 1. // Utunzaji umechukuliwa kutuma kila UID mara moja mfululizo, // UID mpya inapaswa kuwa sasa kabla ya UID hiyo hiyo kutumwa tena. // Kazi hii ni utekelezaji katika nambari kwa kulinganisha safu: oldUID nyUID katika safu ya kazi_cmp (oldUID , nyUID )
mkusanyiko uint8_t RST_PIN = 5;
mkusanyiko uint8_t SS_PIN = 53; sensor ya ndaniPin = A0; Thamani = 0; Kamba ya StringValue = "0000"; byte oldUID [4] = {}; baiti nyUID [4] = {};
MFRC522 mfrc522 (SS_PIN, RST_PIN); // Unda mfano wa MFRC522.
kuanzisha batili ()
{Serial.begin (9600); // Anzisha mawasiliano ya serial SPI. Anza (); // Anzisha basi ya SPI mfrc522. PCD_Init (); // Anzisha MFRC522}
kitanzi batili ()
{// Tafuta kadi mpya ikiwa (! Mfrc522. PICC_IsNewCardPresent ()) {inarudi; } // Chagua moja ya kadi ikiwa (! Mfrc522. PICC_ReadCardSerial ()) {inarudi; } // mzigo nyUID na lebo ya UID ya (byte i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // kama oldUID nyUID ikiwa (! } Thamani = (Thamani / 10) + 150; // tuma thamani ya Analog iliyopangwa Serial.print (Thamani); // tuma newline Serial.println (); // kuweka oldUID = nyUID kwa (byte z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // // subiri sekunde 1 (1000); }
// linganisha safu mbili…
safu ya boolean_cmp (byte a , byte b ) {bool test = true; // jaribu kila kitu kuwa sawa. ikiwa moja sio, rudisha uwongo kwa (byte n = 0; n <4; n ++) {if (a [n]! = b [n]) test = false; // ikiwa kwenye byte si sawa, test = false} ikiwa (test == true) inarudi kweli; mwingine kurudi uongo; }
Hatua ya 3: Node-RED, Lagring Af Data I Hifadhidata
Mtiririko wa mkondo na njia-RED:
COM4 er den serielle forbindelse hvor data modtages fra Arduino boardet. Funktionerne "Split and Get value" og "Split and Get UID" splitter teksstrengen ved kommaet og Returnere hhv vægten og UID. Kupata vidonda kwa fremvisning kwenye dashibodi na kwenye chati na kiwango. UID hujisifu kwa muda mrefu na tekstfelt. Funktionen test_sound advarer verbalt med sætningen "Kati ya anuwai", hvis vægten er under 170g eller over 230g, dvs i range 0.
Kugawanyika na Kupata Thamani:
pato la var = msg.payload.split (',');
temp = {malipo ya malipo: (pato [1])}; kurudi temp;
Gawanya na Pata UID:
pato la var = msg.payload.split (",");
temp = {malipo ya malipo: pato [0]}; kurudi temp;
mtihani_sound:
nambari ya var = parseInt (msg.payload);
ikiwa (nambari> 230 || nambari <170) {newMsg = {payload: "Out of range"}; kurudi newMsg; } mwingine {newMsg = {payload: ""}; kurudi newMsg; }
Funktionen Split kamba "," orodha na muhuri wa muda, UID na orodha ya orodha ya patedb.patelog.
pato la var = msg.payload.split (","); // mgawanyiko msg.pakia kwa koma kwa safu
UIDTag = pato [0]; // sehemu ya kwanza katika nafasi ya kwanza [0] ValueTag = pato [1]; // sehemu ya pili katika nafasi ya pili [1]
var m = {
mada: "INSERT IN Patedb.patelog (timestamp, UID, weight) VALUES ('" + new Date (). toISOString () + "', '" + UIDTag + "'," "+ ValueTag +" '); " }; kurudi m;
patelog er en Hifadhidata ya MySQL inakataza kufanya kazi kwa njia nyingine:
Mwenyeji: localhost
Bandari: 3306
Mtumiaji: mzizi
Hifadhidata: patedb
Hatua ya 4: Uundaji wa hifadhidata
Databasen patedb mmiliki 4 tabeller
patelog er dataopsamlingstabellen, tilskrives data af node-RED og C # programmetmet
data inayoweza kupangiliwa kwa wahusika kama data ya mmiliki wa data, data ya tilskrives af C # programmetmet
customertable er et kunderegister
anuwai ya kichupo cha wamiliki wa vyuo vikuu kwa de i C # vipindi vya vipindi vya programu.
Hatua ya 5: Patelog
Tabellen patelog indeholder folgende 6 kolonner:
PateID (int) er msingi muhimu na inkrementeres automatisk.
Muhuri wa muda, UID na chaguzi za aina ya chapa (med forskellig max længde)
anuwai ya kuchapisha rangi ndogo (alama na programu za C # programmet)
kuagizaID kwa aina ya int (kuagizaID kwa programu C # programmet)
Node-RED inaongoza kwa kutumia njia mbalimbali za kolonnerneNr og orderID. Mpangilio wa Mpangilio wa Mpangilio wa Mpangilio wa Mpangilio wa NULL, utapiga marufuku kwenye C # programu ya mpango kwa njia ya utaftaji wa vifaa vya upigaji kura kwa anuwai ya Mpangilio
Hatua ya 6: Inastahili
mwenye dhamana inayopangwa 5 kolonner:
mpangilio (int) er det aktuelle ordrenummer
utaratibuQuant (kati) inaweka mpango wa kupinga
Kiasi Kilichozalishwa (kati) ya kukodisha shughuli za uzalishaji wa bidhaa. (Telelles af C # programmet)
toa maoni (maandishi madogo) kuhusu tukio lako.
mteja (int) er det aktuelle kundenummer kwa njia ya sheria.
Hatua ya 7: Inastahili
mwenye dhamana inayoweza kubadilika 6 kolonner:
mtejaID (int) er msingi muhimu og auto inc.
jina, anwani, simu, barua pepe (varchar) med forskellig max længde
masafaNr (int)
Hatua ya 8: Kubadilika
mmiliki anayepanguliwa 3 kolonner:
rangeNr (int) ufunguo wa msingi og auto inc.
masafaMin (int)
masafaMax (int)
Hatua ya 9: Programu ya C #
Når der productres in enrerepostej, in process of følgende:
Kundenummer, ordrenummer, ordreantal og en eventuel kommentar inditions in C # programmet (i praksis overføres det digitalt fra virksomhedens ordresystem. Produktionen startes from ved tryk on the start '- knappen. kwa siku ya usafirishaji) Siku ya kwanza ya UID na kituo cha utumaji hutuma nambari ya RED, kwa sababu ya data inayopatikana kwenye dashibodi 'na. Wakati wa kufanya kazi kwa muda wa saa, UID itatekelezwa kwa njia ya simu yako. tidspunkt ikke tilskrives værdier til rangeNr og kuagizaID vil de have værdien NULL.
Msingi wa kipindi cha chini cha msimu wa kati wa C # programmet patedb.patelogtabellen kwa mtu anayeweza kutafakari na NULL værdier i rangeNr kolonnen. Huduma zote za tovuti zinaweza kutekelezwa kwa njia ya NULL, orodha mbali mbaliNr og det tilføjes sammen med det aktuelle orderID. Kwa sasa unaweza kutoa bidhaa, tafadhali tafadhali jaribu kujaribu "kuacha" - knappen. Nambari za kupulizia, turuhusu kuorodheshwa kwa patedb.ordertable med de aktuelle ordredata. Kwa sasa, unaweza kupata data kwenye orodha ya wahusika kwenye orodha ya orodha ya matangazo ambayo yatatekelezwa wakati wa kujaribu programu ya kusoma na kusasisha Sasisho la DataGridview. inayoweza kupangiliwa kwa wakati unaofaa, na kwa sababu hiyo inaongozwa na mtu binafsi UID'er eller kundedata kwa mtu mmoja mmoja.
kutumia System; kutumia System. Collections. Generic; kutumia System. ComponentModel; kutumia System. Data; kutumia Mfumo. Kuchora; kutumia System. Linq; kutumia Mfumo. Maandishi; kutumia System. Treading. Tasks; kutumia System. Windows. Forms; kutumia MySql. Data. MySqlClient;
nafasi ya majina show_data_from_database
{darasa la sehemu ya umma Form1: Fomu {MySqlConnection connection = new MySqlConnection ("datasource = localhost; username = root; password = ''"); int RowNumber = 0; // Kubadilika kwa kuhifadhi thamani ya pateID int RangeNumber = 0; // Kubadilika kwa kuhifadhi idadi ya uzani int uzani = 0; // Kubadilika kwa kuhifadhi uzito int OrderNr = 0; // Kubadilika kwa kuhifadhi OrderNR int QuantProduced = 0; // Kubadilika kwa kuhifadhi idadi iliyozalishwa int NumberOfRows = 0; // idadi ya safu na batili.. bool ProdRunning = uwongo; // Viashiria vinavyoonyesha ikiwa vifungo vya kuanza na kuacha vimeamilishwa int mipaka = mpya int [6]; // Kubadilika kwa kuhifadhi Fomu ya umma ya mtejaID1 () {InitializeComponent (); mzigo_table (); // simu_ya meza}
meza_ya mzigo ()
{MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.patelog ORDER BY timestamp DESC;", unganisho); jaribu {MySqlDataAdapter adapta = mpya MySqlDataAdapter (); adapta. SelectCommand = amri; DataTable dbdataset = DataTable mpya (); adapta Jaza (dbdataset); Bindingource rasilimali = rasilimali mpya ya Binding (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapta. Sasisha (dbdataset); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }}
utupu wa kibinafsi SetRowOrder ()
{dataGridView1. Columns ["pateID"]. DisplayIndex = 0; // Her can rkekkefølgen af kolonner ændres dataGridView1. Columns ["timestamp"]. DisplayIndex = 1; // Her can rkekkefølgen af kolonner ændres dataGridView1. Columns ["UID"]. DisplayIndex = 2; // Her can rækkefølgen af kolonner ændres dataGridView1. Columns ["weight"]. DisplayIndex = 3; // Her can rkekkefølgen af kolonner ændres dataGridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Her can rkekkefølgen af kolonner ændres dataGridView1. Columns ["orderID"]. DisplayIndex = 5; // Her kan rækkefølgen af kolonner ændres}
utupu wa kibinafsi GetData_Click (mtumaji wa vitu, EventArgs e) // Anasoma meza ya hifadhidata na maagizo na Timestamp
meza ya mzigo (); }
utupu wa kibinafsi btnRefreshUID_Click (mtumaji wa vitu, Tukio la Args e) //
{string timeStr = "CHAGUA * KUTOKA kwa patedb.patelog Agizo na UID;"; Amri ya MySqlCommand = mpya MySqlCommand (timeStr, unganisho); jaribu {MySqlDataAdapter adapta = mpya MySqlDataAdapter (); adapta. SelectCommand = amri; DataTable dbdataset = DataTable mpya (); adapta Jaza (dbdataset); Bindingource rasilimali = rasilimali mpya ya Binding (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapta. Sasisha (dbdataset); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }}
utupu wa kibinafsi btnRefreshValue_Click (mtumaji wa vitu, Tukio la Args e)
{string weightSort = "CHAGUA * KUTOKA kwa patedb.patelog Agizo na kutupwa (uzani kama INTEGER iliyosainiwa);"; Amri ya MySqlCommand = mpya MySqlCommand (uzitoSort, unganisho); jaribu {MySqlDataAdapter adapta = mpya MySqlDataAdapter (); adapta. SelectCommand = amri; DataTable dbdataset = DataTable mpya (); adapta Jaza (dbdataset); Bindingource rasilimali = rasilimali mpya ya Binding (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapta. Sasisha (dbdataset); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }}
utupu wa kibinafsi ChkNullBtn_Click (mtumaji wa vitu, Tukio la Args e)
{ikiwa (ProdRunning) {CheckTableForNull (); mzigo_table (); }}
utupu wa kibinafsi CheckTableForNull ()
{// Angalia / weka kiwango cha chini cha muda wa saa 100 ms int i; int. JaribuParse (maandishiTimer1. Nakala, nje i); ikiwa (i <100) {timer1. Stop (); i = 100; timer1. Interval = i; MessageBox. Show ("Thamani ya chini i 100mS"); timer1 Anza (); } mwingine {timer1. Interval = i; } maandishiTimer1. Text = timer1. Interval. ToString (); // Angalia ikiwa safu yoyote iliyo na null inapatikana kwenye meza, inarudi idadi ya safu katika kutofautisha: NumberOfRows string weightStr = ""; kamba chkNull = "CHAGUA HESABU (*) KUTOKA kwa patedb.patelog AMBAPI rangeNR INAAMUA NULL KWA PATEID LIMIT 1;"; Amri ya MySqlCommand = mpya MySqlCommand (chkNull, unganisho); jaribu {unganisho. Fungua (); NambariOfRows = Convert. ToInt32 (command. ExecuteScalar ()); unganisho Funga (); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); } mwishowe {if (NumberOfRows! = 0) {jaribu {// Inachagua nambari ya chini kabisa ya pateID ambapo rangeNr ni NULL string readID = "CHAGUA pateID KUTOKA kwa patedb.patelog AMBAPI rangeNR INAAMUA NULL na pateID ASC LIMIT 1;"; MySqlCommand cmdID = MySqlCommand mpya (readID, unganisho); {unganisho. Fungua (); RowNumber = (int) cmdID. ExecuteScalar (); // kamili !! unganisho Funga (); } orodhaPateID. Text = RowNumber. ToString (); // soma nambari iliyochaguliwa ya PateID // Inachagua uzito kutoka kwa safu ya safu ya rownumber iliyochaguliwa = RowNumber. ToString (); uzani wa kamba = "CHAGUA uzani KUTOKA kwa patedb.patelog WAPI pateID =" + safu; MySqlCommand cmdweight = MySqlCommand mpya (uzani mwepesi, unganisho); {unganisho. Fungua (); weightStr = (kamba) cmdweight. ExecuteScalar (); // Kamba !! unganisho Funga (); } uzito = int. Parse (weightStr); // kubadilisha kuwa int txtWeight. Text = weight. ToString (); // kuchapa int RangeNumber = 0; ikiwa (uzito> = mipaka [0] && uzani = mipaka [2] && uzani = mipaka [4] && uzani <= mipaka [5]) {RangeNumber = 3; }} txtRange. Text = RangeNumber. ToString (); SasishaLog (); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); } Kilichozalishwa = Kiasi kilichozalishwa + 1; }}} utupu wa kibinafsi btnStart_Click (mtumaji wa vitu, EventArgs e) {if (ProdRunning == false) {int valtest; jaribu {CustomerID = int. Parse (txtCustomerNr. Text); // soma mtejaID} kamata {MessageBox. Show ("Ingiza data ya uzalishaji na bonyeza kitufe cha" anza ".); }
mtihani wa kamba = "CHAGUA HESABU (*) KUTOKA kwa patedb.customertable WHERE customerID =" + CustomerID;
MySqlCommand cmdtestcustomer = mpya MySqlCommand (mtihani, unganisho); {unganisho. Fungua (); valtest = Kubadilisha. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // inarudi 0 ikiwa mteja hayupo muunganisho Funga (); } ikiwa (valtest == 1) // ikiwa mteja yupo kwenye hifadhidata - anza uzalishaji {jaribu {OrderNr = int. Parse (txtOrderNumber. Text); Kukimbia = kweli; timer1 Anza (); maandishiTimer1. Text = timer1. Interval. ToString (); Soma Mipaka (); } kukamata (Ex ex ex) {MessageBox. Show ("Ingiza data ya utengenezaji na bonyeza kitufe cha" anza "."); }} mwingine MessageBox. Show ("Mteja hayuko kwenye hifadhidata, jaribu tena"); } // Vipimo vya kusoma (); }
Utupu wa kibinafsi wa ReadLimits ()
{// Inasoma mipaka kutoka kwa upeo, anuwai 1 hadi 3 int counter = 0; kwa (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin FROM patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmin = MySqlCommand mpya (readmin, unganisho); {unganisho. Fungua (); mipaka [kaunta] = (int) cmdmin. ExecuteScalar (); kaunta = kaunta + 1; unganisho Funga (); } // MessageBox. Show (counter. ToString ()); string readmax = "CHAGUA rangeMax KUTOKA patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmax = MySqlCommand mpya (readmax, unganisho); {unganisho. Fungua (); mipaka [kaunta] = (int) cmdmax. ExecuteScalar (); kaunta = kaunta + 1; unganisho Funga (); }} // mwisho wa kitanzi}
Upungufu wa kibinafsi wa Sasisho ()
{// UPDATE rangeNR & orderID kamba Range = RangeNumber. ToString (); kamba Order = OrderNr. ToString (); sasisho la kamba = "UPDATE patedb.patelog SET rangeNr =" + Range + ',' + "orderID =" + OrderNr + "WHERE pateID =" + RowNumber; Sasisho la MySqlCommandcmd = MySqlCommand mpya (sasisho, unganisho); jaribu {unganisho. Fungua (); sasisha cmd. ExecuteNonQuery (); unganisho Funga (); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }}
utupu wa kibinafsi btnStop_Click (mtumaji wa vitu, Tukio la Args e)
{ikiwa (ProdRunning == kweli) {timer1. Stop (); Kukimbia = uongo; SasishaOrderTable (); } mwingine {MessageBox. Show ("Hakuna uzalishaji ulioanza bado. Ingiza data na bonyeza kitufe cha" anza "); }}
Upungufu wa kibinafsi wa TaswiraOrderTable ()
{string ins = Imetolewa. MySqlCommand insertcmd = mpya MySqlCommand (ingiza, unganisho); jaribu {unganisho. Fungua (); ingiza cmd. ExecuteNonQuery (); unganisho Funga (); Imetolewa = 0; } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }}
kipima muda cha batili1_Tick (mtumaji wa kitu, Mikutano ya Matukio e)
{CheckTableForNull (); mzigo_table (); }
utupu wa kibinafsi btnShowOrderTable_Click (mtumaji wa vitu, Tukio la Args e)
{if (ProdRunning == false) {MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.ordertable ORDER BY orderID DESC;", unganisho); jaribu {MySqlDataAdapter adapta = mpya MySqlDataAdapter (); adapta. SelectCommand = amri; DataTable dbdataset = DataTable mpya (); adapta Jaza (dbdataset); Bindingource rasilimali = rasilimali mpya ya Binding (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapta. Sasisha (dbdataset); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }} mwingine {MessageBox. Show ("Bonyeza stop to wiev orderTable"); }}
utupu wa kibinafsi btnShowOrderDetails_Click (mtumaji wa vitu, Tukio la Args e)
{if (ProdRunning == false) {string test = ("SELECT patedb.ordertable.orderID, orderQuant, quantProsed, comment, customerID FROM patedb.ordertable INNER JOIN patedb.patelog ON patedb.patelog.orderID = patedb.ordertable.orderID WHERE patedb.patelog. UID = '"+ txtShowOrderDetails. Text +" ""); Amri ya MySqlCommand = mpya MySqlCommand (mtihani, unganisho); jaribu {unganisho. Fungua (); Adapta ya MySqlDataAdapter = mpya MySqlDataAdapter (); adapta. SelectCommand = amri; DataTable dbdataset = DataTable mpya (); adapta Jaza (dbdataset); Bindingource rasilimali = rasilimali mpya ya Binding (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapta. Sasisha (dbdataset); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); } unganisho Funga (); } mwingine {MessageBox. Show ("Bonyeza stop ili uone maelezo ya agizo"); }}
utupu wa kibinafsi btnShowCustomerDetails_Click (mtumaji wa vitu, Tukio la Args 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. mtejaID WAPI patedb.ordertable.orderID = '"+ txtShowCustomerDetails. Text +" ""); Amri ya MySqlCommand = mpya MySqlCommand (mtihani, unganisho); jaribu {MySqlDataAdapter adapta = mpya MySqlDataAdapter (); adapta. SelectCommand = amri; DataTable dbdataset = DataTable mpya (); adapta Jaza (dbdataset); Bindingource rasilimali = rasilimali mpya ya Binding (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapta. Sasisha (dbdataset); } kukamata (Ex ex ex) {MessageBox. Show (ex. Message); }} mwingine {MessageBox. Show ("Bonyeza stop to wiev details za wateja"); }}}
}
Ilipendekeza:
Jinsi ya Unganisha NodeMCU ESP8266 kwenye Hifadhidata ya MySQL: Hatua 7
Jinsi ya Kuunganisha NodeMCU ESP8266 kwenye Hifadhidata ya MySQL: MySQL ni mfumo wa usimamizi wa hifadhidata unaotumika sana (RDBMS) ambao hutumia lugha ya muundo wa swala (SQL). Wakati fulani, unaweza kutaka kupakia data ya sensa ya Arduino / NodeMCU kwenye hifadhidata ya MySQL. Katika Agizo hili, tutaona jinsi ya kuunganisha
Unda Programu ya Hifadhidata ya Ms Access Kuandaa Mishahara katika Kampuni Yako: Hatua 6
Unda Programu ya Hifadhidata ya Ms Access Kuandaa Mishahara katika Kampuni Yako: Nitakupa maagizo mafupi ya kuunda mfumo wa Mishahara ukitumia ufikiaji wa MS kwa kutoa mishahara ya kila mwezi na kuchapisha hati za mishahara kwa urahisi na hii. Kwa njia hii unaweza kuweka kumbukumbu za kila mwezi za maelezo ya mshahara chini ya hifadhidata na unaweza kuhariri au kukagua kuchelewa
Jinsi ya Kubuni Hifadhidata za Uhusiano katika Ufikiaji wa Microsoft kwa Kompyuta: Hatua 17
Jinsi ya Kubuni Hifadhidata za Uhusiano katika Ufikiaji wa Microsoft kwa Kompyuta: Maagizo yanayofuata yanaweka maelezo ya jinsi ya kuunda hifadhidata za uhusiano katika Ufikiaji wa Microsoft. Mwongozo huu utaonyesha kwanza jinsi ya kuunganisha vizuri meza mbili (2). Kisha nitaelezea kwa undani jinsi ya kuunda fomu kutoka kwa uhusiano huu mpya, nikiruhusu mtumiaji aingie
NODEMCU LUA ESP8266 Unganisha kwenye Hifadhidata ya MySQL: 6 Hatua
NODEMCU LUA ESP8266 Unganisha kwa Hifadhidata ya MySQL: Hii inaweza kufundishwa sio kwa wenye moyo dhaifu kwani hutumia XAMPP (Apache, MySQL & PHP), HTML na kwa kweli LUA. Ikiwa una ujasiri wa kukabiliana na haya, soma! Ninatumia XAMPP kwani inaweza kusanidiwa kwenye kalamu au gari yako ngumu na inasanidi
UCL-IIOT - Mfumo wa Kengele ulio na Hifadhidata na Nyekundu-nyekundu: Hatua 7
UCL-IIOT - Mfumo wa Kengele ulio na Hifadhidata na Nyekundu-nyekundu: Kusudi la ujenzi huu ni kufundisha juu ya kuunganisha Arduino na Node-nyekundu na hifadhidata, ili uweze kuingia data na pia kukusanya kwa matumizi ya baadaye. mfumo rahisi wa kengele wa arduino ambao hutoa nambari 5 za data, kila moja imetengwa na