Мазмуну:

StandardFirmata'дан ашып кетүү - кайра кароо: 5 кадам
StandardFirmata'дан ашып кетүү - кайра кароо: 5 кадам

Video: StandardFirmata'дан ашып кетүү - кайра кароо: 5 кадам

Video: StandardFirmata'дан ашып кетүү - кайра кароо: 5 кадам
Video: Установка ванны. Все секреты. Экран. Скрытый люк. #40 2024, Июль
Anonim
StandardFirmata'дан ашып кетүү - кайра каралды
StandardFirmata'дан ашып кетүү - кайра каралды

Бир аз убакыт мурун, мен pymata4 колдонуучусу, доктор Мартин Уилер менен байланышып, pymata4 китепканасына DHT22 нымдуулук/температура сенсорун кошуу боюнча көрсөтмө беришти. Pymata4 китепканасы, Arduino кесиптеши FirmataExpress менен бирдикте, колдонуучуларга Arduino түзмөктөрүн алыстан башкарууга жана көзөмөлдөөгө мүмкүнчүлүк берет. Электрондук почта алмашуунун бир нече айлампасында доктор Уилер pymata4 жана FirmataExpressти өзгөртүүдө ийгиликтүү болду. Натыйжада, DHT22 жана DHT11 сенсорлорун колдоо азыр pymata4 жана FirmataExpressтин стандарттык бөлүгү болуп саналат.

2014 -жылдын май айында мен Фирматага кошумча түзмөктөрдү колдоо боюнча макала жазгам. Ошол макала жөнүндө ой жүгүртүп, мен ал макаланы кагазга түшүргөндөн бери канчалык өзгөргөнүн түшүндүм. Бул макаладан тышкары, доктор Уилер өзүнүн аракеттерин документтештирген, жана сиз муну текшерип көргүңүз келиши мүмкүн.

FirmataExpress StandardFirmata негизделген жана StandardFirmata каталог структурасы өнүккөн. Мындан тышкары, pymata4 API да 2014 -жылдын түпнуска PyMata APIсинен бир аз айырмаланат. Мен бул макаланы кайра карап чыгуу жана жаңыртуу үчүн эң сонун убакыт болот деп ойлогом. Доктор Уилердин эмгегин негиз катары колдонуп, pymata4/FirmataExpress функциясын кантип кеңейтүүнү изилдеп көрөлү.

Баштоодон мурун - Arduino/Firmata жөнүндө кээ бир маалымат

Ошентип, Фирмата деген эмне? Firmata веб -баракчасынан цитата келтирүү, "Firmata - бул башкы компьютердеги программалык камсыздоодон микроконтроллерлер менен байланышуу үчүн жалпы протокол."

Arduino Firmata адатта Arduino микроконтроллери менен компьютердин ортосунда буйрук жана отчет маалыматын ташуу үчүн сериялык интерфейсти колдонот, адатта 57600 bpsке коюлган сериялык/USB шилтемесин колдонот. Бул шилтеме аркылуу берилген маалыматтар экилик болуп саналат жана протокол кардар/сервер моделинде ишке ашырылат.

Сервер тарабы Arduino эскизи түрүндө Arduino микроконтроллерине жүктөлөт. StandardFirmata эскизи, Arduino IDE менен камтылган, кардардын буйругу менен Arduino I/O казыктарын көзөмөлдөйт. Ал ошондой эле кардардын кайра кирүү пин өзгөртүүлөр жана башка отчет маалымат отчет. FirmataExpress StandardFirmataнын кеңейтилген версиясы. Ал 115200 bps сериялык шилтеме ылдамдыгы менен иштейт.

Бул макалада колдонулган Arduino кардары pymata4. Бул компьютерде аткарылган Python тиркемеси. Бул экөө тең Arduino серверине буйруктарды жөнөтөт жана отчетторду алат. Pymata4 Pythonдо ишке ашырылгандыктан, ал Windows, Linux (Raspberry Pi менен кошо) жана macOS компьютерлеринде иштейт.

Эмне үчүн Firmata колдонуу керек?

Arduino микроконтроллери сонун кичинекей түзүлүштөр, бирок процессор жана эс ресурстары бир аз чектелген. Процессор же эс тутуму чоң болгон тиркемелер үчүн, программанын ийгиликтүү болушу үчүн ресурстук талапты компьютерге жүктөөдөн башка арга жок.

