Isi kandungan:

Hantar Data Berangka Dari Satu Arduino ke Yang Lain: 16 Langkah
Hantar Data Berangka Dari Satu Arduino ke Yang Lain: 16 Langkah

Video: Hantar Data Berangka Dari Satu Arduino ke Yang Lain: 16 Langkah

Video: Hantar Data Berangka Dari Satu Arduino ke Yang Lain: 16 Langkah
Video: Cara koneksi NodeMCU dengan database mysql dan PHP | Tutorial Pemrograman Arduino dan IoT 2024, Julai
Anonim
Hantar Data Berangka Dari Satu Arduino ke Yang Lain
Hantar Data Berangka Dari Satu Arduino ke Yang Lain

Pengenalan

oleh David Palmer, CDIO Tech. di Universiti Aston.

Adakah anda perlu menghantar beberapa nombor dari satu Arduino ke yang lain? Instructable ini menunjukkan bagaimana.

Anda boleh mengujinya dengan mudah dengan hanya mengetik rentetan nombor untuk dihantar di terminal Serial Monitor, dan melihat nombornya keluar pada monitor Serial kedua yang disambungkan ke Arduino kedua. Anda bahkan boleh menggunakan pautan Bluetooth.

Apa ia lakukan

Dua program Arduino (lakaran dalam Arduino speak) perlu dikembangkan, satu program Master untuk menyambung ke komputer host yang menjalankan Arduino Serial Monitor, satu untuk bertindak sebagai Slave untuk menerima pesanan bersiri dari Master, menyahkodnya dan menghantarnya kembali. Budak itu secara opsional mampu menampilkan nombor yang berkaitan dengan Monitor Serial IDE kedua - sekiranya anda mahu menggunakannya. Ini dapat membantu menyelesaikan sesuatu di tempat pertama, dan membantu anda jika anda memutuskan untuk membuat perubahan pada program agar sesuai dengan kehendak anda sendiri.

Peralatan

  • 2 Arduino
  • 2 petunjuk USB
  • wayar tambalan (mengikut keperluan)
  • 1 PC / komputer riba yang dilengkapi dengan Arduino IDE (tersedia sebagai muat turun percuma dari laman web Arduino.cc)

Langkah 1: Menyiapkan - Tetapkan Perkakasan Anda Pertama

Menyiapkan - Tetapkan Perkakasan Anda Lebih Dahulu
Menyiapkan - Tetapkan Perkakasan Anda Lebih Dahulu
Menyiapkan - Tetapkan Perkakasan Anda Lebih Dahulu
Menyiapkan - Tetapkan Perkakasan Anda Lebih Dahulu

Pasang 2 Arduino ke 2 port USB di komputer anda.

Petua, adalah idea yang baik untuk melabelkannya sebagai M dan S (tuan dan hamba) supaya anda tidak masuk campur kemudian (seperti yang ditunjukkan dalam 2 foto di sini.)

Langkah 2: Menyiapkan - Tetapkan Skrin Anda

Menyiapkan - Tetapkan Skrin Anda
Menyiapkan - Tetapkan Skrin Anda

Perkara terbaik adalah menyediakan skrin anda supaya anda dapat

  • IDE yang dimuatkan dengan program Master di sebelah kiri dan
  • bahawa dengan Budak di sebelah kanan.

Tetap Monitor Serial untuk Maser dan Slave di kiri dan kanan juga seperti yang ditunjukkan dalam tangkapan skrin di sini.

Langkah 3: Siapkan Master End, Kemudian Sambung Bersama - Bahagian 1

Siapkan Master End, Kemudian Sambung Bersama - Bahagian 1
Siapkan Master End, Kemudian Sambung Bersama - Bahagian 1

Semasa anda menyiapkan Master End Serial Monitor anda untuk menghantar dua nombor, anda mesti selalu menggunakan permulaan, dan akhir, watak pembatas, dan watak pemisah koma seperti yang anda lihat di sini.

