Freescale Semiconductor
ចំណាំកម្មវិធី
លេខឯកសារ៖ AN4496
ថ្ងៃទី ០៣ ខែ ០៣ ឆ្នាំ ២០១២
Pulse Oximeter ដោយប្រើ USB PHDC
ដោយ៖ Jose Santiago Lopez Ramirez RTAC Américas
សេចក្តីផ្តើម
កំណត់ចំណាំកម្មវិធីនេះពន្យល់ពីការអនុវត្តឧបករណ៍វាស់ជីពចរដែលទាក់ទងជាមួយកុំព្យូទ័រដោយប្រើថ្នាក់ឧបករណ៍ថែទាំសុខភាពផ្ទាល់ខ្លួន USB ។ ការអនុវត្តត្រូវបានធ្វើឡើងនៅលើ Freescale MK53N512 microcontroller Kinetis ប៉ុន្តែអាចអនុវត្តបាននៅលើ Freescale USB ដែលមានសមត្ថភាព microcontroller ។
កំណត់ចំណាំកម្មវិធីនេះត្រូវបានបម្រុងទុកសម្រាប់អ្នកអភិវឌ្ឍន៍ដំណោះស្រាយវេជ្ជសាស្រ្ត វិស្វករជីវវេជ្ជសាស្ត្រ ឬអ្នកដែលចាប់អារម្មណ៍លើថ្នាក់ឧបករណ៍ថែទាំសុខភាពផ្ទាល់ខ្លួនរបស់ USB ។ ទោះជាយ៉ាងណាក៏ដោយ ជំនាញមួយចំនួនក្នុងការសរសេរកម្មវិធី C និងការគ្រប់គ្រង microcontrollers ត្រូវបានទាមទារ។
កំណត់ចំណាំកម្មវិធីនេះគឺទាក់ទងយ៉ាងជិតស្និទ្ធជាមួយនឹងកំណត់ចំណាំកម្មវិធី “AN4327 Pulse Oximeter Fundamentals and Design”។ វាត្រូវបានណែនាំឱ្យអាន AN4327 សម្រាប់ការយល់ដឹងកាន់តែប្រសើរឡើង។
ឧបករណ៍ថែទាំសុខភាពផ្ទាល់ខ្លួនត្រូវបានបញ្ចប់view
Universal Serial Bus (USB) គឺជាស្តង់ដារដែលកំណត់ផ្នែករឹង និងពិធីការសម្រាប់ការទំនាក់ទំនងអន្តរកម្មរវាងម៉ាស៊ីន (ជាធម្មតាកុំព្យូទ័រ) និងឧបករណ៍មួយ ឬច្រើន។ ឧបករណ៍ USB នីមួយៗមានគោលបំណងរៀងៗខ្លួន ហេតុដូច្នេះហើយ ពួកវាត្រូវបានបែងចែកជាថ្នាក់ផ្សេងៗគ្នាទៅតាមមុខងាររបស់វា។ អតីតមួយ។ample គឺជាថ្នាក់ឧបករណ៍ចំណុចប្រទាក់មនុស្ស (HID) ដែលត្រូវបានប្រើនៅក្នុងឧបករណ៍ដូចជាក្តារចុចកុំព្យូទ័រ និងកណ្តុរ។
ការអនុវត្ត Pulse Oximeter
Personal Healthcare Device Class (PHDC) កំណត់តម្រូវការក្នុងការបង្កើតទំនាក់ទំនង និងអន្តរប្រតិបត្តិការដោយគ្មានថ្នេររវាងឧបករណ៍វេជ្ជសាស្ត្រ USB ផ្ទាល់ខ្លួន និងម៉ាស៊ីន USB ដែលត្រូវដំណើរការ រក្សាទុក ឬបញ្ជូនទៅកាន់វេជ្ជបណ្ឌិត ឬសាច់ញាតិតាមរយៈអ៊ីនធឺណិត។
USB PHDC ត្រូវបានប្រើដោយពិធីការផ្លាស់ប្តូរការថែទាំសុខភាពដូចជា ISO/IEEE 11073-20601 ជាមធ្យោបាយដឹកជញ្ជូនសម្រាប់កញ្ចប់ព័ត៌មានទំនាក់ទំនងរវាងម៉ាស៊ីន និងឧបករណ៍ថែទាំសុខភាពផ្ទាល់ខ្លួន។ វាកំណត់ស្តង់ដារវិធីដែលទិន្នន័យ និងសារត្រូវបានផ្ញើតាម USB ។
ការអនុវត្ត Pulse Oximeter
Pulse Oximeter ត្រូវបានអនុវត្តដោយប្រើ Freescale TWR-K53N512 ដែលជាក្រុមប្រឹក្សាអភិវឌ្ឍន៍ប៉មរួមទាំង microcontroller តម្រង់ទិសវេជ្ជសាស្រ្ត MK53N512, MED-SPO2 បន្ទះខាងមុខអាណាឡូកសម្រាប់ការអភិវឌ្ឍន៍ដំណោះស្រាយជីពចរ និង TWR-SER បន្ទះប្រព័ន្ធប៉មសម្រាប់ការរចនារួមទាំងទំនាក់ទំនងសៀរៀល។ នេះគឺជាផ្នែករឹងដូចគ្នាដែលប្រើក្នុង AN4327 "Pulse Oximeter Fundamentals and Design"។ សូមយោងទៅលើកំណត់សម្គាល់កម្មវិធីនេះសម្រាប់ព័ត៌មានបន្ថែមអំពីគោលការណ៍នៃជីពចរ និងផ្នែករឹងដែលប្រើក្នុងការអភិវឌ្ឍន៍ជីពចរ។
ប្រព័ន្ធគឺផ្អែកលើ Freescale USB stack ជាមួយ PHDC ដែលជាកូដឥតគិតថ្លៃសម្រាប់បង្កើតដំណោះស្រាយដែលត្រូវការការភ្ជាប់ USB ហើយអាចទាញយកពី Freescale web ទំព័រ។ ជង់នេះមានមុខងារដែលអាចប្រើបាននៅកម្រិតឧបករណ៍ (កំណត់នាឡិកា ចាប់ផ្តើមម៉ូឌុល USB ។ល។) និងកម្រិតថ្នាក់ (ផ្ញើ-ទទួលកញ្ចប់ព័ត៌មាន ផ្ញើអ្នកពណ៌នា។
សូមយោងទៅលើ Freescale USB Stack with PHDC Stack Users Guide និង Freescale USB Stack with PHDC Device Reference Manual សម្រាប់ការយល់ដឹងកាន់តែច្បាស់។
កម្មវិធីត្រូវបានបែងចែកជាមូលដ្ឋានជាបីផ្នែកធំៗ៖ System Initialization, Application Initialization និង Application Execution។
កម្មវិធីចុងក្រោយត្រូវបានប្រតិបត្តិក្នុងរង្វិលជុំគ្មានកំណត់ដូចដែលបានបង្ហាញក្នុងដ្យាក្រាមលំហូរខាងក្រោម (រូបភាពទី 1)។
រូបភាពទី 1. ដ្យាក្រាមលំហូរគំរូកម្មវិធី
សម្រាប់ការយល់ដឹងកាន់តែប្រសើរឡើងនៃជំពូកនេះ វាត្រូវបានផ្ដល់អនុសាសន៍យ៉ាងខ្លាំងឱ្យបើកគម្រោង MED-SPO2 PDHC C និង view វានៅពេលអ្នកអានបន្ទាត់ទាំងនេះ។
ការចាប់ផ្តើមប្រព័ន្ធ
ការចាប់ផ្ដើមប្រព័ន្ធត្រូវបានប្រតិបត្តិនៅពេលដែលមុខងារ Init_Sys ត្រូវបានហៅនៅដើមកម្មវិធី។ Init_Sys គឺជាមុខងារកម្រិតឧបករណ៍ ហើយប្រែប្រួលទៅតាម microcontroller ។ វាចាប់ផ្តើមគ្រឿងកុំព្យូទ័រដែលត្រូវការនៅលើ microcontroller សម្រាប់មុខងារជង់។ Init_Sys ដំបូងបើកការរំខាននៅលើម៉ូឌុល USB ដែលកំណត់រចនាសម្ព័ន្ធការចុះឈ្មោះ NVICICER2 និង NVICISER2 ។ បន្ទាប់មកវាបើកដំណើរការម៉ូឌុល GPIO ដែលត្រូវការដោយ microcontroller ដែលហៅមុខងារ GPIO_Init ។ ឥឡូវនេះ Init_Sys ហៅមុខងារ pll_init ដែលកំណត់រចនាសម្ព័ន្ធ microcontroller សម្រាប់ធ្វើការនៅ 50MHz ដោយប្រើប្រភពនាឡិកាខាងក្រៅ។ នៅពេលដែលនាឡិការបស់ microcontroller ត្រូវបានកំណត់រចនាសម្ព័ន្ធ ការចុះឈ្មោះ MPU_CESR ត្រូវបានសម្អាត ហើយ microcontroller ត្រូវបានកំណត់រចនាសម្ព័ន្ធដើម្បីផ្តល់ថាមពល និងនាំយកសញ្ញានាឡិកាទៅកាន់ម៉ូឌុល USB សម្រាប់ការរាប់បញ្ចូលនាពេលអនាគត។
ការចាប់ផ្តើមកម្មវិធី
ការចាប់ផ្តើមកម្មវិធីកំណត់រចនាសម្ព័ន្ធម៉ូឌុលដែលបានចាប់ផ្តើមពីមុនសម្រាប់ការប្រើប្រាស់កម្មវិធី pulse oximetry PHDC ។ ការកំណត់រចនាសម្ព័ន្ធនេះចាប់ផ្តើមនៅពេលដែលមុខងារ TestApp_Init ត្រូវបានហៅ។ TestApp_Init ដំបូងហៅមុខងារ PHD_Transport_Init ។ មុខងារនេះគ្រប់គ្រងការរាប់បញ្ចូលនៃម៉ូឌុល USB របស់ microcontroller ជា PHDC ដោយបើកដំណើរការ Pull-Up resistors និងគ្រប់គ្រងដំណើរការរាប់បញ្ចូល។ PHD_Transport_Init ត្រឡប់តម្លៃកំហុស។ ប្រសិនបើកំហុស "យល់ព្រម" ត្រូវបានប្រគល់មកវិញ វាមានន័យថាឧបករណ៍ត្រូវបានរាប់ជា PHD (ឧបករណ៍ថែទាំសុខភាពផ្ទាល់ខ្លួន) រួចហើយ បើមិនដូច្នេះទេមានអ្វីមួយខុសប្រក្រតីអំឡុងពេលរាប់បញ្ចូល ហើយឧបករណ៍អាចមិនត្រូវបានទទួលស្គាល់ដោយម៉ាស៊ីនកុំព្យូទ័រ។ នៅចំណុចនេះ ឧបករណ៍ត្រូវបានទទួលស្គាល់ដោយម៉ាស៊ីនថាជា PHD ប៉ុន្តែវាមិនទាន់ត្រូវបានកំណត់ថាជាឧបករណ៍វាស់ជីពចរដោយប្រើស្តង់ដារ ISO/IEEE 11073-20601 នៅឡើយទេ។
បន្ទាប់ពីការរាប់បញ្ចូល TWR-K53N512 LEDs និងប៊ូតុងរុញត្រូវបានកំណត់រចនាសម្ព័ន្ធសម្រាប់ការប្រើប្រាស់នាពេលអនាគត។ មុខងារ SwTimer_Init ត្រូវបានហៅសម្រាប់ការចាប់ផ្តើមកម្មវិធីកំណត់ម៉ោងកម្មវិធី។ ព័ត៌មានបន្ថែមអំពីកម្មវិធីកំណត់ម៉ោងអាចត្រូវបានរកឃើញនៅលើកំណត់ចំណាំកម្មវិធី “AN4327 Pulse Oximeter Fundamentals and Design”៖ ឧបសម្ព័ន្ធកម្មវិធីកំណត់ម៉ោង។
មុខងារចុងក្រោយគេហៅថា vfnSpO2_AFE_Init។ មុខងារនេះចាប់ផ្តើមគ្រឿងកុំព្យូទ័រដែលត្រូវការ (OpAmps, TRIAMPs, ADCs និងកម្មវិធីកំណត់ម៉ោង) តម្រូវដោយក្រុមប្រឹក្សាភិបាល MED-SPO2 ។
ការអនុវត្តកម្មវិធី
នៅពេលដែលគ្រឿងកុំព្យូទ័រត្រូវបានកំណត់រចនាសម្ព័ន្ធ ការតភ្ជាប់រវាងម៉ាស៊ីនកុំព្យូទ័រ និងឧបករណ៍ត្រូវបានបង្កើតឡើង។ ម៉ាស៊ីនកុំព្យូទ័រទទួលស្គាល់ឧបករណ៍នេះថាជា PHD ប៉ុន្តែវាមិនទាន់ដំណើរការពេញលេញនៅឡើយទេ។ ពិធីការទំនាក់ទំនងរវាងម៉ាស៊ីនកុំព្យូទ័រ និងឧបករណ៍គឺត្រូវបានទាមទារ ដើម្បីផ្លាស់ប្តូរព័ត៌មានក្នុងលក្ខណៈស្តង់ដារ និងអាចទុកចិត្តបាន។
មានពិធីការទំនាក់ទំនងជាច្រើន រួមទាំងពិធីការជាក់លាក់របស់អ្នកលក់មួយចំនួន។ ទោះជាយ៉ាងណាក៏ដោយ វិស្វកម្មភ្នាល់លើពិធីការស្តង់ដារដែលធានាឱ្យមានអន្តរប្រតិបត្តិការដូចគ្នារវាងឧបករណ៍វេជ្ជសាស្ត្រ។
Continua Health Alliance® គឺជាអង្គការដែលលើកកម្ពស់អន្តរប្រតិបត្តិការដែលប្រសើរឡើងក្នុងចំណោមឧបករណ៍វេជ្ជសាស្ត្រ។ ការអនុវត្តនៃការបង្ហាញនេះគឺផ្អែកលើស្តង់ដារContinua®សម្រាប់ការទំនាក់ទំនងទិន្នន័យសុខភាពរវាងម៉ាស៊ីនកុំព្យូទ័រ និងឧបករណ៍ដែលប្រើស្តង់ដារ ISO/IEEE 11073-20601 “ការទំនាក់ទំនងឧបករណ៍សុខភាពផ្ទាល់ខ្លួន៖ ពិធីការការផ្លាស់ប្តូរដែលប្រសើរឡើង” ជាមូលដ្ឋាន។
ការពន្យល់សង្ខេបនៃពិធីការទំនាក់ទំនង 11073-20601 ត្រូវបានបង្ហាញខាងក្រោម។ សម្រាប់ការពន្យល់ពេញលេញនៃពិធីការទំនាក់ទំនង សូមមើលស្តង់ដារ ISO/IEEE 11073-20601។
ដំណើរការទំនាក់ទំនង ISO/IEEE 11073-20601
ស្តង់ដារ 11073-20601 កំណត់ពិធីការទំនាក់ទំនងរវាងឧបករណ៍វេជ្ជសាស្ត្រ ឬ "ភ្នាក់ងារ" និងម៉ាស៊ីន ឬ "អ្នកគ្រប់គ្រង" ។
ភ្នាក់ងារអាចត្រូវបានកំណត់ជាសំណុំនៃវត្ថុដែលហៅថា MDS (ប្រព័ន្ធឧបករណ៍វេជ្ជសាស្ត្រ) ។ MDS នីមួយៗពិពណ៌នាអំពីអាកប្បកិរិយារបស់ភ្នាក់ងារ (ឧ. ឧបករណ៍វាស់ជីពចរ ឬឧបករណ៍វាស់សម្ពាធឈាម)។ ភ្នាក់ងារនីមួយៗអាចមានវត្ថុ MDS មួយ ឬច្រើនទាំងនេះ។
ក្នុងលក្ខណៈដូចគ្នា វត្ថុ MDS នីមួយៗមានវត្ថុរងដែលកំណត់ឥរិយាបទរបស់វា (ឧទាហរណ៍ការវាស់វែងដើម្បីរាយការណ៍)។ ព័ត៌មានទាំងអស់នេះត្រូវតែរាយការណ៍ទៅអ្នកគ្រប់គ្រង ដូច្នេះវាអាចគ្រប់គ្រងឥរិយាបថរបស់ភ្នាក់ងារបាន។ ទោះជាយ៉ាងណាក៏ដោយ មានតែវត្ថុ MDS មួយប៉ុណ្ណោះដែលត្រូវរាយការណ៍នៅពេលតែមួយ (ឧ. ភ្នាក់ងារមិនអាចជាឧបករណ៍វាស់ជីពចរ និងឧបករណ៍វាស់សម្ពាធឈាមក្នុងពេលតែមួយបានទេ)។
ដ្យាក្រាមខាងក្រោមតំណាងឱ្យភ្នាក់ងារដែលមានសមត្ថភាពជាឧបករណ៍វាស់ជីពចរ និងម៉ូនីទ័រសម្ពាធឈាម)។
រូបភាពទី 2. តំណាងភ្នាក់ងារ
ក្នុងករណីការបង្ហាញនេះ ភ្នាក់ងារមានវត្ថុ MDS តែមួយគត់ដែលត្រូវគ្នានឹងកម្មវិធីជីពចរ។ ព័ត៌មានបន្ថែមអំពីតំណាងភ្នាក់ងារអាចរកបាននៅលើឯកសារ ISO/IEEE 11073-20601:2010 នៅក្នុងជំពូកទី 6 ឧបករណ៍សុខភាពផ្ទាល់ខ្លួន DIM ។
ស្តង់ដារ IEEE កំណត់ម៉ាស៊ីនរដ្ឋសម្រាប់ភ្នាក់ងារ និងម៉ាស៊ីនរដ្ឋផ្សេងទៀតសម្រាប់អ្នកគ្រប់គ្រង។ ដោយសារកម្មវិធីសាកល្បងរបស់យើងគឺជាឧបករណ៍ យើងនឹងពន្យល់តែម៉ាស៊ីនរដ្ឋរបស់ភ្នាក់ងារប៉ុណ្ណោះ។ ដ្យាក្រាមខាងក្រោមគឺជាតំណាងសាមញ្ញនៃម៉ាស៊ីនរដ្ឋដែលបង្ហាញក្នុងជំពូកទី 8 រូបភាពទី 10 នៃស្តង់ដារ ISO/IEEE 11073-20601:2010 ។
រូបភាពទី 3. ម៉ាស៊ីនរដ្ឋរបស់ភ្នាក់ងារ
នៅពេលចាប់ផ្តើម ភ្នាក់ងារត្រូវបានផ្តាច់ចេញពីអ្នកគ្រប់គ្រង។ ភ្នាក់ងារត្រូវតែភ្ជាប់ជាមួយអ្នកគ្រប់គ្រង ដើម្បីបង្កើតទំនាក់ទំនង។ នៅពេលដែលការតភ្ជាប់ត្រូវបានបង្កើតឡើង (ក្នុងករណីរបស់យើងនៅពេលដែលឧបករណ៍ USB ត្រូវបានរាប់បញ្ចូលជាឧបករណ៍ PHDC) ភ្នាក់ងារឆ្លងទៅស្ថិតក្នុងស្ថានភាពតភ្ជាប់។
នៅពេលដែលបានភ្ជាប់ ភ្នាក់ងារគឺដំបូងនៅក្នុងស្ថានភាព "មិនពាក់ព័ន្ធ"។ ភ្នាក់ងារត្រូវផ្ញើ "សំណើសមាគម" ដើម្បីចាប់ផ្តើមទំនាក់ទំនង។ សំណើសមាគមត្រូវបានផ្ញើជា APDU (ឯកតាទិន្នន័យពិធីការកម្មវិធី) ដែលជាកញ្ចប់ទិន្នន័យដែលមានព័ត៌មានចាំបាច់ដើម្បីចាប់ផ្តើមការផ្សារភ្ជាប់ ហើយវាត្រូវតែឆ្លើយតបទៅនឹងវត្ថុ MDS ដើម្បីភ្ជាប់។ សំណើសមាគម APDU ត្រូវតែមើលទៅដូចខាងក្រោម។
// សំណើសមាគមដើម្បីផ្ញើ */
uint_8 USB_CONST PHD_OXI_ASSOC_REQ[ASSOC_REQ_SIZE] = {
0xE2, 0x00, /* ប្រភេទជម្រើស APDU (AarqApdu) */
0x00, 0x32, /* CHOICE.length = 50 */
0x80, 0x00, 0x00, 0x00, /* assoc-version */
0x00, 0x01, 0x00, 0x2A, /* data-proto-list.count=1 | ប្រវែង=42*/
0x50, 0x79, /* data-proto-id = 20601 */
0x00, 0x26, /* data-proto-info length = 38 */
0x80, 0x00, 0x00, 0x00, /* protocolVersion */
0x80, 0x00, /* ច្បាប់នៃការអ៊ិនកូដ = MDER ឬ PER */
0x80, 0x00, 0x00, 0x00, /* nomenclatureVersion */
0x00, 0x00, 0x00, 0x00, /* functionalUnits | គ្មានសមត្ថភាពសមាគមសាកល្បង */
0x00, 0x80, 0x00, 0x00, /* systemType = sys-type-agent */
0x00, 0x08, /* system-id length = 8 និងតម្លៃ , (ក្រុមហ៊ុនផលិត-និងឧបករណ៍-ជាក់លាក់) */
0x4C, 0x4E, 0x49, 0x41, 0x47, 0x45, 0x4E, 0x54, 0x40, 0x00, /* dev-config-id | ការកំណត់រចនាសម្ព័ន្ធបន្ថែម*/
0x00, 0x01, /* data-req-mode-flags
0x00, 0x01*/ 0x01, 0x00, /* data-req-init-agent-count, data-req-init-manager-count */
0x00, 0x00, 0x00, 0x00 /* បញ្ជីគុណលក្ខណៈ */ };
នៅពេលភ្នាក់ងារផ្ញើសំណើសមាគម វាទៅរដ្ឋ "សហការ" រង់ចាំការឆ្លើយតបពីអ្នកគ្រប់គ្រង។ អ្នកគ្រប់គ្រងនឹងដំណើរការសំណើសមាគម ហើយផ្ញើការឆ្លើយតបរបស់សមាគមដោយយោងតាម APDU ដែលទទួលបាន។ ប្រសិនបើ APDU ទាក់ទងទៅនឹង MDS ដែលស្គាល់រួចហើយនោះ អ្នកគ្រប់គ្រងនឹងផ្ញើការឆ្លើយតបសមាគម "ទទួលយក" ដែលបង្ហាញថាការកំណត់រចនាសម្ព័ន្ធត្រូវបានគេស្គាល់រួចហើយ ហើយបន្ទាប់មកភ្នាក់ងារត្រូវតែប្តូរទៅស្ថានភាពប្រតិបត្តិការ។ ប្រសិនបើសំណើសមាគមត្រូវបានទទួលយក ប៉ុន្តែអ្នកគ្រប់គ្រងមិនទទួលស្គាល់ MDS ទេ វានឹងផ្ញើការឆ្លើយតបរបស់សមាគម "accepted-unknown-config" ត្រឡប់ទៅភ្នាក់ងារសម្រាប់ការកំណត់រចនាសម្ព័ន្ធ MDS វិញ។ ប្រសិនបើសំណើសមាគមត្រូវបានបដិសេធ ភ្នាក់ងារត្រូវតែប្តូរទៅរដ្ឋដែលមិនមានទំនាក់ទំនង ហើយព្យាយាមម្តងទៀត។ ការឆ្លើយតបសមាគមរបស់អ្នកគ្រប់គ្រងមើលទៅដូចខាងក្រោម។
0xE3 0x00 APDU CHOICE Type (AareApdu) 0x00 0x2C CHOICE.length = 44
0x00 0x03 លទ្ធផល = ទទួលយក-មិនស្គាល់-កំណត់រចនាសម្ព័ន្ធ
0x50 0x79 data-proto-id = 20601
0x00 0x26 data-proto-info length = 38
ពិធីការ 0x80 0x00 0x00 0x00 កំណែ
ច្បាប់ការអ៊ិនកូដ 0x80 0x00 = MDER
0x80 0x00 0x00 0x00 nomenclatureVersion
0x00 0x00 0x00 0x00 ឯកតាមុខងារ
0x80 0x00 0x00 0x00 systemType = sys-type-manager
0x00 0x08 system-id length = 8 និងតម្លៃ
0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x00 0x00 ការឆ្លើយតបរបស់អ្នកគ្រប់គ្រងចំពោះ config-id គឺតែងតែ 0
0x00 0x00 0x00 0x00 ការឆ្លើយតបរបស់អ្នកគ្រប់គ្រងចំពោះ data-req-mode-capab គឺតែងតែ 0
0x00 0x00 0x00 0x00 optionList.count = 0 | optionList.length = 0
ទាំងប្រសិនបើភ្នាក់ងារទទួលបានការឆ្លើយតបពីសមាគមដែលទទួលយក ឬមិនស្គាល់ ភ្នាក់ងារត្រូវតែប្តូរទៅរដ្ឋ "ពាក់ព័ន្ធ"។ ក្នុងករណីនេះ អ្នកគ្រប់គ្រងបានទទួលយកសំណើសមាគម ប៉ុន្តែវាមិនទទួលស្គាល់ MDS ត្រឡប់ការឆ្លើយតបដែលទទួលយក-មិនស្គាល់-កំណត់រចនាសម្ព័ន្ធទេ។ ជាលទ្ធផល ភ្នាក់ងារត្រូវផ្ញើរបាយការណ៍កំណត់រចនាសម្ព័ន្ធដូចខាងក្រោម។
/* របាយការណ៍ព្រឹត្តិការណ៍កំណត់រចនាសម្ព័ន្ធ */
uint_8 USB_CONST PHD_OXI_CNFG_EVT_RPT[PHD_OXI_CNFG_EVT_RPT_SIZE] = {
0xE7, 0x00, /* ប្រភេទជម្រើស APDU (PrstApdu) */
0x00, 0x70, /* CHOICE.length = 112 */
0x00, 0x6E, /* OCTET STRING.length = 110 */
0x00, 0x02, /* invoke-id (ខុសពីសារដែលលេចធ្លោផ្សេងទៀត) */
0x01, 0x01, /* CHOICE(ការហៅប្រតិបត្តិការពីចម្ងាយ | របាយការណ៍ព្រឹត្តិការណ៍ដែលបានបញ្ជាក់) */
0x00, 0x68, /* CHOICE.length = 104 */
0x00, 0x00, /* obj-handle = 0 (វត្ថុ MDS) */ 0xFF, 0xFF, 0xFF, 0xFF, /* event-time = 0xFFFFFFFF */
0x0D, 0x1C, /* event-type = MDC_NOTI_CONFIG */
0x00, 0x5E, /* event-info.length = 94 (ការចាប់ផ្តើមនៃ ConfigReport) */
0x40, 0x00, /* config-report-id */
0x00, 0x02, /* config-obj-list.count = 2 វត្ថុវាស់វែងនឹងត្រូវបាន "ប្រកាស" */
0x00, 0x58, /* config-obj-list.length = 88 */
0x00, 0x06, /* obj-class = MDC_MOC_VMO_METRIC_NU */
0x00, 0x01, /* obj-handle = 1 (.. ការវាស់វែងទី 1 គឺ SpO2) */
0x00, 0x04, /* attributes.count = 4 */
0x00, 0x24, /* attributes.length = 36 */ 0x09, 0x2F, /* attribute-id = MDC_ATTR_ID_TYPE */
0x00, 0x04, /* attribute-value.length = 4 */
0x00, 0x02, 0x4B, 0xB8, /* MDC_PART_SCADA | MDC_PULS_OXIM_SAT_O2 */
0x0A, 0x46, /* attribute-id = MDC_ATTR_METRIC_SPEC_SMALL */
0x00, 0x02, /* attribute-value.length = 2 */
0x40, 0xC0, /* avail-stored-data, acc-manager-init, acc-agent-init, បានវាស់វែង */
0x09, 0x96, /* attribute-id = MDC_ATTR_UNIT_CODE */
0x00, 0x02, /* attribute-value.length = 2 */
0x02, 0x20, /* MDC_DIM_PERCENT */ 0x0A, 0x55, /* attribute-id = MDC_ATTR_ATTRIBUTE_VAL_MAP */
0x00, 0x0C, /* attribute-value.length = 12 */
0x00, 0x02, /* AttrValMap.count = 2 */
0x00, 0x08, /* AttrValMap.length = 8*/
0x0A, 0x4C, 0x00, 0x02, /* MDC_ATTR_NU_VAL_OBS_BASIC | ប្រវែងតម្លៃ = 2 */
0x09, 0x90, 0x00, 0x08, /* MDC_ATTR_TIME_STAMP_ABS | ប្រវែងតម្លៃ = 8 */
0x00, 0x06, /* obj-class = MDC_MOC_VMO_METRIC_NU */
0x00, 0x02, /* obj-handle = 2 (..2nd Measurement is pulse rate) */
0x00, 0x04, /* attributes.count = 4 */
0x00, 0x24, /* attributes.length = 36 */
0x09, 0x2F, /* attribute-id = MDC_ATTR_ID_TYPE */
0x00, 0x04, /* attribute-value.length = 4 */
0x00, 0x02, 0x48, 0x1A, /* MDC_PART_SCADA | MDC_PULS_OXIM_PULS_RATE */
0x0A, 0x46, /* attribute-id = MDC_ATTR_METRIC_SPEC_SMALL */ 0x00, 0x02, /* attribute-value.length = 2 */
0x40, 0xC0, /* avail-stored-data, acc-manager-init, acc-agent-init, បានវាស់វែង */ 0x09, 0x96, /* attribute-id = MDC_ATTR_UNIT_CODE */ 0x00, 0x02, /* attribute-value។ ប្រវែង = 2 */ 0x0A, 0xA0, /* MDC_DIM_BEAT_PER_MIN */ 0x0A, 0x55, /* attribute-id = MDC_ATTR_ATTRIBUTE_VAL_MAP */ 0x00, 0x0C, /* attribute-value.length/12x0. រាប់ = 00 */
0x00, 0x08, /* AttrValMap.length = 8 */
0x0A, 0x4C, 0x00, 0x02, /* MDC_ATTR_NU_VAL_OBS_BASIC, 2 */ 0x09, 0x90, 0x00, 0x08 /* MDC_ATTR_TIME_STAMP_ABS, 8 */ };
របាយការណ៍កំណត់រចនាសម្ព័ន្ធនេះត្រូវគ្នាទៅនឹងឧបករណ៍វាស់ជីពចរ។ នៅទីនេះភ្នាក់ងារបង្ហាញថាវានឹងផ្ញើវត្ថុលេខពីរ (វត្ថុដែលអាចមានទាំងអស់ត្រូវបានពិពណ៌នានៅក្នុងឯកសារ ISO/IEEE 11073-20601:2010 នៅក្នុងជំពូកទី 6៖ ឧបករណ៍សុខភាពផ្ទាល់ខ្លួន DIM)។ វត្ថុលេខទីមួយត្រូវគ្នាទៅនឹងការវាស់វែង តិត្ថិភាពអុកស៊ីសែន (SpO2) ។ វត្ថុលេខទីពីរត្រូវគ្នាទៅនឹងការវាស់វែងអត្រាជីពចរ។
នៅពេលដែលរបាយការណ៍កំណត់រចនាសម្ព័ន្ធត្រូវបានផ្ញើ អ្នកគ្រប់គ្រងត្រូវតែឆ្លើយតបដោយបង្ហាញថាថាតើការកំណត់រចនាសម្ព័ន្ធដែលបានរាយការណ៍អាចប្រើប្រាស់បានឬអត់។ ប្រសិនបើការកំណត់រចនាសម្ព័ន្ធដែលបានរាយការណ៍អាចត្រូវបានប្រើ ភ្នាក់ងារត្រូវតែប្តូរទៅស្ថានភាពប្រតិបត្តិការ។ ប្រសិនបើការកំណត់រចនាសម្ព័ន្ធដែលបានរាយការណ៍មិនត្រូវបានគាំទ្រដោយអ្នកគ្រប់គ្រង ភ្នាក់ងារត្រូវតែព្យាយាមម្តងទៀតដោយប្រើការកំណត់រចនាសម្ព័ន្ធផ្សេងដែលត្រូវបានគាំទ្រដោយអ្នកគ្រប់គ្រង។ ការឆ្លើយតបរបស់អ្នកគ្រប់គ្រងនឹងមើលទៅដូចខាងក្រោម។
0xE7 0x00 ប្រភេទជម្រើស APDU (PrstApdu)
0x00 0x16 CHOICE.length = 22
0x00 0x14 OCTET STRING.length = 20
0x43 0x21 invoke-id = 0x4321 (ការចាប់ផ្តើមនៃ DataApdu ។ MDER បានអ៊ិនកូដ។)
0x02 0x01 ជម្រើស (ការឆ្លើយតបប្រតិបត្តិការពីចម្ងាយ | របាយការណ៍ព្រឹត្តិការណ៍ដែលបានបញ្ជាក់)
0x00 0x0E CHOICE.length = ១៤
0x00 0x00 obj-handle = 0 (វត្ថុ MDS)
0x00 0x00 0x00 0x00 បច្ចុប្បន្នពេលវេលា = 0
0x0D 0x1Cevent-type = MDC_NOTI_CONFIG
0x00 0x04 event-reply-info.length = ៤
0x40 0x00 ConfigReportRsp.config-report-id = 0x4000 0x00 0x00 ConfigReportRsp.config-result = បានទទួលយក-កំណត់រចនាសម្ព័ន្ធ
ក្នុងករណីនេះ អ្នកគ្រប់គ្រងបានរាយការណ៍ថាការកំណត់រចនាសម្ព័ន្ធត្រូវបានទទួលយក ហើយភ្នាក់ងារត្រូវតែប្តូរទៅស្ថានភាពប្រតិបត្តិការ។
ដូចដែលបានរៀបរាប់ពីមុន ប្រសិនបើភ្នាក់ងារទទួលបានការឆ្លើយតបពីសមាគមដែលបានទទួលយក ឬទទួលយក-មិនស្គាល់-កំណត់រចនាសម្ព័ន្ធ ភ្នាក់ងារត្រូវតែប្តូរទៅរដ្ឋដែលពាក់ព័ន្ធ។ នៅពេលដែលស្ថិតនៅលើស្ថានភាពដែលពាក់ព័ន្ធ អ្នកគ្រប់គ្រងអាចប្រើប្រាស់សេវាកម្ម "Get" នៅពេលណាមួយដើម្បីស្នើសុំគុណលក្ខណៈ MDS ។ គុណលក្ខណៈ MDS មានព័ត៌មានអំពីវត្ថុ MDS ដូចជាប្រភេទឧបករណ៍ (សម្រាប់ឧample, ឧបករណ៍វាស់ជាតិស្ករ, ទែម៉ូម៉ែត្រ, ម៉ូនីទ័រសម្ពាធឈាម និងផ្សេងៗទៀត) ឈ្មោះក្រុមហ៊ុន និងម៉ូដែលឧបករណ៍ក្នុងចំណោមឧបករណ៍ផ្សេងទៀត។
សំណើសុំគុណលក្ខណៈ MDS ទាំងអស់មើលទៅដូចខាងក្រោម។
0xE7 0x00 ប្រភេទជម្រើស APDU (PrstApdu)
0x00 0x0E CHOICE.length = ១៤
0x00 0x0C OCTET STRING.length = 12
0x34 0x56 invoke-id = 0x3456 (ការចាប់ផ្តើមនៃ DataApdu ។ MDER បានអ៊ិនកូដ។)
0x01 0x03 ជម្រើស (ការហៅប្រតិបត្តិការពីចម្ងាយ | ទទួល) 0x00 0x06 CHOICE.length = 6
0x00 0x00 handle = 0 (វត្ថុ MDS)
0x00 0x00 attribute-id-list.count = 0 (គុណលក្ខណៈទាំងអស់)
0x00 0x00 attribute-id-list.length = 0
ប្រសិនបើការស្នើសុំគុណលក្ខណៈ MDS ទាំងអស់ត្រូវបានទទួល ភ្នាក់ងារត្រូវតែឆ្លើយតបជាមួយនឹងគុណលក្ខណៈរបស់វា។ តាមអតីតample បង្ហាញការឆ្លើយតបនៃពាក្យបញ្ជា Get attributes ដែលភ្នាក់ងារផ្ញើទៅអ្នកគ្រប់គ្រង។
/* ការឆ្លើយតបដើម្បីទទួលបានពាក្យបញ្ជាគុណលក្ខណៈ */
uint_8 USB_CONST PHD_OXI_DIM_GET_RSP[PHD_OXI_DIM_GET_RSP_SIZE] = {
0xE7, 0x00, /* APDU CHOICE Type (PrstApdu) */ 0x00, 0x6F, /* CHOICE.length = 111 */ 0x00, 0x6D, /* OCTET STRING.length = 109 */
0x00, 0x02, /* invoke-id = 0x0002 (ឆ្លុះបញ្ចាំងពីការស្នើសុំ)*/
0x02, 0x03, /* ជម្រើស (ការឆ្លើយតបប្រតិបត្តិការពីចម្ងាយ | ទទួលបាន)*/
0x00, 0x67, /* CHOICE.length = 103 */
0x00, 0x00, /* handle = 0 (វត្ថុ MDS) */
0x00, 0x06, /* attribute-list.count = 6 */
0x00, 0x61, /* attribute-list.length = 97 */
0x0A, 0x5A, /* attribute id=MDC_ATTR_SYS_TYPE_SPEC_LIST */
0x00, 0x08, /* attribute-value.length = 8 */
0x00, 0x01, /* TypeVerList count = 1 */
0x00, 0x04, /* ប្រវែង TypeVerList = 4 */
0x10, 0x04, /* ប្រភេទ = MDC_DEV_SPEC_PROFILE_PULS_OXIM */
0x00, 0x01, /* version=ver 1 នៃឯកទេស */
0x09, 0x28, /* attribute-id = MDC_ATTR_ID_MODEL */
0x00, 0x1B, /* attribute-value.length = 27 */
0x00, 0x0A, 0x46, 0x72, /* ប្រវែងខ្សែ = 10 | Freescale(space) */
0x65, 0x65, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x00, 0x0D, 'M', 'E', /* ប្រវែងខ្សែ = 13 | MED-SPO2 PHDC */
'D', '-', 'S', 'P', 'O', '2', ' ', 'P', 'H', 'D', 'C', 0x09, 0x84, /* គុណលក្ខណៈ -id = MDC_ATTR_SYS_ID */
0x00, 0x0A, /* attribute-value.length = 10 */
0x00, 0x08, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, /* ប្រវែងខ្សែអក្សរ octet = 8 | EUI-64 */
0x0a, 0x44, /* attribute-id = MDC_ATTR_DEV_CONFIG_ID */
0x00, 0x02, /* attribute-value.length = 2 */
0x40, 0x04, /* dev-config-id = 16384 (extended-config-start)*/
0x09, 0x2D, /* attribute-id = MDC_ATTR_ID_PROD_SPECN */
0x00, 0x12, /* attribute-value.length = 18 */
0x00, 0x01, /* ProductionSpec.count = 1 */
0x00, 0x0E, /* ProductionSpec.length = 14 */
0x00, 0x01, /* ProdSpecEntry.spec-type=1(serial-number)*/
0x00, 0x00, /* ProdSpecEntry.component-id = 0 */
0x00, 0x08, 0x44, 0x45, /* ប្រវែងខ្សែ = 8 | prodSpecEntry.prod-spec = DE124567 */
0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x09, 0x87, /* attribute-id =MDC_ATTR_TIME_ABS */
0x00, 0x08, /* attribute-value.length = 8 */
0x20, 0x09, 0x06, 0x12, /* Absolute-Time-Stamp=2009-06-12T12:05:0000*/
0x12, 0x05, 0x00, 0x00 };
នៅក្នុងនេះ អតីតample ភ្នាក់ងារពណ៌នាថាវាជា MDS ជាឧបករណ៍វាស់ជីពចរ ឈ្មោះក្រុមហ៊ុនគឺ "Freescale" ហើយម៉ូដែលឧបករណ៍គឺ "MED-SPO2 PHDC" ។
នៅពេលដែលភ្នាក់ងារស្ថិតនៅក្នុងស្ថានភាពប្រតិបត្តិការ វាអាចចាប់ផ្តើមរាយការណ៍ការវាស់វែងទៅអ្នកគ្រប់គ្រង។ ការវាស់វែងត្រូវតែផ្ញើដោយប្រើរបាយការណ៍ថេរ។ របាយការណ៍ទាំងនេះត្រូវតែមានការវាស់វែងដែលបានរៀបចំដោយយោងតាមរបាយការណ៍កំណត់រចនាសម្ព័ន្ធ MDS ដែលបានផ្ញើពីមុន។ សម្រាប់អតីតample នៅក្នុងរបាយការណ៍ការកំណត់រចនាសម្ព័ន្ធរបស់យើង ភ្នាក់ងារបានចង្អុលបង្ហាញទៅកាន់អ្នកគ្រប់គ្រងថាវានឹងផ្ញើការវាស់វែងជាលេខពីរ តម្លៃ SpO2 និងតម្លៃអត្រាជីពចរ។ លទ្ធផលវត្ថុ MDS របស់យើងដូចខាងក្រោម៖
រូបភាពទី 4. តំណាងភ្នាក់ងារ MED-SPO2
/* ការវាស់វែងដើម្បីផ្ញើ */
uint_8 USB_CONST PHD_OXI_DIM_DATA_TX[PHD_OXI_DIM_DATA_TX_SIZE] = {
0xE7, 0x00, /*ប្រភេទជម្រើស APDU (PrstApdu)*/
0x00, 0x36, /*CHOICE.length = 54*/
0x00, 0x34, /*OCTET STRING.length = 52*/
0x12, 0x36, /*invoke-id = 0x1236*/
0x01, 0x01, /*CHOICE(ការហៅប្រតិបត្តិការពីចម្ងាយ | របាយការណ៍ព្រឹត្តិការណ៍ដែលបានបញ្ជាក់)*/
0x00, 0x2E, /*CHOICE.length = 46*/
0x00, 0x00, /*obj-handle = 0 (វត្ថុ MDS)*/
0x00, 0x00, 0x00, 0x00, /*event-time = 0*/
0x0D, 0x1D, /*event-type = MDC_NOTI_SCAN_REPORT_FIXED*/
0x00, 0x24, /*event-info.length = 36*/
0xF0, 0x00, /*ScanReportInfoFixed.data-req-id =
0xF000*/ 0x00, 0x00, /*ScanReportInfoFixed.scan-report-no = 0*/
0x00, 0x02,/*ScanReportInfoFixed.obs-scan-fixed.count = 2*/
0x00, 0x1C, /*ScanReportInfoFixed.obs-scan-fixed.length = 28*/
0x00, 0x01, /*ScanReportInfoFixed.obs-scan-fixed.value[0].obj-handle = 1*/
0x00, 0x0A, /*ScanReportInfoFixed.obs-scan-fixed.value[0]។ obs-val-data.length = 10*/
0x00, 0x61, /*Simple-Nu-Observed-Value = 97% SpO2*/
0x20, 0x0B, 0x09, 0x23, /*Absolute-Time-Stamp = 2011-09-23T10:05:0000*/
0x0A, 0x05, 0x00, 0x00, 0x00, 0x02, /* ScanReportInfoFixed.obs-scan-fixed.value[1].obj-handle = 2*/
0x00, 0x0A, /* ScanReportInfoFixed.obs-scan-fixed.value[1] ។ obs-val-data.length = 10*/
0x00, 0x4E, /* Simple-Nu-Observed-Value = 78 BPM*/
0x20, 0x0B, 0x09, 0x23, /*Absolute-Time-Stamp = 2011-09-23T10:05:0000*/
0x0A, 0x05, 0x00, 0x00 };
នៅក្នុង APDU នេះ ភ្នាក់ងារបានរាយការណ៍ពីវត្ថុលេខពីរ គឺ 97 និង 78 ។ 97 ត្រូវបានកំណត់ថាជាចំណុចទាញវត្ថុ 1 ដូច្នេះអ្នកគ្រប់គ្រងអាចដឹងថាការវាស់វែងនេះត្រូវគ្នាទៅនឹង SpO2 ។ ដូចគ្នាជាមួយនឹងលេខ 78 ដែលត្រូវបានរាយការណ៍ថាជាចំណុចទាញវត្ថុ 2 ដូច្នេះអ្នកគ្រប់គ្រងដឹងថាការវាស់វែងនេះត្រូវគ្នាទៅនឹងអត្រាជីពចរ។ ពេលមួយ stamp សម្រាប់ការវាស់វែងនីមួយៗត្រូវបានផ្ញើផងដែរ ដូចដែលបានកំណត់នៅក្នុងរបាយការណ៍កំណត់រចនាសម្ព័ន្ធ MDS ។
ការអនុវត្តកម្មវិធីនៅក្នុង Microcontroller
ការប្រតិបត្តិកម្មវិធីនៅក្នុង microcontroller ចាប់ផ្តើមនៅពេលដែលមុខងារ TestApp_Task ត្រូវបានហៅ។ មុខងារនេះត្រូវបានប្រតិបត្តិក្នុងរង្វិលជុំគ្មានកំណត់ ហើយកំពុងពិនិត្យមើលស្ថានភាពម៉ាស៊ីនរបស់ភ្នាក់ងារជានិច្ច។
មុខងារ TestApp_Task មានម៉ាស៊ីនរដ្ឋតូចមួយដែលគ្រប់គ្រងស្ថានភាពនៃកម្មវិធី។ ក្នុងករណីដំបូង ប្រសិនបើឧបករណ៍ត្រូវបានរាប់បញ្ចូលដោយជោគជ័យជា PHD អថេរ "ព្រឹត្តិការណ៍" គឺ APP_PHD_INITIALIZED ។ ឧបករណ៍ចាប់ផ្តើមកម្មវិធីកំណត់ម៉ោងដំបូង ដោយផ្តល់ពេលវេលាដល់អ្នកប្រើប្រាស់ដើម្បីជ្រើសរើសវត្ថុ MDS ដែលពួកគេចង់បានសម្រាប់ការផ្សារភ្ជាប់ ក្នុងករណីភ្នាក់ងារមានវត្ថុ MDS ច្រើនជាងមួយ។ បន្ទាប់ពីកម្មវិធីកំណត់ម៉ោងបញ្ចប់ការរាប់របស់វា អថេរ "ព្រឹត្តិការណ៍" គឺ APP_PHD_SELECT_TIMER_OFF ។ នៅក្នុងករណីនេះ។
សេចក្តីថ្លែងការណ៍ មុខងារ PHD_Connect_To_Manager ត្រូវបានហៅ។ មុខងារនេះផ្ញើសំណើសមាគមដែលបានកំណត់ក្នុង file phd_device_spec.c ហើយចាប់ផ្តើមដំណើរការសមាគមដែលបានពិពណ៌នាពីមុន។ ដំណើរការសមាគមទាំងអស់ត្រូវបានគ្រប់គ្រងដោយស្វ័យប្រវត្តិជាមួយនឹងមុខងារនៅលើ file phd_com_model.c ហើយវាត្រូវការ APDUs ដែលត្រូវការទាំងអស់ដែលបានកំណត់ពីមុននៅក្នុង file phd_device_spec.c ដើម្បីបញ្ចប់ការផ្សារភ្ជាប់។ នេះជួយអ្នកអភិវឌ្ឍន៍ឱ្យផ្តោតលើកម្មវិធីរបស់ពួកគេដោយបំភ្លេចរាល់ការដឹកជញ្ជូនដែលទាក់ទងនឹងទំនាក់ទំនង PHD ។
មុខងារ SpO2_PeriodicTask ត្រូវបានហៅជាទៀងទាត់ទៅក្នុងមុខងារ TestApp_Task ។ មុខងារនេះគ្រប់គ្រងឧបករណ៍វាស់ជីពចរដោយខ្លួនឯង។ វាគ្រប់គ្រងគ្រឿងកុំព្យូទ័រដែលត្រូវការសម្រាប់ការគ្រប់គ្រងក្តារ MED-SPO2 និងទទួលបាន SpO2 និងវាស់អត្រាជីពចរ។ ព័ត៌មានបន្ថែមអំពីឥរិយាបថនៃមុខងារនេះអាចរកបាននៅក្នុងកំណត់ចំណាំកម្មវិធី AN4327 Pulse Oximeter Fundamentals and Design ។ ដ្យាក្រាមខាងក្រោមតំណាងឱ្យមុខងារ TestApp_Task ។
រូបភាពទី 5. ដ្យាក្រាមលំហូរ TestApp_Task
ក្នុងអំឡុងពេលនៃការអនុវត្តភារកិច្ចតាមកាលកំណត់ SpO2 ការវាស់វែងអត្រា SpO2 និងជីពចរកំពុងត្រូវបានធ្វើបច្ចុប្បន្នភាពឥតឈប់ឈរ។ នៅក្នុងការចាប់ផ្តើមកម្មវិធី SpO2 កម្មវិធីកំណត់ពេលវេលាមួយវិនាទីត្រូវបានបង្កើតឡើង។ កម្មវិធីកំណត់ម៉ោងនេះត្រូវបានធ្វើឱ្យសកម្ម នៅពេលដែលចំនួននីមួយៗត្រូវបានឈានដល់ និងចាប់ផ្តើមឡើងវិញសម្រាប់រយៈពេលមួយវិនាទីទៀត។ នៅពេលដែលកម្មវិធីកំណត់ម៉ោងនេះត្រូវបានធ្វើឱ្យសកម្ម វាដំណើរការមុខងារ Send_PHDC_Measurements ។ មុខងារនេះរាប់ចំនួនវិនាទីដែលបានកន្លងផុត ហើយនៅពេលដែលវារកឃើញថាបរិមាណនៃវិនាទីដែលបានកន្លងផុតទៅគឺដូចគ្នាទៅនឹងការកំណត់នៅក្នុង SPO2_PHDC_UPDATE_PERIOD វាហៅមុខងារ PHD_Send_Measurements_to_Manager។
មុខងារ PHD_Send_Measurements_to_Manager ធ្វើបច្ចុប្បន្នភាពរបាយការណ៍ថេរការវាស់វែងដែលបានកំណត់ក្នុង file phd_devicespec.c ជាមួយនឹងការវាស់វែងថ្មីៗបំផុតដែលធ្វើឡើងដោយមុខងារភារកិច្ចតាមកាលកំណត់ SpO2 ។ រៀងរាល់ 10 វិនាទី សំណុំរង្វាស់ថ្មីត្រូវបានផ្ញើ ហើយ Absolute Time Stamp កើនឡើងក្នុងមួយនាទី។ បន្ទាប់មកអ្នកគ្រប់គ្រងធ្វើការវាស់វែង និងបង្ហាញពួកវានៅក្នុង GUI របស់វា។
កំពុងដំណើរការ Demo
ការណែនាំខាងក្រោមនឹងណែនាំអ្នកក្នុងការប្រមូលផ្តុំ ការទាញយកកម្មវិធី និងការដំណើរការសាកល្បង។
កំណត់ផ្នែករឹង
ដើម្បីប្រមូលផ្តុំការបង្ហាញ អ្នកនឹងត្រូវការផ្នែកខាងក្រោម។
រូបភាពទី 6. ចំណងជើងដែលត្រូវការ
បន្ទះ TWR-K52N512 និងបន្ទះ TWR-SER តម្រូវឱ្យផ្លាស់ប្តូរការកំណត់រចនាសម្ព័ន្ធ jumper ដើមដើម្បីដំណើរការ។ ត្រូវប្រាកដថាការកំណត់រចនាសម្ព័ន្ធ jumper នៃក្តារទាំងនេះគឺដូចអ្វីដែលបានបង្ហាញខាងក្រោម។
តារាង 1. ការកំណត់រចនាសម្ព័ន្ធ TWR-SER Jumper
អ្នកលោត |
មុខតំណែង |
J10 | ០១៤៨៦០៧៤-០០៤ |
J16 | ០១៤៨៦០៧៤-០០៤ |
J2 | ០១៤៨៦០៧៤-០០៤ |
តារាង 2. ការកំណត់រចនាសម្ព័ន្ធ Jumper TWR-K53N512
អ្នកលោត |
មុខតំណែង |
J1 | បើក |
J3 | បើក |
J4 | ០១៤៨៦០៧៤-០០៤ |
J5 | បើក |
J6 | បានភ្ជាប់ |
J7 | បានភ្ជាប់ |
J11 | ០១៤៨៦០៧៤-០០៤ |
J12 | បើក |
J14 | បើក |
J15 | បានភ្ជាប់ |
J16 | ០១៤៨៦០៧៤-០០៤ |
J17 | បានភ្ជាប់ |
J18 | បានភ្ជាប់ |
J20 | បើក |
J21 | បានភ្ជាប់ |
J22 | បើក |
J24 | ០១៤៨៦០៧៤-០០៤ |
J25 | បើក |
J26 | បើក |
J28 | បើក |
J29 | បានភ្ជាប់ |
J32 | ០១៤៨៦០៧៤-០០៤ |
J33 | ០១៤៨៦០៧៤-០០៤ |
J34 | បើក |
ការប្រមូលផ្តុំការបង្ហាញ
ជំហានខាងក្រោមនឹងណែនាំអ្នកអំពីការដំឡើងគំរូ។
1. យកក្តារ TWR-K53N512 និងបន្ទះបឋមនៃជណ្តើរយន្ត។ ភ្ជាប់ផ្នែកម្ខាងនៃបន្ទះ TWR-K53N512 ដែលត្រូវបានសម្គាល់ថាជា "បឋម" ទៅរន្ធដោតមួយនៅលើបន្ទះជណ្តើរយន្តបឋម។
រូបភាពទី 7. ការផ្គុំ TWR-K53N512
2. ឥឡូវនេះយកបន្ទះ TWR-SER ។ ភ្ជាប់ផ្នែកម្ខាងនៃ TWR-SER ដែលបានសម្គាល់ថាជាបឋមទៅនឹងរន្ធដោតមួយនៅលើបន្ទះជណ្តើរយន្តបឋម។
រូបភាពទី 8. ការផ្គុំ TWR-SER
3. យកបន្ទះជណ្តើរយន្តទីពីរ។ ភ្ជាប់ផ្នែកម្ខាងនៃបន្ទះ TWR-SER និង TWR-K53N512 ដែលត្រូវបានសម្គាល់ថាជា "បន្ទាប់បន្សំ" ទៅនឹងរន្ធដោតរៀងៗខ្លួននៅលើបន្ទះជណ្តើរយន្តទីពីរ។
រូបភាពទី 9. ការប្រមូលផ្តុំជណ្តើរយន្តបន្ទាប់បន្សំ
4. យកបន្ទះ MED-SPO2 ។ ភ្ជាប់ម្ជុលនៅលើបន្ទះ MED-SPO2 ទៅនឹងឧបករណ៍ភ្ជាប់វេជ្ជសាស្រ្តនៅលើបន្ទះ TWR- K53N512 ។ ការរាប់លេខម្ជុលនៅលើក្តារ MED-SPO2 ត្រូវតែឆ្លុះបញ្ចាំងជាមួយនឹងការរាប់លេខម្ជុលនៅលើក្តារ TWR- K53N512 (សូមមើលរូបភាពខាងក្រោម)។
រូបភាពទី 10. ការដាក់ផ្នែកខាងមុខអាណាឡូក
5. ភ្ជាប់ឧបករណ៍ចាប់សញ្ញាជីពចរទៅឧបករណ៍ភ្ជាប់ DB9 នៅលើបន្ទះ MED-SPO2 ។
រូបភាពទី 11. ការដាក់ឧបករណ៍ចាប់សញ្ញា Pulse oximeter
ការអនុវត្តសាកល្បង
1. ទាញយក និងដំឡើង HealthLink®។ វាអាចត្រូវបានរកឃើញនៅលើ Lampបណ្តាញ rey web ទំព័រ www.lnihealth.com.
រូបភាពទី 12. LNI Health web ទំព័រ
2. ភ្ជាប់ខ្សែ USB A ទៅ mini B ពីកុំព្យូទ័រទៅរន្ធ USB TWR-SER ។
រូបភាពទី 13. ការភ្ជាប់ USB ទៅ TWR-SER
3. ប្រសិនបើបង្អួចសួររកកម្មវិធីបញ្ជា USB PHDC លេចឡើង សូមជ្រើសរើសជម្រើស "ដំឡើងកម្មវិធីបញ្ជាដោយស្វ័យប្រវត្តិ"។ កម្មវិធីបញ្ជាត្រូវបានចម្លងទៅថតប្រព័ន្ធកំឡុងពេលដំឡើងកម្មវិធី HealthLink®។
រូបភាពទី 14. ការដំឡើងកម្មវិធីបញ្ជា PHDC
4. ប្រតិបត្តិកម្មវិធី HealthLink®។ ប្រសិនបើវាជាលើកទីមួយដែលអ្នកប្រើកម្មវិធី វានឹងស្នើសុំឱ្យអ្នកបង្កើតគណនីមួយ។ បង្កើតគណនីអ្នកប្រើប្រាស់ដោយជ្រើសរើសអ្នកផ្តល់ទិន្នន័យសុខភាពរបស់អ្នក (ឧ. Google Health, Microsoft HealthVault, ល...)។ ប្រសិនបើអ្នកមិនមានអ្នកផ្តល់ទិន្នន័យសុខភាពទេ អ្នកអាចប្រើជម្រើស "រក្សាទុកក្នុងថាស"។
រូបភាពទី 15. ការបង្កើតគណនីមួយ។
5. ដាក់ឧបករណ៍ចាប់សញ្ញាជីពចរនៅលើម្រាមដៃសន្ទស្សន៍ ដូចបង្ហាញក្នុងរូបភាពខាងក្រោម។
រូបភាពទី 16. ការដាក់ឧបករណ៍ចាប់សញ្ញាម្រាមដៃ
6. នៅពេលដែលគណនីសកម្ម កម្មវិធី HealthLink® នឹងទទួលស្គាល់ប្រព័ន្ធប៉មជាឧបករណ៍វាស់ជីពចរ។ ការវាស់វែងនឹងត្រូវបានផ្ញើរៀងរាល់ដប់វិនាទី។
រូបភាពទី 17. ការដំណើរការសាកល្បង
ឯកសារយោង
• ការអភិវឌ្ឍន៍ឧបករណ៍វាស់ជីពចរគឺផ្អែកលើកំណត់ចំណាំកម្មវិធី “AN4327 Pulse Oximeter Fundamentals and Design”
• កម្មវិធីគឺផ្អែកលើ USB Stack ជាមួយ PHDC 3.0 ដែលអាចរកបាននៅលើ Freescale web ទំព័រ https://www.freescale.com ។
• ពិធីសារទំនាក់ទំនងគឺផ្អែកលើស្តង់ដារ ISO/IEEE 11073-20601 Personal Health Device Communications៖ ពិធីសារផ្លាស់ប្តូរដែលប្រសើរឡើង
• ការអនុវត្តពិធីការទំនាក់ទំនង Pulse oximeter PHD ត្រូវបានបង្កើតឡើងស្របតាម IEEE 11073-10404 Personal Health Device Communications: Device Specialization-Pulse Oximeter
• កម្មវិធីនេះត្រូវបានបង្កើតឡើងដោយប្រើ IAR 6.3។ វាអាចត្រូវបានទាញយកពី IAR web ទំព័រ https://www.iar.com
• GUI ដែលប្រើក្នុងការអភិវឌ្ឍន៍ការបង្ហាញនេះគឺ HealthLink® GUI ពី Lamprey Networks ហើយអាចទាញយកបានពី LNI web ទំព័រ https://www.lnihealth.com
សេចក្តីសន្និដ្ឋាន
ថ្នាក់ឧបករណ៍ថែទាំសុខភាពផ្ទាល់ខ្លួនអនុញ្ញាតឱ្យមានអន្តរប្រតិបត្តិការដូចគ្នាក្នុងចំណោមឧបករណ៍វេជ្ជសាស្ត្រចល័ត។ Freescale ផ្តល់នូវដំណោះស្រាយការតភ្ជាប់ដែលជួយអ្នកអភិវឌ្ឍន៍ក្នុងការបង្កើតឧបករណ៍ដែលអាចទំនាក់ទំនងជាមួយស្តង់ដារដូចជា IEEE 11073-20601 ដែលធ្វើឱ្យពួកគេក្លាយជាជម្រើសល្អប្រសើរជាងមុននៅក្នុងទីផ្សារ។
វិធីទាក់ទងយើង៖
ទំព័រដើម៖ www.freescale.com
Web គាំទ្រ៖ http://www.freescale.com/support
សហរដ្ឋអាមេរិក/អឺរ៉ុប ឬទីតាំងមិនត្រូវបានរាយបញ្ជី៖
Freescale Semiconductor
មជ្ឈមណ្ឌលព័ត៌មានបច្ចេកទេស EL516 2100
ផ្លូវ Elliot ខាងកើត
Tempe រដ្ឋ Arizona 85284 +1-៨៦៦-៤៤៧-២១៩៤ ឬ +1-៨៦៦-៤៤៧-២១៩៤
www.freescale.com/support
អឺរ៉ុបមជ្ឈឹមបូព៌ានិងអាហ្វ្រិក៖
Freescale Halbeiter Deutschland GmbH
មជ្ឈមណ្ឌលព័ត៌មានបច្ចេកទេស
ឆេតបូហ្សែន ៦០
81829 Muenchen ប្រទេសអាល្លឺម៉ង់
+44 ១២៩៦ ៣៨០ ៤៥៦ (អង់គ្លេស)
+46 8 52200080 (ភាសាអង់គ្លេស)
+49 89 92103 559 (អាល្លឺម៉ង់)
+33 1 69 35 48 48 (បារាំង)
www.freescale.com/support
ជប៉ុន៖
Freescale Semiconductor Japan Ltd.
ទីស្នាក់ការកណ្តាល
អគារ ARCO 15F
1-8-1, Shimo-Meguro, Meguro-ku,
តូក្យូ ១០៨-០០២៣
ជប៉ុន
0120 191014 ឬ +81 3 5437 9125 s
upport.japan@freescale.com
អាស៊ីប៉ាស៊ីហ្វិច:
Freescale Semiconductor China Ltd.
អគារផ្លាស់ប្តូរ 23F
លេខ 118 ផ្លូវ Jianguo
ស្រុកចូវយ៉ាង
ទីក្រុងប៉េកាំង 100022
ចិន
+86 10 5879 8000
support.asia@freescale.com
ព័ត៌មាននៅក្នុងឯកសារនេះត្រូវបានផ្តល់ជូនតែមួយគត់ដើម្បីអនុញ្ញាតឱ្យអ្នកអនុវត្តប្រព័ន្ធ និងកម្មវិធីប្រើប្រាស់ផលិតផល Freescale Semiconductors ។ មិនមានអាជ្ញាប័ណ្ណរក្សាសិទ្ធិដោយបញ្ជាក់ ឬបង្កប់ន័យដែលត្រូវបានផ្តល់ឱ្យនៅទីនេះក្នុងការរចនា ឬប្រឌិតសៀគ្វីបញ្ចូលណាមួយ ឬសៀគ្វីរួមបញ្ចូលគ្នាដោយផ្អែកលើព័ត៌មាននៅក្នុងឯកសារនេះ។
Freescale Semiconductor រក្សាសិទ្ធិដើម្បីធ្វើការផ្លាស់ប្តូរដោយមិនមានការជូនដំណឹងបន្ថែមចំពោះផលិតផលណាមួយនៅទីនេះ។ Freescale Semiconductor មិនធ្វើការធានា តំណាង ឬការធានាទាក់ទងនឹងភាពសមស្របនៃផលិតផលរបស់ខ្លួនសម្រាប់គោលបំណងជាក់លាក់ណាមួយ ហើយក៏មិន Freescale Semiconductor ទទួលខុសត្រូវណាមួយដែលកើតចេញពីកម្មវិធី ឬការប្រើប្រាស់ផលិតផល ឬសៀគ្វីណាមួយឡើយ ហើយជាពិសេសបដិសេធការទទួលខុសត្រូវណាមួយ រួមទាំងដោយគ្មានដែនកំណត់។ ការខូចខាតជាលទ្ធផល ឬដោយចៃដន្យ។ ប៉ារ៉ាម៉ែត្រ "ធម្មតា" ដែលអាចត្រូវបានផ្តល់ជូននៅក្នុងសន្លឹកទិន្នន័យ Freescale Semiconductor និង/ឬលក្ខណៈជាក់លាក់អាច និងធ្វើខុសគ្នានៅក្នុងកម្មវិធីផ្សេងៗគ្នា ហើយការអនុវត្តជាក់ស្តែងអាចប្រែប្រួលតាមពេលវេលា។ ប៉ារ៉ាម៉ែត្រប្រតិបត្តិការទាំងអស់ រួមទាំង "ប្រភេទ" ត្រូវតែមានសុពលភាពសម្រាប់កម្មវិធីអតិថិជននីមួយៗដោយអ្នកជំនាញបច្ចេកទេសរបស់អតិថិជន។ Freescale Semiconductor មិនបញ្ជូនអាជ្ញាប័ណ្ណណាមួយនៅក្រោមសិទ្ធិប៉ាតង់របស់ខ្លួន ឬសិទ្ធិរបស់អ្នកដទៃទេ។ ផលិតផល Freescale Semiconductor មិនត្រូវបានរចនា មានបំណង ឬត្រូវបានអនុញ្ញាតសម្រាប់ប្រើប្រាស់ជាសមាសធាតុនៅក្នុងប្រព័ន្ធដែលមានបំណងសម្រាប់ការផ្សាំវះកាត់ចូលទៅក្នុងរាងកាយ ឬកម្មវិធីផ្សេងទៀតដែលមានបំណងគាំទ្រ ឬទ្រទ្រង់ជីវិត ឬសម្រាប់កម្មវិធីផ្សេងទៀតដែលការបរាជ័យនៃផលិតផល Freescale Semiconductor អាចបង្កើតបាន។ ស្ថានភាពដែលរបួសផ្ទាល់ខ្លួន ឬការស្លាប់អាចកើតឡើង។ ប្រសិនបើអ្នកទិញទិញ ឬប្រើប្រាស់ផលិតផល Freescale Semiconductor សម្រាប់កម្មវិធីដែលមិនមានបំណង ឬគ្មានការអនុញ្ញាតបែបនេះ អ្នកទិញត្រូវទូទាត់សំណង Freescale Semiconductor និងមន្ត្រី បុគ្គលិក ក្រុមហ៊ុនបុត្រសម្ព័ន្ធ សាខា និងអ្នកចែកចាយរបស់ខ្លួន ដោយមិនបង្កគ្រោះថ្នាក់ដល់ការទាមទារ ការចំណាយ ការខូចខាត និងការចំណាយ និងថ្លៃមេធាវីសមហេតុផលដែលកើតឡើង។ ចេញពី ដោយផ្ទាល់ ឬដោយប្រយោល ការទាមទារណាមួយនៃការរងរបួសផ្ទាល់ខ្លួន ឬការស្លាប់ដែលទាក់ទងនឹងការប្រើប្រាស់ដោយអចេតនា ឬគ្មានការអនុញ្ញាត បើទោះបីជាការអះអាងបែបនេះបានចោទប្រកាន់ថា Freescale Semiconductor មានការធ្វេសប្រហែសទាក់ទងនឹងការរចនា ឬការផលិតផ្នែកក៏ដោយ។
កំណែដែលអនុលោមតាម RoHS និង/ឬ Pb-free នៃផលិតផល Freescale មានមុខងារ និងលក្ខណៈអគ្គិសនីដែលជាការប្តឹងតវ៉ាដែលមិនមែនជា RoHS និង/ឬមិនមាន Pb-free ។
សម្រាប់ព័ត៌មានបន្ថែម សូមមើល http://www.freescale.com ឬទាក់ទងអ្នកតំណាងផ្នែកលក់ Freescale របស់អ្នក។
សម្រាប់ព័ត៌មានអំពីកម្មវិធីផលិតផលបរិស្ថានរបស់ Freescale សូមចូលទៅកាន់ http://www.freescale.com/epp.
Freescale™ និងនិមិត្តសញ្ញា Freescale គឺជាពាណិជ្ជសញ្ញារបស់ Freescale Semiconductor, Inc.
រាល់ឈ្មោះផលិតផលឬសេវាកម្មទាំងអស់គឺជាទ្រព្យសម្បត្តិរបស់ម្ចាស់រៀងៗខ្លួន។
រក្សាសិទ្ធិឆ្នាំ ២០១២ ដោយ Freescale Semiconductor, Inc.
NXP Pulse Oximeter ដោយប្រើ USB PHDC User Manual – ទាញយក [ធ្វើឲ្យ ប្រសើរ]
NXP Pulse Oximeter ដោយប្រើ USB PHDC User Manual – ទាញយក