เป็นไปได้ (และทำได้) ในการรันแอปพลิเคชั่น. NET บน Raspberry Pi พร้อมMonoหรือไม่?
ถ้าเป็นเช่นนั้นพวกเขาทำงานได้ดีแค่ไหน? GUI พื้นฐานสามารถใช้งานได้หรือประสิทธิภาพที่ไม่ดีนั้น จำกัด ให้กับแอปพลิเคชันบรรทัดคำสั่งจริงหรือไม่
เป็นไปได้ (และทำได้) ในการรันแอปพลิเคชั่น. NET บน Raspberry Pi พร้อมMonoหรือไม่?
ถ้าเป็นเช่นนั้นพวกเขาทำงานได้ดีแค่ไหน? GUI พื้นฐานสามารถใช้งานได้หรือประสิทธิภาพที่ไม่ดีนั้น จำกัด ให้กับแอปพลิเคชันบรรทัดคำสั่งจริงหรือไม่
คำตอบ:
มีคำถาม StackOverflow ค่อนข้างคล้ายกับนี้เป็นโมโนราสเบอร์รี่ Pi อย่างไรก็ตามจากการวิจัยของฉันเองฉันไม่สามารถค้นหาอะไรที่เฉพาะเจาะจงกับ. NET แต่เป็นเพียง C #
คุณสามารถติดตั้งรันไทม์โดยใช้APTบน Debian distro โดยดำเนินการ:
$ sudo apt-get install mono-runtime
คุณยังสามารถ (สมมติว่าคุณมี GUI บางประเภทเช่น LXDE) ติดตั้งMono IDE ช้าด้วย:
$ sudo apt-get install monodevelop
สำหรับArch Linux ARM คุณต้องติดตั้งรันไทม์ผ่านPacmanเช่น:
$ sudo pacman -S mono
Mono IDE สามารถติดตั้งในรูปแบบที่คล้ายกัน:
$ sudo pacman -S monodevelop
ขัดกับความเชื่อที่นิยมรหัสรวบรวม VB.NET ทำงานได้ดีบน Raspberry Pi ภายใต้ Debian อย่างน้อย apt-get install mono-vbnc จากนั้นรัน VB exe ของคุณเป็นอาร์กิวเมนต์สำหรับ mono เช่น monrex yourexe.exe
ฉันยังไม่ได้ทำการทดสอบประสิทธิภาพเนื่องจากฉันไม่ได้เขียนแอพที่เน้นประสิทธิภาพ แต่ดูเหมือนดีมาก
รหัส. NET ที่ใช้. NET Frameworkไลบรารี่ไม่สามารถทำงานบน Raspberry Pi ได้เนื่องจากมันต้องใช้NETMFหรือCLRรุ่นที่เข้ากันได้กับ ARM ณ ตอนนี้ Microsoft ยังไม่ได้เปิดตัว Windows บน ARM (WoA) อ้างถึงการทดลองที่ 19สำหรับ Microsoft Research CLR ใช้งานได้บน ARM
อย่างไรก็ตามการเรียกใช้รหัส. NET (โดยไม่มีการอ้างอิงหรือการใช้. NET Framework Libraries) สามารถทำได้โดยใช้ Mono เนื่องจาก Mono มี CLR สำหรับอุปกรณ์ ARM
โปรดดูการสร้าง Windows สำหรับสถาปัตยกรรมตัวประมวลผล ARMสำหรับข้อมูลเกี่ยวกับ Windows บน ARM (WoA)
ฉันมีแอพพลิเคชั่น. บรรทัดคำสั่ง. NET เพื่อทำงานกับโมโน โดยทั่วไปแล้วแอพนี้ทำอะไรบางอย่างคล้ายกับการส่งต่อพอร์ตโดยรับข้อมูลผ่านทางพอร์ตอนุกรม UART และส่งต่อผ่าน TCP / IP มันใช้คลาส SerialPort, TcpListener, TcpClient และ Socket .NET โดยมีการเปลี่ยนแปลงเพียงเล็กน้อยที่จำเป็นสำหรับรหัสการจัดการ SerialPort ฉันใช้ระบบปฏิบัติการ Debian soft float
ในแง่ของประสิทธิภาพสิ่งแรกที่ฉันเจอคือการชะลอตัวที่สำคัญบางอย่างในโค้ดดีบัก / ติดตามซึ่งจัดรูปแบบอาร์เรย์ของไบต์เป็นสตริงสำหรับการบันทึก มันช้ากว่า 50 เท่าเมื่อเทียบกับการใช้งานบนพีซี
ดังนั้นฉันขอแนะนำให้เขียนการทดสอบหน่วยประสิทธิภาพเมื่อทำการย้ายรหัสที่มีอยู่ไปยัง RPi
สำหรับการทดสอบหน่วย NUnit ทำงานได้ดีบน RPi ...
ในการติดตั้ง NUnit:
sudo apt-get install nunit
วิ่ง:
nunit-console appUnderTest.exe