Бирок бул StandardFirmata колдонуунун жалгыз себеби эмес. Жеңил салмактагы Arduino тиркемелерин иштеп чыгууда, компьютер Arduino микроконтроллеринде түз жеткиликсиз болгон куралдарды жана мүчүлүштүктөрдү оңдоону камсыздай алат. "Бекитилген" кардарды жана серверди колдонуу, колдонмонун татаалдыгын жөнөкөйлөштүрүлгөн ЖК менен чектөөгө жардам берет. Колдонмо өркүндөтүлгөндөн кийин, аны салтка айланган, өз алдынча Arduino эскизине которсо болот.

Эмне үчүн pymata4 колдонуу керек?

Анын автору болгондуктан, албетте, мен бир жактуумун. Айтор, бул акыркы бир нече жылдан бери үзгүлтүксүз сакталып келген Python негизделген Firmata кардары. Бул интуитивдүү жана колдонууга оңой API менен камсыз кылат. StandardFirmata негизделген эскиздерден тышкары, StandardFirmataWifI эскизин колдонууда ESP-8266 сыяктуу түзмөктөр үчүн WiFi аркылуу Firmata колдойт.

Ошондой эле, pymata4 учурда StandardFirmata колдобогон кошумча сенсорлорду жана кыймылдаткычтарды колдоо үчүн колдонуучу тарабынан оңой кеңейтилген.

1 -кадам: Firmata протоколун түшүнүү

Фирмата протоколун түшүнүү
Фирмата протоколун түшүнүү

Arduino Firmata байланыш протоколу маалыматтарды чагылдыруу үчүн бир же бир нече 7 биттик байттарды колдонгон MIDI протоколунан алынган.

Фирмата колдонуучу кеңейтүүчү болуп иштелип чыккан. Бул кеңейтүүнү камсыз кылган механизм - System Exclusive (SysEx) билдирүү протоколу.

Firmata протоколу тарабынан аныкталган SysEx билдирүүсүнүн форматы жогорудагы сүрөттө көрсөтүлгөн. Ал ондуктуу 0xF0 туруктуу мааниси бар START_SYSEX байты менен башталат жана андан кийин уникалдуу SysEx командасынын байты келет. Байт буйругунун мааниси он алтылык 0x00-0x7F диапазонунда болушу керек. Байт буйругунан кийин 7-бит маалыматтын такталбаган саны келет. Акырында, билдирүү END_SYSEX байт менен, он алтылык 0xF7 туруктуу мааниси менен токтотулат.

Firmata маалыматтарды коддоо/декоддоо

SysEx билдирүүсүнүн колдонуучу маалыматы бир бөлүгү 7 биттик байттан тургандыктан, сиз 128 (0x7f) чоңураак маанини кантип билдирет деп ойлонушуңуз мүмкүн? Фирмата бул баалуулуктарды маалыматтар шилтемеси боюнча маршировкага чейин бир нече 7 биттик байт бөлүктөргө бөлүп кодойт. Берилиштердин эң кичине байт (LSB) биринчи жөнөтүлөт, андан кийин маалымат пунктунун конвенция боюнча барган сайын маанилүү компоненттери жөнөтүлөт. Маалымат пунктунун эң маанилүү байты (MSB) - бул акыркы жөнөтүлгөн маалымат пункту.

Бул кантип иштейт?

Айталы, SysEx билдирүүсүнүн маалымат бөлүгүнө 525 маанисин киргизүүнү каалайбыз. 525тин мааниси 128дин маанисинен чоңураак болгондуктан, биз аны 7 биттик байт "бөлүктөргө" бөлүшүбүз керек.

Мына, бул кандайча жасалат.

Ондукта 525тин мааниси 2x байт болгон 0x20D он алтылык мааниге барабар. LSB алуу үчүн, биз 0x7F менен AND'ing кылып маанини маска кылабыз. Эки "С" жана Python ишке ашыруу төмөндө көрсөтүлгөн:

// LSBди обочолонтуу үчүн "С" ишке ашыруу

int max_distance_LSB = max_distance & 0x7f; // LSB max_distance_LSB = max_distance & 0x7F # төмөнкү байтты изоляциялоо үчүн төмөнкү байтты # Python ишке ашыруу

Маскировкадан кийин max_distance_LSB 0x0d камтыйт. 0x20D & 0x7F = 0x0D.

Кийинки, биз бул 2-байт мааниси үчүн MSB обочолонушу керек. Бул үчүн 0x20D маанисин оңго, 7 жерге жылдырабыз.

// 2 байт мааниси бар MSB изоляциялоо үчүн "С" ишке ашыруу

int max_distance_MSB = max_distance >> 7; // жогорку тартиптеги байтты которуу # Python ишке ашыруу 2 байттык мааниге ээ isoloate MSB үчүн max_distance_MSB = max_distance >> 7 # shift жогорку байтты алуу үчүн Shift кийин, max_distance_MSB 0x04 маанисин камтыйт.

"Чукификацияланган" маршальдуу маалыматтар алынганда, аны бир баалуулукка кайра чогултуу керек. Бул жерде маалыматтар "С" да, Python да кантип кайра чогултулат

// 2 байтты кайра чогултуу үчүн "С" ишке ашыруу, // 7 бит мааниси бир мааниге int max_distance = argv [0] + (argv [1] << 7); # Python ишке ашыруу 2 байтты, # 7 бит баалуулуктарды бир мааниге чогултуу max_distance = data [0] + (маалымат [1] << 7)

Кайра чогулткандан кийин, маани дагы бир жолу 525 ондукка же 0x20D он алтылыкка барабар.

Бул ажыратуу/кайра чогултуу процесси кардар же сервер тарабынан аткарылышы мүмкүн.

2 -кадам: Келгиле, баштайлы

Жаңы түзмөктү колдоо Arduino резидент серверине да, PC резиденти Python кардарына да өзгөртүүлөрдү талап кылат. Доктор Уилердин эмгеги керектүү өзгөртүүлөрдү көрсөтүү үчүн колдонулат.

Балким, эң маанилүү кадам - колдоого алынган түзмөк китепканасын теңдеменин Arduino тарабына интеграциялоону же өзүңүздүн жазууну каалаарыңызды чечүү. Эгерде сиз бар китепкананы таба алсаңыз, анда өзүңүздү нөлдөн баштап жазууга караганда, аны колдонуу алда канча жөнөкөй деп сунушталат.

DHT түзмөгүн колдоо үчүн, доктор Уилер DHTNew китепканасына өзүнүн кеңейтүү кодун негиздеген. Абдан акылдуулук менен, доктор Уилер DHTNew китепканасынын функциясын Arduino жана pymata4 теңдемелеринин эки тарабына бөлүп, Arduino тарабында минималдуу блокировканы камсыз кылды.

Биз DHTNew карасак, ал төмөнкүлөрдүн баарын аткарат:

  • Тандалган пин санарип чыгаруу режимин коёт.
  • Акыркы нымдуулук жана температура баалуулуктарын алуу үчүн коддолгон сигнал чыгат.
  • Бардык каталарды текшерет жана кабарлайт.
  • Алынган чийки маалыматтан адам окуй турган температура жана нымдуулук баалуулуктарын эсептейт.

FirmataExpress тарабында нерселерди мүмкүн болушунча эффективдүү кармоо үчүн доктор Уилер Arduinoдон pymata4ке маалыматтарды конвертациялоо тартибин түшүрдү.

3 -кадам: DHT колдоо үчүн FirmataExpress өзгөртүү

FirmataExpress каталог дарагы

Төмөндө FirmataExpress репозиторийин камтыган бардык файлдар бар. Бул дарак StandardFiramata менен бирдей, кээ бир файл аттары репозиторийдин аталышын чагылдырат.

Өзгөртүүнү талап кылган файлдар - алардын жанында жылдызча (*) бар файлдар.

FirmataExpress

├── * Такта.h

├── мисалдар

Китепкана бөлүмүн ачуу жана мазмунун көрүү FirmataExpress

X ├── boardx

│ ├── * FirmataExpress.ino

LICENSE.txt

Makefile

├── * FirmataConstants.h

├── * FirmataDefines.h

├── FirmataExpress.cpp

├── FirmataExpress.h

├── FirmataMarshaller.cpp

├── FirmataMarshaller.h

├── FirmataParser.cpp

└── FirmataParser.h

Келгиле, файлдардын ар бирин жана өзгөртүүлөрдү карап көрөлү.

Такта.h

Бул файл колдоого алынган такталардын ар бири үчүн пин түрүндөгү макро аныктамаларды камтыйт. Бул бир нече түзмөктү колдоого муктаж болгондо колдоого алынган түзмөктөрдүн максималдуу санын аныктайт.

DHT түзмөгү үчүн бир убакта 6га чейин түзмөк туташтырылышы мүмкүн жана бул маани төмөнкүчө аныкталат:

#ifndef MAX_DHTS

#dexine MAX_DHTS 6 #endif

Ошондой эле, пин түрүндөгү макростар жаңы түзмөк үчүн, тактанын бардык түрлөрү үчүн же сизди кызыктырган үчүн тандалышы мүмкүн. Бул макростар негизинен отчет берүү үчүн колдонулат жана түзмөктөрдү башкаруу үчүн колдонулбайт. Бул макроолор түзмөктү колдогон эки пинди аныктайт:

#аныктоо IS_PIN_DHT (p) (IS_PIN_DIGITAL (p) && (p) - 2 <MAX_DHTS)

Ошондой эле пин-сандык конверсияны аныктоо үчүн макро.

#PIN_TO_DHT (p) PIN_TO_DIGITAL (p) аныктоо

FirmataConstants.h

Бул файл камтылган версиянын номерин камтыйт, аны сиз Arduinoго кайсы версиясын жүктөгөнүңүздү көзөмөлдөө үчүн өзгөрткүңүз келет. Ал ошондой эле Firmata билдирүү баалуулуктарын камтыйт, анын ичинде Firmata SysEx билдирүүлөрү.

Бул файлга түзмөгүңүз үчүн жаңы билдирүү же билдирүүлөр топтомун дайындооңуз керек болот. DHT үчүн эки билдирүү кошулду. Бири пинти "DHT" пини катары, экинчиси кабарчынын билдирүүсү катары конфигурациялайт, DHTдин акыркы маалыматын кардарга кайра жөнөтүүдө.

статикалык const int DHT_CONFIG = 0x64;

DH DHDATA = 0x65 статикалык const;

Пин режимдери да бул файлда көрсөтүлгөн. DHT үчүн жаңы пин режими түзүлдү:

PIN_MODE_DHT = 0x0F статикалык const; // пин DHT үчүн конфигурацияланган

Жаңы пин режимин кошууда, TOTAL_PIN_MODES жөнгө салынышы керек:

статикалык const int TOTAL_PIN_MODES = 17;

FirmataDefines.h

Бул файл FirmataConstants.h кошулган жаңы билдирүүлөрдү чагылдыруу үчүн жаңыртылышы керек:

#ifdef DHT_CONFIG #undef DHT_CONFIG #endif #define DHT_CONFIG фирмасы:: DHT_CONFIG // DHT request #ifdef DHT_DATA #undef DHT_DATA #endif #define DHT_DATA firmata:: DHT_DATA // DHT reply #ifdef PIN_FOD_FOD_FOD_FOD_DOD:: PIN_MODE_DHT

FirmataExpress.ino

Бул талкууда биз бул Arduino эскизине киргизилген өзгөртүүлөрдүн "жогорку чекиттерин" камтыйбыз.

FirmataExpress бир убакта алтыга чейин DHT түзмөгүн колдошу үчүн, 3 массив түзмөктүн байланышкан пин номерин, WakeUpDelay маанисин жана түзмөктүн түрүн, башкача айтканда DHT22 же DHT11ди көзөмөлдөө үчүн түзүлдү:

// DHT сенсорлору

int numActiveDHTs = 0; // тиркелген DHTs саны uint8_t DHT_PinNumbers [MAX_DHTS]; uint8_t DHT_WakeUpDelay [MAX_DHTS]; uint8_t DHT_TYPE [MAX_DHTS];

Эки түзмөк тең окуунун ортосунда болжол менен 2 секунд талап кылынгандыктан, биз ар бир DHTди 2 секунддук убакыт аралыгында бир жолу окуганыбызды текшеришибиз керек. DHT түзмөктөрү жана HC-SR04 аралык сенсорлору сыяктуу кээ бир түзмөктөргө мезгил-мезгили менен кирүүгө болот. Бул аларга өз чөйрөлөрү менен өз ара аракеттенүүгө мүмкүнчүлүк берет.

uint8_t nextDHT = 0; // кийинки түзмөктүн окулушу үчүн dht индекси

uint8_t currentDHT = 0; // Кайсы сенсор активдүү экенин көзөмөлдөйт. int dhtNumLoops = 0; // b4 цикли аркылуу DHT int dhtLoopCounterге кирүү жолу = 0; // Цикл эсептегичи

DHT түзмөгүн конфигурациялоо жана окуу

FirmataExpress DHT иштөө үчүн пин орнотуу үчүн SysEx буйругун алганда, DHT түзмөктөрүнүн максималдуу саны ашпаганын текшерет. Эгерде жаңы DHT колдоого алынса, DHT массивдери жаңыртылат. DHT түрү белгисиз болсо, SysEx сап билдирүүсү түзүлөт жана кайра pymata4ке жөнөтүлөт

учурда DHT_CONFIG: int DHT_Pin = argv [0]; int DHT_type = argv [1]; if (numActiveDHTs <MAX_DHTS) {if (DHT_type == 22) {DHT_WakeUpDelay [numActiveDHTs] = 1; } else if (DHT_type == 11) {DHT_WakeUpDelay [numActiveDHTs] = 18; } else {Firmata.sendString ("ERROR: BELNOWN SENSOR TYPE, VALID SENSORS ARE 11, 22"); тыныгуу; } // сенсорду текшериңиз DHT_PinNumbers [numActiveDHTs] = DHT_Pin; DHT_TYPE [numActiveDHTs] = DHT_ түрү; setPinModeCallback (DHT_Pin, PIN_MODE_DHT);

FirmataExpress анда DHT түзмөгү менен байланышууга аракет кылат. Эгерде кандайдыр бир каталар болсо, анда ката маалыматтары менен SysEx билдирүүсүн түзөт жана SysEx билдирүүсүн кайра pymat4кө жөнөтөт. _Bits өзгөрмөсү, эгер каалашса, pymata4 тарабынан кошумча иштетүү үчүн DHT түзмөгү тарабынан кайтарылган маалыматтарды камтыйт.

Firmata.write (START_SYSEX);

Firmata.write (DHT_DATA); Firmata.write (DHT_Pin); Firmata.write (DHT_type); үчүн (uint8_t i = 0; i> 7 & 0x7f); } Firmata.write (abs (rv)); Firmata.write (1); Firmata.write (END_SYSEX);

Эгерде жарактуу маалыматтар кайтарылса, активдүү DHTлердин саны көбөйтүлөт. Берилиштер үчүн кийинки DHT текшерүүдөн мурун канча циклди кайталоону көзөмөлдөгөн өзгөрмө да жөнгө салынат. Бул өзгөрмө системага канча DHT кошулбасын, баары 2 секунда ичинде окулат деп ишендирет.

int rv = readDhtSensor (numActiveDHTs);

if (rv == DHTLIB_OK) {numActiveDHTs ++; dhtNumLoops = dhtNumLoops / numActiveDHTs; // баары жакшы}

Эгерде бир же бир нече DHT түзмөгү эскиздин цикл функциясында конфигурацияланган болсо, анда кийинки DHT түзмөгү окулат. Жарактуу маалыматтар же анын ката абалы pysata4ке SysEx билдирүүсү түрүндө кайтарылат:

if (dhtLoopCounter ++> dhtNumLoops) {if (numActiveDHTs) {int rv = readDhtSensor (nextDHT); uint8_t current_pin = DHT_PinNumbers [nextDHT]; uint8_t current_type = DHT_TYPE [nextDHT]; dhtLoopCounter = 0; currentDHT = nextDHT; if (nextDHT ++> = numActiveDHTs - 1) {nextDHT = 0; } if (rv == DHTLIB_OK) {// TEST CHECKSUM uint8_t sum = _bits [0] + _bits [1] + _bits [2] + _bits [3]; if (_bits [4]! = sum) {rv = -1; }} // катты Firmata.write статусу менен кайра жөнөтүү (START_SYSEX); Firmata.write (DHT_DATA); Firmata.write (current_pin); Firmata.write (current_type); үчүн (uint8_t i = 0; i <sizeof (_bits) - 1; ++ i) {Firmata.write (_bits ); // Firmata.write (_bits ;} Firmata.write (abs (rv)); Firmata.write (0); Firmata.write (END_SYSEX);}}

DHT түзмөгү менен байланышуу үчүн колдонулган код DHTNew китепканасынан түздөн -түз алынган:

int readDhtSensor (int индекси) {

// INIT BUFFERVAR DATA uint8_t маскасын алуу үчүн = 128; uint8_t idx = 0; // EMPTY BUFFER // memset (_bits, 0, sizeof (_bits)); for (uint8_t i = 0; i 5 BYTES for (uint8_t i = 40; i! = 0; i--) {loopCnt = DHTLIB_TIMEOUT; while (digitalRead (pin) == LOW) {if (--loopCnt == 0) DHTLIB_ERROR_TIMEOUT;} uint32_t t = micros (); loopCnt = DHTLIB_TIMEOUT; while (digitalRead (pin) == HIGH) {if (--loopCnt == 0) return DHTLIB_ERROR_TIMEOUT;} if ((micros ()-t) 40) {_bits [idx] | = маска;} маска >> = 1; эгерде (маска == 0) // кийинки байт? {Mask = 128; idx ++;}} DHTLIB_OK кайтаруу;}

4 -кадам: DHT колдоо үчүн Pymata4 өзгөртүү

private_constants.h

DHTти колдоо үчүн, биз бул файлга жаңы пин-типти жана SysEx билдирүүлөрүн кошуубуз керек:

# пин режимдери INPUT = 0x00 # pin катары коюлган OUTPUT = 0x01 # pin ANALOG = 0x02 # аналогдук пин аналогдук режимде PWM = 0x03 # санариптик PWM чыгаруу режиминде SERVO = 0x04 # Servo чыгаруу режиминде I2C = 0x06 # пин I2C орнотуусуна киргизилген STEPPER = 0x08 # степпер режиминдеги каалаган пин SERIAL = 0x0a PULLUP = 0x0b # SUNAR режиминдеги каалаган пин SONAR = 0x0c # SONAR режиминдеги каалаган пин TONE = 0x0d # PIXY = 0x0e # pixy камера режими үчүн корголгон DHT = 0x0f # DHT сенсор IGNORE = 0x7f # DHT SysEx буйрук билдирүүлөрү DHT_CONFIG = 0x64 # dht config буйругу DHT_DATA = 0x65 # dht сенсорунун жообу

Кошулган пин түрү жана SysEx буйруктары FirmataExpressке кошулган FirmataConstants.h маанилерине дал келиши керек.

pymata4.py

Pymata4 Python сөздүгүн колдонуп, келген Firmata билдирүүсүн билдирүү иштетүүчү менен тез байланыштырат. Бул сөздүктүн аталышы report_dispatch.

Сөздүккө кирүү формасы:

{MessageID: [message_handler, иштетиле турган маалымат байттарынын саны]}

Кирүүчү DHT билдирүүлөрдү иштетүү үчүн сөздүккө жазуу кошулду:

{PrivateConstants. DHT_DATA: [self._dht_read_response, 7]}

Билдирүүдө 7 байт маалымат Arduino санарип пин номери, DHT түзмөгүнүн түрү (22 же 11) жана 5 байт чийки маалымат.

_Dht_read_response методу билдирилген каталарды текшерет. Эгерде билдирилген каталар жок болсо, нымдуулук жана температура Arduino DHTNew китепканасынан алынган алгоритмдин жардамы менен эсептелет.

Эсептелген баалуулуктар колдонуучу берген кайра чалуу ыкмасы аркылуу билдирилет. Алар ошондой эле ички pin_data маалымат структурасында сакталат. Акыркы билдирилген маани dht_read ыкмасын колдонуу менен pin_data сурамжылоо аркылуу кайра чакыртылышы мүмкүн.

Жаңы DHT түзмөгүн конфигурациялоо

Жаңы DHT түзмөгүн кошуп жатканда, set_pin_mode_dht ыкмасы чакырылат. Бул ыкма pin_data санарип казыктары үчүн жаңыртылат. Ал ошондой эле DHT_CONFIG SysEx билдирүүсүн түзүп, FirmataExpressке жөнөтөт.

5 -кадам: Жыйынтыктоо

Көрүнүп тургандай, жаңы түзмөккө Firmata колдоосун кошуу Arduino FirmataExpress сервер кодун жана Python негизделген pymata4 кардар кодун өзгөртүүңүздү талап кылат. FirmataExpress кодун оңдоо кыйын болушу мүмкүн. FirmataExpressке мүчүлүштүктөрдү оңдоого жардам берүү үчүн printData аттуу ыкма кошулган. Бул ыкма FirmataExpressтен маалымат баалуулуктарын жөнөтүүгө мүмкүндүк берет жана аларды pymata4 консолуна басып чыгарат.

Бул функция символдордун көрсөткүчүн жана көргүңүз келген маанини талап кылат. Эгерде маалыматтын мааниси argc деп аталган өзгөрмөдө камтылган болсо, анда printDataга төмөнкү параметрлер менен чалыңыз.

printData ((char*) "argc =", argc);

Суроолоруңуз болсо, комментарий калтырыңыз, мен жооп берүүгө кубанычтамын.

Бактылуу коддоо!

Сунушталууда: