मैं मोनो ढांचे के तहत लिनक्स के लिए एक छोटा सा एप्लीकेशन लिखना शुरू कर रहा हूं, एप्लिकेशन अनिवार्य रूप से बहुत कम उपयोगकर्ता इंटरैक्शन के साथ एक छोटा कियोस्क फ्रंट-एंड होगा। यह उसी एप्लिकेशन के पिछले संस्करण को प्रतिस्थापित करना है जो 100% टेक्स्ट/कंसोल आधारित था।मोनो में एक लिनक्स फ्रेमबफर का उपयोग कैसे करें (मोनो कैरो/जीटीके #)?
चूंकि यह रास्पबेरी पीआई पर चलता है, मैं एक्स चलाना टालना चाहता हूं और मेरा एप्लिकेशन सीधे फ्रेमबफर से बात करना चाहता हूं। मैं मोनो फ्रेमवर्क और सी # का उपयोग अपनी विकास भाषा के रूप में कर रहा हूं क्योंकि मुझे सी # बहुत अच्छी तरह से पता है। इस उदाहरण में पोर्टेबिलिटी कोई मुद्दा नहीं है।
मुझे उचित पुस्तकालयों और बाइंडिंग खोजने में कुछ परेशानी हो रही है ताकि मुझे मोनो से फ़्रेमबफर तक पहुंचने दें। GTK#
पुस्तकालय सभी एक्स 11 इंटरफ़ेस को स्पष्ट रूप से बाध्य करते हैं, और किसी भी मामले में, एआरएम सॉफ्ट-फ्लोट (आर्मेल) आर्किटेक्चर के लिए डेबियन व्हीज़ी में प्री-बिल्ट जीटीकेएफबी लाइब्रेरी नहीं दिखते हैं।
Mono.Cairo
पुस्तकालय एक DirectFBSurface
प्रकार को उजागर करता है, फिर भी है कि सतह के लिए निर्माता दो IntPtr
तर्क लेता है और दस्तावेज नहीं है, इसलिए मैं नहीं जानता कि क्या निर्माता ठीक से एक काहिरा सतह के रूप में फ्रेमबफर आरंभ करने में पारित किया जाना चाहिए।
क्या किसी ने लिनक्स फ्रेमबफर से बात करने के लिए मोनो और सी # के साथ काम किया है, और यदि हां, तो क्या आप एफबी पर ड्राइंग शुरू करने और शुरू करने के लिए बुनियादी उदाहरण प्रदान कर सकते हैं या सहायता के लिए ऑनलाइन दस्तावेज को इंगित कर सकते हैं?
अद्यतन 1
मैंने सोचा कि मैं दोनों निर्माता मापदंडों के लिए null
साथ DirectFBSurface instantiating, निम्न कोड के साथ की कोशिश करेंगे:
public static void Main(string[] args)
{
// ...
DirectFBSurface surface = new DirectFBSurface(((IntPtr)null), ((IntPtr)null));
// ...
}
मैं इस एक अपवाद का संकेत उत्पन्न करने के लिए उम्मीद है कि null
पैरामीटर मानों की अनुमति नहीं थी, हालांकि ऐसा लगता है कि DirectFBSurface को या तो Mono.Cairo
में लागू नहीं किया गया है या डेबियन व्हीज़ी (आर्मेल) के साथ भेजे गए लाइब्रेरी में संकलित नहीं किया गया है:
Unhandled Exception: System.EntryPointNotFoundException: cairo_directfb_surface_create
at (wrapper managed-to-native) Cairo.NativeMethods:cairo_directfb_surface_create (intptr,intptr)
at Cairo.DirectFBSurface..ctor (IntPtr dfb, IntPtr dfb_surface) [0x00000] in <filename unknown>:0
at Info.Insch.SandBox.TestCairo.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
तो ऐसा लगता है कि Mono.Cairo
दृष्टिकोण शायद मेरी जरूरतों के लिए काम नहीं करेगा, और जैसा कि ऊपर वर्णित है, GTK#
फ्रेमबफर पुस्तकालय armel के लिए डेबियन खरखरा का हिस्सा बनने का प्रतीत नहीं होता। क्या लाइब्रेरी का एक और सेट है जिसे मैं लिनक्स फ्रेमबफर को मोनो से एक्सेस करने के लिए उपयोग कर सकता हूं?
क्या यह आप हैं? http://www.raspberrypi.org/phpBB3/viewtopic.php?t=15788&p=160933 – IanNorton
यदि ऐसा है, तो आप काहिरा में एक सॉफ्टवेयर सतह पर आकर्षित कर सकते हैं और इसे हर बार एसडीएल सतह पर फिसल सकते हैं। – IanNorton
ऐसा प्रतीत होता है कि आपको मूल पॉइंटर को मूल IDirectFB और IDirectFBSurface में पास करने की आवश्यकता है। Mono.Cairo के लिए स्रोत यहां दिया गया है: https://github.com/mono/mono/blob/master/mcs/class/Mono.Cairo/Mono.Cairo/DirectFBSurface.cs और यहां उस निर्माता के लिए कैरो स्रोत है: http : //cgit.freedesktop.org/cairo/tree/src/cairo-directfb-surface.c#n499 – joncham