API ทั่วไปใน C หรือ C ++ สำหรับ IoT


9

API (หรือไลบรารี) ทั่วไปหรือปกติใน C หรือ C ++ สำหรับ IoT คืออะไรในแง่ของการมีเอกสารชุดของอินเตอร์เฟสการเขียนโปรแกรม (เช่น POSIX สำหรับระบบปฏิบัติการ Qt สำหรับ GUI ฯลฯ .... )

นี้หน้าสั้นกระตุ้นคำถามของฉัน (ฉันสนใจในการพัฒนาเครื่องมือในการวิเคราะห์รหัสแหล่งที่มาคงที่สำหรับ IOT) ฉันไม่เพียง แต่กำลังมองหามาตรฐานทางกฎหมาย แต่ยังรวมถึง API หรือไลบรารีที่ใช้กันทั่วไปใน C หรือ C ++ ด้วยไฟล์ส่วนหัวที่มีอยู่สำหรับพวกเขาในโดเมนอุตสาหกรรมต่างๆ ฉันไม่สนใจWeb API s (อนุสัญญาที่กำหนดคำขอ HTTP) หรือเพียงแค่ในโปรโตคอลเครือข่ายโดยไม่ต้อง API หรือห้องสมุดการใช้พวกเขา

(ดังนั้นฉันไม่สนใจในการพัฒนาแอปพลิเคชัน IoT แต่ฉันต้องการพัฒนาเครื่องมือวิศวกรรมซอฟต์แวร์ที่ทำงานและวิเคราะห์ซอร์สโค้ดเพื่อช่วยผู้พัฒนาซอฟต์แวร์ IoT)

ฉันยังอาจสนใจโดยเฉพาะ IoT APIs หรือห้องสมุดอุตสาหกรรมเช่นในด้านการดูแลสุขภาพ, การขนส่ง, การขนส่ง, สมาร์ทกริด, อาคารสมาร์ท ฯลฯ ตราบเท่าที่เป็น C หรือ C ++ API หรือไลบรารี


ฉันอยู่ในกลุ่มวิจัยที่ทำงานเกี่ยวกับการวิเคราะห์ซอร์สโค้ดแบบคงที่และเราต้องการพัฒนาเครื่องมือในการวิเคราะห์ซอร์สโค้ด C หรือ C ++ เพื่อช่วยผู้พัฒนาซอฟต์แวร์ IoT

อย่างไรก็ตามฉันต้องหาวิธีที่จะได้รับเงินก่อนที่จะทำสิ่งนี้

เราขอแนะนำให้พัฒนาเครื่องมือพิเศษ (โดยเฉพาะโอเพนซอร์ซเหนือเทคโนโลยีที่มีอยู่) สำหรับนักพัฒนาและวิศวกรที่เขียนซอร์สโค้ด (ใน C, C ++ และ Ada หากต้องการ ... ) กำหนดเป้าหมายแพลตฟอร์ม IoT เครื่องมือนี้จะรวมอยู่ในชุดพัฒนาซอฟต์แวร์เป้าหมาย เครื่องมือนี้สามารถช่วยผู้พัฒนาซอฟต์แวร์ IoT โดยการวิเคราะห์และตรวจสอบความถูกต้องของซอร์สโค้ดกับกฎการเข้ารหัส, ค่าคงที่และแนวปฏิบัติที่ดีที่เฉพาะเจาะจงกับกรอบซอฟต์แวร์เหล่านี้ วัตถุประสงค์หลักคือเพื่อปรับปรุงคุณภาพซอฟต์แวร์และเพื่อเร่งเวลาออกสู่ตลาด หากเกี่ยวข้องเครื่องมือสามารถทำการปรับซอร์สโค้ดเฉพาะเพื่อปรับปรุงประสิทธิภาพของซอฟต์แวร์และ / หรือเพื่อลดขนาดรหัส


NB นี้IOT คราสหน้าเว็บเป็นรายชื่อหลายมาตรฐาน ฉันสนใจ API และไลบรารีที่ใช้งานพวกเขา (และมาตรฐานเฉพาะของ IoT de facto domain อื่น ๆ ) หากการพัฒนาตัววิเคราะห์ซอร์สโค้ดสำหรับพวกเขานั้นคุ้มค่า


@Basile นี่จะเป็นโฆษณาหรือ FOSS หรือไม่ ไม่ว่าในกรณีใดมีวิธีใดบ้างที่เราสามารถติดตามความคืบหน้าของคุณ ฉันรู้ว่าอาจใช้เวลาเป็นเดือนหรือเป็นปีดังนั้น UTL ในการดูหรือรายชื่อผู้รับจดหมายจะได้รับการต้อนรับอย่างมาก
Mawg กล่าวว่าการคืนสถานะโมนิก้า

ฉันทำงานกับซอฟต์แวร์ฟรีมาหลายสิบปีแล้วดังนั้นฉันหวังว่ามันจะเป็น FOSS อย่างไรก็ตามฉันต้องเข้าร่วมเป็นหุ้นส่วน (หรือเพื่อขอรับเงินทุน R&D หรือเงินทุนอื่น ๆ ) เพื่อเริ่มทำงานกับสิ่งนี้
Basile Starynkevitch

1
คุณหมายถึงสิ่งต่างๆเช่น CMSIS หรือไม่ keil.com/pack/doc/CMSIS/General/html/index.html
pjc50

1
MQTTและ Mosquitto ค่อนข้างเป็นที่นิยมเมื่อพูดถึง IoT บางทีLibmosquitto API เป็นเป้าหมายที่ดีสำหรับโปรแกรมวิเคราะห์โค้ดของคุณ?
Bence Kaulics

1
มีแง่มุมใดของ IoT โดยเฉพาะอย่างยิ่งที่คุณสนใจ มีด้านการสื่อสารเป็น Bence Kaulics ปัญหา (MQTT, CoAP, 6LoWPAN ฯลฯ ) หรือมีแพลตฟอร์ม IOT ทั้งหมดเช่นสิ่ง Androidหรืออูบุนตู IOT ส่วนไหนที่คุณต้องการเล่นงาน
Aurora0001

คำตอบ:


8

Basile ฉันคิดว่าเราขาดความแตกต่างที่ดีที่นี่

เมื่อคุณพูดถึง Posix เช่นมาตรฐานสำหรับ IoT ฉันคิดว่าคุณกำลังพูดถึงไลบรารีที่รวมโพรโทคอล

ในฐานะที่เป็นหนึ่งในผู้ที่ได้รับการว่าจ้างสำหรับ ( ไอ ) ทศวรรษที่ผ่านมาการดำเนินการโปรโตคอลสำหรับโทรศัพท์และการสื่อสารผ่านดาวเทียมผมสามารถพูดได้ (ตามที่คุณอาจทราบ) ที่โปรโตคอลเหล่านี้โดยต้องแล้วกำหนดอย่างเคร่งครัด ตัวอย่างเช่น Zigbee ถูกควบคุมโดยhttps://en.wikipedia.org/wiki/IEEE_802.15.4

มาตรฐานเหล่านี้วางข้อความที่จะส่งและกำหนดว่าไบต์ 0 หมายถึงสิ่งนี้ไบต์ 1 ถึง 4 หมายความว่า ฯลฯ เพื่อให้อุปกรณ์จากผู้ผลิตที่แตกต่างกันสามารถสื่อสารกันได้ (นั่นคือทฤษฎีอย่างไรก็ตามฉันสามารถบอกคุณได้ว่า เรื่อง ;-)

ดังที่ฉันได้กล่าวไปแล้วว่าสำหรับโปรโตคอลใดก็ตามอาจมีผู้ผลิตมากมายเหลือเฟือ และสำหรับผู้ผลิตรายใดก็ตามอาจมีหลายไลบรารีซอฟต์แวร์ซึ่งเป็นปัญหาของคุณ

งานของคุณยากเกินไปตราบใดที่มี APIS จำนวนมากที่มีอยู่ซึ่งห่อแต่ละโปรโตคอล

น่าเสียดายที่จะมี API ที่คล้าย Posix เฉพาะเมื่อ บริษัท ใด บริษัท หนึ่งมีอำนาจเหนือกว่า อาจมีความเป็นไปได้เล็กน้อยหากรัฐบาลใหญ่ใช้เงินจำนวนมาก แต่ฉันไม่เห็นว่าจะเกิดอะไรขึ้น โอกาสเดียวที่ฉันเป็นความพยายามเหมือน Linux โดยชุมชนโอเพ่นซอร์ส


แต่ฉันไม่คิดว่าคุณจะทำให้ชัดเจนพอที่คุณจะไม่ได้เป็นเพียงแค่เครื่องวิเคราะห์รหัสแบบคงที่ว่ามันไม่ได้มีไว้สำหรับรหัสทั่วไป แต่สำหรับบาง API ที่เฉพาะเจาะจง คุณพูดแบบนั้น แต่ไม่มากพอ IMO เมื่อคุณกำหนดอย่างแน่นอนคุณจะรู้ว่าโครงการของคุณคืออะไร หากคุณรู้อยู่แล้วคุณดูเหมือนจะไม่เน้น (แต่บางทีฉันอ่านไม่ดีพอรีบร้อนระหว่างการประชุมสองครั้ง)

ไวยากรณ์ของ POSIX API ถูกตรวจสอบโดยคอมไพเลอร์เช่นเดียวกับไวยากรณ์ของ API ใด ๆ ที่คุณศึกษา ดังนั้นฉันเดาว่าคุณกำลังมองหารหัสที่อาจเป็นอันตรายเช่นการใช้ทรัพยากรหน่วยที่ได้รับการจัดสรรไม่ได้ช่วยให้ทรัพยากรที่จัดสรรไว้ถูกต้อง

มันฟังดูเป็นโครงการที่ยอดเยี่ยมและฉันติดดาวคำถามนี้


ป้อนคำอธิบายรูปภาพที่นี่


1
ฉันสนใจซีแมนทิกส์ของ API มากขึ้น (ไม่ใช่เฉพาะหรือส่วนใหญ่ของไวยากรณ์ ) และใช่ฉันต้องการวิเคราะห์โค้ดโดยใช้ API นั้นสำหรับสิ่งที่คุณพูดถึง (และอีกมากมาย) ขณะนี้เป็นเพียงแนวคิดคร่าวๆ (และฉันจะปรับให้เข้ากับความต้องการ) และฉันยังคงพยายามหาวิธี (โครงการความร่วมมือการวิจัยและพัฒนาที่สะดุดตา) เพื่อรับเงินทุน
Basile Starynkevitch

BTW ตัวอย่าง Qt แสดงให้เห็นว่า API (และไลบรารี) สามารถกลายเป็นสิ่งสำคัญและอาจมีอิทธิพลแม้ว่าจะไม่มีมาตรฐานทางกฎหมายก็ตาม
Basile Starynkevitch

5

มาตรฐานสำหรับโปรโตคอลเครือข่ายที่หลากหลายได้ถูกกำหนดไว้แล้ว สิ่งที่ดูเหมือนว่าคุณหวังว่าจะได้รับคือ API ที่ใช้พฤติกรรมมาตรฐานที่มีอยู่ในอุปกรณ์ IoT บางอย่างเช่นฟังก์ชั่น Light () ที่สามารถเปิด - ปิดไฟหรือหรี่แสงได้ตามความสว่าง DoorSensor () ที่สามารถติดอาวุธหรือปลดอาวุธหรือสามารถลงทะเบียนสำหรับการแจ้งเตือนเกี่ยวกับการเปิดประตูหรือเหตุการณ์ปิดประตู; สิ่งนั้น อย่างไรก็ตามฉันไม่ทราบเกี่ยวกับไลบรารี API ใด ๆ ที่ไม่เฉพาะเจาะจงแอปพลิเคชัน

ถ้าใครมีหนึ่งคุณอาจพบว่ามีบางสิ่งบางอย่างในDomoticz มันเป็นตัวควบคุมอัตโนมัติแบบโอเพ่นซอร์สในภาษา C ++


5

การตอบสนองอย่างรวดเร็วฉันไม่คิดว่าสำหรับ IoT มีห้องสมุดประเภทพิเศษฉันจะบอกว่า IoT นั้นเป็น " ระบบฝังตัวใหม่ " โดยทั่วไปพวกเขาเพิ่งเปลี่ยนชื่อและเพิ่มการเชื่อมต่อกับคลาวด์

ดังนั้นการตอบสิ่งที่ฉันใช้สำหรับการเขียนโปรแกรม C ++ หน้าข้อมูลอ้างอิงของฉันคือhttp://www.cplusplus.com/

โดยทั่วไปแล้วสำหรับ IoT คุณจะต้องมีไลบรารีการสื่อสารไม่ว่าคุณจะใช้โปรโตคอลใด (USB, TCP / IP, UDP, ZigBee, ฯลฯ )

นอกจากนี้ถ้าคุณมีการสื่อสารแล้วคุณจะต้องรักษาความปลอดภัย / การเข้ารหัส

และส่วนที่เหลือจะขึ้นอยู่กับส่วนของฮาร์ดแวร์ที่คุณกำลังควบคุมหรือวัด คุณจะต้องห้องสมุด (API / Firmware) สำหรับฮาร์ดแวร์ดังกล่าว

แน่นอนมีหลายสิ่งที่ฉันหายไปที่นี่ ... เรามาดูคำตอบอื่น ๆ


2
โดยพื้นฐานแล้วคุณกำลังยืนยันสัญชาตญาณขั้นต้นของฉันว่า IoT เป็นเพียงคำศัพท์ใหม่สำหรับการประมวลผลแบบฝังตัวอาจเป็นระบบ Linux ที่ฝังอยู่ใช่ไหม
Basile Starynkevitch

@BasileStarynkevitch มันขึ้นอยู่กับคลาสของอุปกรณ์ ตัวติดตามฟิตเนส (ตรงข้ามกับส่วนขยายโทรศัพท์ที่ติดตั้งบนนาฬิกา) ไม่ได้รัน Linux โหนดที่ขับเคลื่อนด้วยตัวเองไม่สามารถรัน Linux ได้ โหนดศูนย์กลางซึ่งทำงานแบบกระจาย) อาจเรียกใช้ Linux ดังนั้นคำพูดของฉันเกี่ยวกับสแต็คขยายจากขอบสู่คลาวด์
Sean Houlihane

1
ไม่เป็นไร ดังนั้นAPI หรือไลบรารีที่ใช้กันทั่วไปในอุปกรณ์เหล่านี้คืออะไร
Basile Starynkevitch

1
เนื่องจาก ZigBee ดูเหมือนกับโปรโตคอลเครือข่ายจึงอยู่นอกขอบเขต อย่างไรก็ตาม API ที่มีอยู่ทั่วไปใน C หรือ C ++ การใช้ ZigBee น่าสนใจ
Basile Starynkevitch

4

แบบฝังรวมทั้งการสื่อสารที่ปลอดภัยพร้อมการจัดสรร (การจัดการอุปกรณ์) รวมถึงการอัปเดต OTA นี่เป็นแพคเกจซอฟต์แวร์ที่มีขนาดใหญ่และยังเป็นแพลตฟอร์มใหม่สำหรับการพัฒนา

มีผู้ให้บริการหลายรายที่เสนอโซลูชันคลาวด์โดยทั่วไปพวกเขาจะมี API ลูกค้าของตัวเองและระบบปฏิบัติการปลายทางที่เลือก

เท่าที่ฉันสามารถบอกได้โปรโตคอลไร้สายต่าง ๆ ไม่ได้กำหนดซอฟต์แวร์สแต็คใด ๆ จริงๆดังนั้นตัวเลือกของคุณจะต้องถูกขับเคลื่อนด้วยภาพรวมไม่ใช่ไคลเอนต์ API ปัจจัยหนึ่งที่มีผลต่อการตัดสินใจคือโอเพนซอร์สนั้นสำคัญสำหรับสแต็กในแอปพลิเคชันของคุณ


1
ฉันไม่ได้พัฒนาแอพพลิเคชั่น IoT แต่ฉันต้องการพัฒนาเครื่องมือวิเคราะห์ซอร์สโค้ดแบบสแตติกเพื่อประโยชน์ของนักพัฒนาซอฟต์แวร์ IoT
Basile Starynkevitch

1
ตกลงดังนั้นจึงมี (เดา) 4 หรือ 5 กองที่แตกต่างกันที่เกี่ยวข้องและคุณจำเป็นต้องพิจารณาพวกเขาทั้งหมดหากคุณต้องการที่จะทำตามไม่ว่าสองหรือสามจะกลายเป็นที่โดดเด่นในเวลาไม่กี่ปี
Sean Houlihane

1
คุณคิดอย่างไรเกี่ยวกับ API หรือไลบรารี (ใน C หรือ C ++) กรุณาตั้งชื่อพวกเขาในคำตอบของคุณ!
Basile Starynkevitch

1
ถ้าคุณเกิดขึ้นที่จะรู้ว่าทีมงานบางคนที่ทำงานเกี่ยวกับ API ดังกล่าวกรุณาส่งคำถามของฉันพวกเขาและพวกเขาชี้gcc-melt.org/IoT-03-interest-Starynkevitch.html
Basile Starynkevitch

3

ฉันคิดว่าวัตถุประสงค์ของคุณค่อนข้างคล้ายกับ BOOST:

เพิ่มไลบรารี C ++

พวกเขามุ่งมั่นที่จะสร้าง "การปฏิบัติที่มีอยู่" และให้การใช้งานอ้างอิงเพื่อให้ห้องสมุด Boost เหมาะสำหรับมาตรฐานในที่สุด

บางที Boost อาจเป็นผู้เล่นหลักใน IoT: แน่นอนว่ามันได้ทำการปรับปรุงที่ยอดเยี่ยมสำหรับ C ++


1
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
anonymous2

2

IoTivity เป็นดำเนินการอ้างอิงของOCF ข้อมูลจำเพาะ คุณสามารถค้นหาเอกสารและรหัสที่มาที่พื้นที่เก็บข้อมูล GitHub ของพวกเขา

จากรายการคุณสมบัติ :

  • ฟังก์ชั่นหลักที่เขียนใน C สำหรับการปรับใช้กับอุปกรณ์ที่ จำกัด
  • ฟังก์ชันการทำงานส่วนใหญ่พร้อมใช้งานจาก C และ C ++

API เฟรมเวิร์กของพวกเขาอนุญาตการค้นหาการส่งข้อมูลการจัดการข้อมูล (การเก็บการจัดเก็บและการวิเคราะห์) และการจัดการอุปกรณ์ (เช่นการจัดเตรียมการวินิจฉัย) ผ่านโปรโตคอลต่างๆเช่น Bluetooth, Wi-Fi, ZigBee และ Z-Wave

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.