Anda sekarang perlu menyambungkan 2 Arduino bersama melalui siri. Ini dilakukan dengan dua wayar tambalan.

Saya menggunakan hijau dan kuning

  • Ambil kuning terlebih dahulu, ini mesti dimasukkan ke D6 dalam satu Arduino dan D7 di yang kedua
  • Kemudian sebaliknya untuk wayar hijau, D7 pada yang pertama dan D6 pada Arduino kedua.

Sebagai alternatif, jika anda mempunyai sesuatu yang tersedia seperti sepasang modul Bluetooth - seperti HC-05's - ini juga akan berfungsi untuk memberi anda kesan yang sama seperti kabel di atas.

Langkah 4: Siapkan Master End, Kemudian Sambung Bersama - Bahagian 2

Siapkan Master End, Kemudian Sambung Bersama - Bahagian 2
Siapkan Master End, Kemudian Sambung Bersama - Bahagian 2
Siapkan Master End, Kemudian Sambung Bersama - Bahagian 2
Siapkan Master End, Kemudian Sambung Bersama - Bahagian 2

Kami menggunakan perpustakaan Serial Perisian. Maklumat lebih lanjut boleh didapati dengan pautan ini

Anda dapat melihatnya dipanggil pada baris 7 dari salah satu program. Ia mengkonfigurasi pin digital 7 dan 6 sebagai TX dan RX (menghantar dan menerima). Ini adalah bagaimana data akan bergerak keluar dari Master Arduino melalui wayar hijau ke Slave, dan, ketika program Slave di Arduino kedua selesai bekerja, kembali melalui wayar kuning. Di bahagian bawah ilustrasi yang sama (di tetingkap Serial Monitor) anda dapat melihat data yang kami hantar kini telah berjaya melingkari lingkaran yang dijelaskan di sini, dan kembali ke PC sebagai pasangan bilangan bulat yang terpisah dengan baik.

Langkah 5: Gambaran keseluruhan Lakaran / Program - Struktur Program

Gambaran Keseluruhan Lakaran / Program - Struktur Program
Gambaran Keseluruhan Lakaran / Program - Struktur Program
Gambaran Keseluruhan Lakaran / Program - Struktur Program
Gambaran Keseluruhan Lakaran / Program - Struktur Program

Susun atur Seperti dalam semua lakaran Arduino terdapat 3 bahagian asas:

  • Deklarasi
  • Persediaan
  • Gelung utama

Seperti yang sering berlaku, kami telah menggunakan bahagian ke-4 yang merupakan penambahan 'Fungsi'. Sekiranya anda tidak biasa menggunakan Fungsi, anda boleh menggunakan Google untuk "fungsi Arduino" dan anda akan menemui laman penjelasan seperti contoh dalam pautan ini: www.tutorialspoint.com/arduino/arduino_functions…..

Kami juga telah menggunakan tab untuk memisahkan program menjadi blok yang lebih terkawal.

Tiga blok yang telah kami gunakan dapat dilihat di bahagian atas setiap ilustrasi tetingkap IDE di atas:

  • sederhanaRxTx0330Master
  • biasa
  • nota

Ini sebenarnya fail yang terpisah dalam folder program, seperti yang anda lihat dalam paparan Windows Explorer mengenai fail program Slave ini.

Terdapat sebab yang sangat baik mengapa kita melakukan ini.

  • Semasa kami membina program, kami menyedari bahawa sebahagian besar program untuk Master adalah sama seperti untuk Slave.
  • Kami akhirnya menarik semua bahagian biasa ke dalam tab, yang oleh itu kami namakan "biasa", dan kemudian setiap kali kami menyahpepijat bahagian (mengujinya, dan berpuas hati ia berfungsi dengan baik) kami hanya menyalin dan menempelkan keseluruhan tab dari Master ke Slave, atau sebaliknya.
  • Tab nota juga serupa, kerana reka bentuknya bersifat generik.

Tidak ada fungsi yang dipanggil dari setup, semuanya dipanggil dari loop, jadi kami telah membuatnya setelah setup tetapi sebelum loop.

Langkah 6: Reka Bentuk Atas

Adalah idea yang baik untuk merancang lakaran anda bermula dengan definisi mengenai perkara yang ingin anda lakukan.

Setelah memilikinya, anda boleh mula membuat lakaran melakukan perkara-perkara tersebut. Umumnya jika ada perincian yang belum anda ketahui, cukup buat fungsinya, dan biarkan penciptaan fungsi itu sampai kemudian.

Ini mengikuti falsafah reka bentuk yang baik, yang diajarkan di banyak Universiti, yang disebut CDIO (Sekiranya anda belum mengetahui yang ini, anda boleh menggunakan Google dan mencari laman web untuk menerangkannya seperti: https://www.cdio.org/s.) Ini pada dasarnya mengatakan: Jangan mulakan Reka bentuk sebelum Konsep anda jelas. Jangan mulakan Pelaksanaan sehingga Reka bentuknya jelas. Jangan mengharapkannya Beroperasi sebelum penerapannya jelas. C terlebih dahulu, kemudian D, I, dan O. Pada setiap peringkat berikutnya, anda mengulangi (kembali memutar gelung), jadi setelah anda berpuas hati dengan gelung Reka bentuk awal anda dan periksa bahawa ia masih memenuhi Konsep, dan kemas kini C jika anda perlu. Dan seterusnya, jadi walaupun anda sudah Mendapatkan Operasi, teruskan kembali ke puncak, dan sekali lagi lihat bagaimana C kelihatan sekarang, kemudian D dan I, dan buat dan periksa semua berubah mengikut keperluan. Dengan lakaran pengaturcaraan, ini berfungsi sama jika anda merancang Top-Down.

Langkah 7: Konsep dan Reka Bentuk - Bahagian 1

Konsep dan Reka Bentuk - Bahagian 1
Konsep dan Reka Bentuk - Bahagian 1
Konsep dan Reka Bentuk - Bahagian 1
Konsep dan Reka Bentuk - Bahagian 1

Konsep di sini kelihatan seperti keperluan garis besar yang dinyatakan dalam tab 'nota'. '

Reka bentuknya dapat dilihat seperti versi awal gelung, yang sesuai dengan tab nota dan dapat kelihatan seperti yang anda lihat dalam gambar ini

Lihat bagaimana saya ingin memulakan dengan benar-benar CTRL-C menyalin komen ke kepala gelung terlebih dahulu, dan kemudian mula mengisi tempat kosong dengan arahan yang akan melakukan perkara-perkara tersebut.

Ini sebenarnya menyusun OK seperti yang anda lihat di bahagian bawah skrin dalam gambar. Itu mencapai tahap CDIO D hingga I, dan ketika kami mengembangkan kodnya, adalah idea yang baik untuk terus berputar di gelung D-I ini.

Sekarang tiba masanya untuk turun ke tahap berikutnya, ada komen di sana yang mengatakan kita akan: // menerima sesuatu dari USB perkakasan, kemudian kita akan mengirimkannya ke saluran bersiri perisian. Kami menulis kod ini untuk mewujudkannya - baris 133 hingga 138 ditunjukkan di sini dalam penyorot kuning

Langkah 8: Konsep dan Reka Bentuk - Bahagian 2

Konsep dan Reka Bentuk - Bahagian 2
Konsep dan Reka Bentuk - Bahagian 2
Konsep dan Reka Bentuk - Bahagian 2
Konsep dan Reka Bentuk - Bahagian 2

Dua dua fungsi pertama yang kami perkenalkan di sini adalah (recv () dan tran () untuk melakukan penerimaan dari port perkakasan dan penghantaran ke port perisian - oleh itu memanggilnya dengan parameter 'hw' atau 'sw' yang ditunjukkan.

Sebagai tambahan kepada mereka, kami telah menambahkan ujian pada pemboleh ubah global yang disebut newData. Ini adalah bendera yang akan kita tetapkan di dalam fungsi "void recv ();". Apabila mesej telah diterima pemboleh ubah ini ditandai dari false ke true. Kami melakukan ini supaya kami hanya menghantar mesej jika ada yang diterima (bendera == benar) pada baris 134. Dan setelah kami menghantar mesej kami bahawa 'kerja selesai' jadi kami mengembalikan bendera itu kembali ke palsu lagi di baris 137.

Sekali lagi kita dapat memeriksa kompilasi (D ke I), dan kali ini kita mempunyai mesej ralat 'tidak dinyatakan' (ditunjukkan). Ini memberitahu bahawa kita belum menyatakan recv (); fungsi. Kami merancang untuk melakukan ini kemudian, jadi untuk sementara waktu untuk membolehkan kami mendapatkan kompilasi yang bersih, kami perlu membuat fungsi dummy atau placeholder, seperti yang ditunjukkan seterusnya.

Sekali lagi kita dapat memeriksa kompilasi (D hingga I), dan kali ini kita mempunyai satu lagi mesej ralat 'tidak dinyatakan' untuk tran (); fungsi. Ini memerlukan penciptaan rintisan yang serupa. Sekali lagi kita dapat memeriksa kompilasi (D hingga I), dan kali ini kita akan dapati ini berfungsi dengan sempurna; setakat ini bagus.

Langkah 9: Selesaikan Gelung Utama: A) Menerima Dari USB, B) Menerima Dari Slave Arduino

Selesaikan Gelung Utama: A) Menerima Dari USB, B) Menerima Dari Slave Arduino
Selesaikan Gelung Utama: A) Menerima Dari USB, B) Menerima Dari Slave Arduino
Selesaikan Gelung Utama: A) Menerima Dari USB, B) Menerima Dari Slave Arduino
Selesaikan Gelung Utama: A) Menerima Dari USB, B) Menerima Dari Slave Arduino

Terdapat satu bahagian terakhir yang telah kami tambahkan untuk menyelesaikan bahagian ini iaitu dengan menambahkan beberapa kod debug.

Ada satu lagi instruksional mengenai debugging sketsa yang boleh dirujuk untuk memahami apa yang telah kita lakukan di sini dan mengapa. Rujuk Instruktif "Cara membina dan menguji lakaran Arduino sehingga berjaya"

Oleh itu, garis debug ini [136-139 ditunjukkan] akan ditambahkan seterusnya dalam gelung utama dan, lihat-lihat, anda boleh mengujinya di akhir Master dengan menjadikan pemboleh ubah debug benar, dan Menyusun (I), maka jika anda menyambungkan Arduino ke atas yang anda boleh Muat Naik, buka Monitor Serial dan lihat apakah yang masuk kembali ke dalam Serial Monitor seperti yang ditunjukkan di sini (adakah anda melihat mesej "DEBUG MODE" ditambahkan?)

Langkah 10: Menerima dan Mengendalikan Data di Slave Arduino

Menerima dan Mengendalikan Data di Slave Arduino
Menerima dan Mengendalikan Data di Slave Arduino
Menerima dan Mengendalikan Data di Slave Arduino
Menerima dan Mengendalikan Data di Slave Arduino

Menerima dari Slave Arduino

Tambahkan kod yang diperlukan untuk saluran kedua ke gelung utama, penerima bersiri perisian seperti yang ditunjukkan - baris 149 hingga 155.

Bolehkah anda melihat bahawa strukturnya longgar berdasarkan apa yang kami tulis di atas untuk kes Master?

Anda juga akan melihat bahawa kita mendapat ralat penyusun, fungsi lain yang tidak diisytiharkan - kali ini parseData (); - jadi kita perlu membuat rintisan untuk ini juga, sebelum kita dapat menjalankan kompilasi ujian tanpa ralat.

Mengendalikan data di Slave Arduino

Tambahkan kod gelung utama yang diperlukan untuk Arduino jika dikonfigurasikan sebagai peranti Slave seperti yang ditunjukkan - baris 163 hingga 174. Bolehkah anda melihat bahawa strukturnya sangat serupa dengan saluran pertama?

Dan anda mesti dapati masa ini menyusunnya dengan baik.

Langkah 11: Tulis Fungsi Terima

Tuliskan Fungsi Terima
Tuliskan Fungsi Terima

Fungsi Terima - void recv (char from) {} - mempunyai dua pekerjaan utama.

1 untuk menerima rentetan watak dari saluran USB, dan

2 untuk menerima satu dari saluran Arduino ke Arduino.

Untuk yang pertama, kita perlu menggunakan kerana menggunakan UART perkakasan binaan Arduino, dan yang kedua menggunakan Perpustakaan Arduino standard: perisian UART.

Apabila kita mula menambahkan kod ke fungsi - untuk membuat fungsi yang melakukan sesuatu, dan bukan hanya rintisan - kita perlu ingat untuk menghapus atau mengulas rintisan yang digantinya. Jika tidak, kita mendapat ralat kompilasi: penentuan semula 'void lrec (char)'.

Cuba dan selesaikan ralat tersebut, kemudian cuba salah satu cara yang dicadangkan di atas untuk menyingkirkannya.

Mulakan dengan fungsi yang kelihatan seperti yang kami tunjukkan di sini dari garis 75 hingga 88 dengan warna kuning.

Sekarang anda tahu bahawa mempunyai kod, anda perlu mencuba operasi Kompilasi. Ini memberi anda ralat, seperti yang kita miliki sebelumnya, dari jenis: nama fungsi yang tidak dinyatakan dalam skop ini. Kami pada mulanya memerlukan rintisan lain untuk membiarkan kami menyusun masa lalu ralat ini, jadi tambahkan satu seperti sebelumnya, dan pastikan anda sekarang dapat memperoleh kompilasi tanpa kesalahan.

Sekarang mari kita lihat kod yang telah kita tulis untuk fungsi recv ().

Cukup bersih, anda dapat melihat penggunaan keadaan 'if' untuk menghasilkan dua bahagian fungsi yang disebut di atas.

Kod di dalam bahagian 'sw' dan bahagian 'hw' adalah bentuk yang sama, dan saya akan menerangkannya di sini.

Pasangan baris pertama dalam setiap kes adalah permulaan gelung sementara. Sekiranya anda tidak biasa dengan masa, anda boleh mencarinya di laman Arduino.cc/Rujukan untuk penjelasan dan contohnya. Di sini kita menunggu 'sementara' fungsi 'Serial' yang terbina dalam belum menerima watak apa pun dan kerana pemboleh ubah DataData telah dimatikan (iaitu keadaan falseData == false adalah benar). Sebaik sahaja watak - atau lebih daripada satu watak - diterima sementara akan 'jatuh melalui' ke baris kedua dalam pasangan ini. Itu kemudian akan memanggil recAstringChar (char); berfungsi untuk menangani watak semasa. Sepasang garis ini kemudian akan bergantian sementara (atau selama) ada watak yang masih perlu diterima. Setelah semuanya selesai sementara keadaan berakhir, membiarkan jika atau seterusnya peringkat seterusnya hingga akhir, dan seterusnya membenarkan rec (char); berfungsi hingga akhir. Oleh itu, mesej penuh kini diterima.

Langkah 12: Tulis Sub-fungsi Terima - Bahagian 1

Tuliskan Sub-fungsi Terima - Bahagian 1
Tuliskan Sub-fungsi Terima - Bahagian 1
Tuliskan Sub-fungsi Terima - Bahagian 1
Tuliskan Sub-fungsi Terima - Bahagian 1

Kita sekarang perlu menulis fungsi yang disebut recAstringChar (char);. Anda dapat melihat dari komen hingga baris 50 di sini, bahawa tugasnya adalah mengemas kini dua penyangga dengan salinan mesej bersiri yang masuk. [Ternyata ketika saya berusaha agar semua ini berfungsi, satu perkara yang saya pelajari adalah bahawa saya memerlukan dua penyangga yang berbeza - atau sekurang-kurangnya itulah cara termudah untuk mengatasi beberapa masalah, oleh itu ia berkembang menjadi memerlukan 2 penyangga, jadi Saya baru sahaja membuatnya.] Saya telah memanggil satu penyangga: diterimaData, dan yang lain: diterimaChars.

Penyangga adalah pemboleh ubah global, jadi mereka dinyatakan pada peringkat modul, lihat baris 9 dan 10 dari tab biasa. Terdapat pemboleh ubah lain yang dinyatakan dalam fungsi ini yang oleh itu mempunyai skop tempatan - ditunjukkan pada baris 51-54 di sini. Ini bukan tempat untuk menjelaskan perbezaan antara global dan penduduk tempatan, tetapi terdapat lebih banyak maklumat mengenai perkara ini di https://www.arduino.cc/glossary/en/ di bawah Local and Global.

Anda juga dapat mengetahui semua tentang jenis data dan pengubah jenis: statik, boolean, byte, const, char di https://www.arduino.cc/reference/en/#variables, ditunjukkan di sini.

Aliran program utama dalam fungsi ini dikendalikan oleh jika pada baris 56 di sini, dan yang lain di baris 74. Ini berkaitan dengan dua senario

a) [dari baris 74 seterusnya] semasa mesej yang diterima bermula. Ini berlaku apabila startMarker dilihat - ini telah didefinisikan sebagai watak '<', itulah sebabnya setiap kali kita menguji lakaran, kita selalu memulakan rentetan kita dengan watak itu. Sekiranya kita tidak melakukannya maka tidak ada yang akan diproses sebagai diterima, semuanya akan diabaikan sama seperti kita mengetik omong kosong pada arahan papan kekunci 'Serial Monitor'.

b) [baris 56 hingga 73] yang menerima semua watak lain, apa sahaja, tetapi mereka hanya menangani watak setelah permulaan yang sah berlaku ('>' telah diterima seperti di a) di atas.)

Dalam baris ini (dari 74 hingga 78) kita memasukkan yang diterima <ke dalam salah satu penyangga (diterimaData [0]) tetapi tidak di yang lain. Kami menyesuaikan penunjuk penyangga (pemboleh ubah: char ndx) untuk menunjuk ke kedudukan penyangga ganti seterusnya (diterimaData [1]) menggunakan perintah pasca kenaikan (++) pada baris ndx ++;, dan kami menetapkan bendera dalam proses menjadi benar.

Aliran program di bahagian fungsi ini dikendalikan oleh jika pada baris 57 di sini, dan yang lain di baris 65. Ini berkaitan dengan dua senario

a) [dari baris 65 seterusnya] apabila mesej yang diterima berakhir. Ini berlaku apabila endMarker dilihat - didefinisikan sebagai>, itulah sebabnya setiap kali kita menguji lakaran kita, kita selalu mengakhiri rentetan kita dengan watak itu. Salah satu hal yang berlaku ketika watak akhir diterima adalah bendera global (secara teknikal berubah) Data baru disetel benar seperti fungsi berakhir, sehingga fungsi yang memanggil sub-fungsi kita (fungsi memanggil: recv (char);) dapat 'mengetahui' bahawa data baru yang sah telah diterima dengan lengkap.

b) [baris 57 hingga 64] yang menerima semua watak lain, apa sahaja. Dengan sibuk meletakkan mereka dengan rapi di barisan kedua penyangga.

Langkah 13: Tulis Sub-fungsi Terima - Bahagian 2

Tulis Sub-fungsi Terima - Bahagian 2
Tulis Sub-fungsi Terima - Bahagian 2
Tuliskan Sub-fungsi Terima - Bahagian 2
Tuliskan Sub-fungsi Terima - Bahagian 2

Mungkin bermanfaat untuk memberikan contoh seperti apa 2 penyangga ketika mereka diisi. Sekiranya kita memasukkan enter, penyangga akan mempunyai watak yang ditunjukkan di dalamnya:

Jadi sekarang anda dapat melihat kita mempunyai satu penyangga yang sama persis dengan semua watak yang sama seperti yang pertama kali kita taipkan, dan satu penyangga yang hanya mempunyai dua nilai dan koma pemisah. Sekarang kita mempunyai beberapa kod yang dapat menerima watak yang kita taip di papan kekunci Serial Monitor, kita dapat beralih dari CDIO fasa I ke O, menaip beberapa rentetan dan melihat apa yang berlaku. Muat naik kod ke Master Arduino, buka Monitor Serial dan cuba ketik sesuatu yang sahih, seperti enter. Adakah anda menerima gema pada skrin Monitor Serial seperti yang ditunjukkan di sini?

Langkah 14: Tulis Fungsi Penghantaran dan Parse

Tuliskan Fungsi Penghantaran dan Parse
Tuliskan Fungsi Penghantaran dan Parse
Tuliskan Fungsi Penghantaran dan Parse
Tuliskan Fungsi Penghantaran dan Parse

Pertama untuk Penghantaran

Jadi sekarang kami telah menerima rentetan, kami dapat menulis fungsi transmit: tran (char); untuk menggantikan rintisannya. Ini akan membolehkan kita menghantar tali dari Master ke Slave Arduino, jadi pastikan kedua-dua peranti dipasang dan disambungkan bersama untuk menguji fungsi baru ini.

Masukkan fungsi ini seperti yang ditunjukkan di sini pada baris 117 hingga 133. Seperti yang akan anda ketahui, ia mempunyai dua bahagian, satu untuk menghantar ke saluran USB (perkakasan UART) dan satu untuk menghantar ke Arduino yang lain (perisian UART.) Ini harus mengumpulkan ralat -free, dan anda boleh memuat naik lakaran dengan segera dan melihat apa yang berlaku. Kali ini saya akan hantar. Adakah anda mendapat hasil yang ditunjukkan?

Tangkapan layar menarik kerana rentetan yang Diterima … harus kelihatan benar seperti sebelumnya, dan rentetan yang Dikirim … sekarang harus kelihatan benar. Walau bagaimanapun, perhatikan bahawa penukaran Integer tidak berjaya. Masih ada lebih banyak kod untuk ditambahkan untuk menjadikannya berfungsi.

Langkah 15: Tulis Fungsi Penghantaran dan Parse

Tuliskan Fungsi Penghantaran dan Parse
Tuliskan Fungsi Penghantaran dan Parse
Tuliskan Fungsi Penghantaran dan Parse
Tuliskan Fungsi Penghantaran dan Parse

Kemudian untuk Parse

Ini adalah sekeping kod yang menguraikan rentetan yang diterima untuk mengambil rentetan separa berangka dan mengubahnya menjadi nilai integer. Ia adalah parseData yang kosong (); fungsi gelung utama

Ganti stub parse dengan kod yang ditunjukkan pada baris 98 - 113. Muat naik, dan mari kita lihat apakah masalah yang kita hadapi dengan nilai 2 bilangan bulat kini telah diperbaiki. Mari kita cuba.

Ya, ia berfungsi, seperti yang ditunjukkan, bilangan bulat yang dijumpai adalah 49 dan 98.

Langkah 16: Selesai

Selesai!
Selesai!

Data ini telah berputar tepat dari PC melalui Master melalui hamba dan kembali melalui Master sekali lagi ke PC lagi. Dengan versi selesai yang biasa dimuat naik ke kedua Master dan slave, dan dengan mod debug dimatikan sekarang, kita dapat melihat data yang diterima dengan betul di kedua-dua hujung seperti yang ditunjukkan di sini.

Disyorkan: