Arduino: يتطلب سطر الأوامر X11

تم إنشاؤها على ١ أبريل ٢٠١٤  ·  45تعليقات  ·  مصدر: arduino/Arduino

أرغب في استخدام CLI في Arduino 1.5 على Raspberry Pi بدون رأس (يمكن الوصول إليه من خلال SSH فقط ، بدون بيئة X11) ، لإنشاء منصة تكامل مستمرة.

عند استدعاء arduino في سطر الأوامر ، تشكو Java من عدم ضبط بيئة X11 وهي مطلوبة (وهو ما لا ينبغي أن يكون ضروريًا لبرامج CLI).

إخراج CLI:

$ arduino --verify foo.ino
Exception in thread "main" java.lang.ExceptionInInitializerError
    at processing.app.Base.main(Base.java:113)
Caused by: java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at sun.awt.HeadlessToolkit.getMenuShortcutKeyMask(HeadlessToolkit.java:231)
    at processing.core.PApplet.<clinit>(Unknown Source)
    ... 1 more
zsh: exit 1     arduino --verify foo.ino
CLI IDE Bug

التعليق الأكثر فائدة

إذا كنت تغلق هذا ، فالرجاء توثيق صريح بأن وضع "CLI" لمحرر اردوينو + زر الماكرو ليس في الواقع وضع CLI.

لقد أهدرت للتو مجموعة من الوقت وقمت بتثبيت 220 ميجابايت من سعة التحميل فقط لاكتشاف أن وضع CLI معطل تمامًا وهو في الواقع مجرد وضع واجهة المستخدم الرسومية دون بعض مكالمات السحب.

يجب أن تكون حقيقة أنك بحاجة إلى تثبيت X11 وظيفي بخط عريض أعلى صفحات المستندات الرسمية التي تشير إليه ، مثل http://playground.arduino.cc/Learning/CommandLine

ال 45 كومينتر

يبدو أن هذا مرتبط بـ # 1970 ، لكنها على الأرجح مشكلة منفصلة. سأضع هذا في قائمتي للتحقيق ، شكرًا على الإبلاغ.

تضمين التغريدة

بالتفكير في هذا الأمر أكثر قليلاً ، أعتقد أنه لن يكون من السهل إصلاحه. في الوقت الحالي ، عند تشغيل أوامر CLI ، تتم جميع عمليات التهيئة العادية بشكل طبيعي ، باستثناء إنشاء النافذة وإظهارها. لإصلاح ذلك ، سنحتاج إلى إعادة تشكيل رمز واجهة المستخدم الرسومية ليكون أقل اقترانًا بوظيفة التجميع ، والتي لن تكون سهلة للغاية. يجب أن نفعل هذا في النهاية على أي حال ، لكن هذا سيتطلب على الأرجح جهدًا كبيرًا.

أود التعليق على أن لدي نفس المشكلة ، وأود أن أكون قادرًا على تشغيل أوامر التحويل والتحميل عبر SSH (بدون X11).

مرحبًا matthijskoijman نفس المشكلة على Debian Virtual Machine بدون واجهة المستخدم الرسومية ، لقد حاولت استخدام arduino-mk ، لكن لا يعمل على أي حال ...

نفس المشكلة مع 1.5.8 على Debian Wheezy (Raspbian) الذي يعمل في Raspberry Pi.

نفس المشكلة - محاولة إجراء تكامل مستمر على عقدة Jenkins OS X للتحقق من ملفات Arduino ، لكن يجب أن يكون بدون رأس. لقد جربت ino لكن يبدو أنها قديمة جدًا. هل هناك أي حل آخر في هذه الأثناء؟ لقد سمعت عن bii hive ،

في صحتك،
راكيل

نحن نستخدم الجنكينز في كل وقت. للتغلب على احتياجات IDE ، قمنا بتثبيت https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin

شكرًا جزيلاً ffissore ،

آسف إذا كان هذا قد أصبح خارج الموضوع قليلاً. ffissore ، في أي منصة تقوم بتشغيل هذا المكون الإضافي؟ أحاول اختبار التحقق من Arduino على عقدة Jenkins Mac وبعد الكثير من التكوين والعمل ، لقد علقت.

على نظام التشغيل Mac ، لا نستخدم هذا المكون الإضافي لأنه يتم تشغيل العقدة عبر java web start. هذا يسمح لعملية جافا على عقدة ماك للوصول إلى الشاشة. في الواقع ، بين الحين والآخر ، ينبثق IDE وينفذ اختباراته الوظيفية

لست متأكدًا من فهمي. هل هذا يعني أنه من المستحيل اختبار ذلك على عقدة Mac؟ :(

بل على العكس تماما. نحن نفعل ذلك في كل وقت. لكنك تحتاج إلى بدء تشغيل عقدة mac بشكل صحيح. لا أتذكر البرنامج التعليمي الذي استخدمته لإعداده ، ولكن النتيجة هي أن مستخدم mac الرئيسي لدينا لديه تطبيق بدء التشغيل "start jenkins" الذي يتصل بإتقان استخدام java web start

حسنا أرى ذلك. سوف جوجل ذلك! شكرا جزيلا!

إغلاق كما wontfix. سيتطلب الإصلاح تفكيك IDE. نحن نقوم بخطوات صغيرة كل يوم ، لكن لا يمكننا تحديد جدول زمني

إذا كنت تغلق هذا ، فالرجاء توثيق صريح بأن وضع "CLI" لمحرر اردوينو + زر الماكرو ليس في الواقع وضع CLI.

لقد أهدرت للتو مجموعة من الوقت وقمت بتثبيت 220 ميجابايت من سعة التحميل فقط لاكتشاف أن وضع CLI معطل تمامًا وهو في الواقع مجرد وضع واجهة المستخدم الرسومية دون بعض مكالمات السحب.

يجب أن تكون حقيقة أنك بحاجة إلى تثبيت X11 وظيفي بخط عريض أعلى صفحات المستندات الرسمية التي تشير إليه ، مثل http://playground.arduino.cc/Learning/CommandLine

جرب PlaformIO ، إنه يعمل بشكل مثالي بالنسبة لي.

wollew - هذا هو المكان الذي انتهيت منه ، بعد المرور بـ 3 أو 4 خيارات أخرى.

لاحظ أن هذا موثق بالفعل على https://github.com/arduino/Arduino/blob/ide-1.5.x/build/shared/manpage.adoc#bugs ، وهو التوثيق الأساسي لوضع سطر الأوامر كما هو مرتبط من الصفحة أشرت إليه.

agdl ، هل يمكنك تحديث الرابط على http://playground.arduino.cc/Learning/CommandLine لتوجيهه إلى https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc نظرًا لأن الرابط الحالي قد ينتهي به الأمر إلى التعطل في المستقبل.

أنا أعيد فتح هذه المشكلة ، لأنني أعتقد أنه يجب إصلاح هذه المشكلة في مرحلة ما. إنه يتطلب إعادة هيكلة كبيرة للشفرة ، لذا لن يكون هذا شيئًا سيتم إصلاحه قريبًا ، ولكن "wontfix" يبدو أنه قرار صعب.

matthijskooijman آسف ولكن لاحظت العلامة لي .... تم تحديث الرابط آسف مرة أخرى

القيام بذلك مع vi يطلب بالتأكيد مشكلة. إن القيام بذلك مع الكسوف يتعلق في الغالب بالحصول على الإرادة للبدء و 1/2 يوم لأخذه حتى النهاية. بيئة تطوير متكاملة ليست كبيرة جدًا. إنه غير منظم بعض الشيء ، لكن لا يوجد انعكاس أو أي تبعيات غير مرئية في أي مكان. حتى لو استغرق الأمر يومًا من التركيز ، فلا يزال مجرد يوم واحد لمنتج موجود منذ سنوات ...
الشيء الوحيد الذي يقوم به هو أنه يعني تحمل المسؤولية عن كل شيء ، والذي يبدو أنه بالنظر إلى كيفية تغيير بعض التعليمات البرمجية على مر السنين ، كان شيئًا أراد البعض تجنبه (أفترض من منطلق الرغبة في أن أكون قادرًا لسحب أي إصلاحات / تحسينات من المعالجة بسهولة). لكن الحقيقة هي أن الشفرة فقدت التوافق منذ فترة ... لسوء الحظ دون الاستفادة حتى الآن من الحرية الناتجة (أعني في جوهرها).
شخص ما يجب أن يعطيها لقطة ، إنها IMHO حقًا ليست معقدة كما تبدو.

إذا كان ذلك مفيدًا ، فقد أضع حلاً هنا: http://playground.arduino.cc/Main/Headless (من قائمة بريد المطورين ، بفضل ماثيو بيكلر)

آه ، كيف لا تزال هذه مشكلة؟ لا يزال الحل أعلاه يفترض عرض جافا. export JAVA_TOOL_OPTIONS='-Djava.awt.headless=true' لا يساعد ، حتى مع # 5132 حيث لا يزال هناك خطأ على شاشة البداية. ألا توجد طريقة لتجميع وتحميل رسم تخطيطي على شاشة بلا رأس؟

لا يزال غير ثابت ... مؤسف.

ارتطام هذا لأنه يؤثر علينا أيضًا ، تشغيل CLI على جهاز مضمن نفضل حقًا عدم الاضطرار إلى تشغيل Xvfb لفلاش لوحة متصلة. 😄

لمعلوماتك ، كما اقترح wollew ، قمت بالتبديل إلى PlatformIO والتي يمكنها إجراء عمليات إنشاء بدون رأس وتحميل رسومات Arduino. بالنسبة لأولئك الذين يمكنهم تشغيل Python في بيئتهم الخالية من الرأس ، يمكن أن يكون حلًا مؤقتًا. إنه يعمل بشكل عجيب لاختبار Travis على سبيل المثال.

يمكن لإطار عمل PlatformIO متعدد الأهداف والمثير للسخرية أن يفعل ذلك ولا يستطيع IDE الرسمي لـ Arduino فقط. أوه يا

يمكن لإطار عمل PlatformIO متعدد الأهداف والمثير للسخرية أن يفعل ذلك ولا يستطيع IDE الرسمي لـ Arduino فقط. أوه يا

وبغض النظر عن المفارقة ، أود أن أشير إلى حجم العمل المطلوب لتحقيق ذلك. Arduino IDE عبارة عن شوكة معالجة تم تصميمها من البداية كتطبيق واجهة المستخدم الرسومية: بالتأكيد يتطلب المزيد من العمل للحصول على تطبيق CLI "خالص" مقارنة بالتطبيق الذي ... حسنًا ... ولد كأمر فائدة الخط! :-)
ضع في اعتبارك أيضًا أن عدد المستخدمين الذين يقومون بتشغيل IDE من CLI يمثل أقلية صغيرة (ومن يستخدمه "بدون رأس" على Linux هو جزء منهم) ، ولهذا السبب لم تكن هذه المشكلة على رأس أولوياتنا ، نظرًا أيضًا حقيقة وجود حل بسيط.

على أي حال ، لقد ضغطت للتو على https://github.com/arduino/Arduino/pull/5578 الذي يجب أن يحل هذه المشكلة مرة واحدة إلى الأبد.

شكرًا جزيلاً على جهودك في هذا cmaglie

سيكون من الجيد حقًا أن تكون قادرًا على التحقق من إنشاءات Arduino تلقائيًا ، باستخدام سلسلة الأدوات الرسمية.

آسف إذا كنت وقحًا ، فهذا ليس في نيتي ... لقد اندهشت فقط. أنا أعتذر
كما قال njh ، شكرًا جزيلاً لك على عملك الممتاز في هذا الشأن وفي أي قضية أخرى ،cmaglie.

"ضع في اعتبارك أيضًا أن عدد المستخدمين الذين يشغلون IDE من CLI يمثل أقلية صغيرة"
بالنظر إلى كل ما سبق ، كم توقعت؟

تصل "run-arduino-cli-from-a-headless-linux-machine" إلى أقل من 0.01٪ من قاعدة مستخدمينا التي تتكون في الغالب من Windows / Mac مع كمبيوتر مكتبي. راجع للشغل الآن تم إصلاحه ، ولا جدوى من مناقشة هذا الأمر أكثر.

شكرا على هذا العمل! سيمكن جميع أنواع الأشياء من السماح للأشخاص باستخدام محرر النصوص المفضل لديهم أو IDE لرمز اردوينو لإعادة البناء والنشر تلقائيًا.

ما زلت ألاحظ الحاجة إلى حل X11 هذا مؤخرًا مثل الإصدار 1.8.5 ، كجزء من أعمال التطوير على نظام التكامل المستمر لـ Arduino (https://github.com/ianfixes/arduino_ci).

بالإضافة إلى ما أفترضه هو ظهور شاشة البداية ، تم تقديم بعض الأخطاء بشكل بياني بدلاً من وحدة التحكم ، مما تسبب في تعليق - انتظار "موافق" رسومي قبل المتابعة.

هل هناك مفتاح تبديل لسطر الأوامر مفقود؟

لقد لاحظت ذلك أيضًا مع 1.8.5 - حتى لو قمت بتشغيل X Forwarding - حيث تعمل آلاف التطبيقات الأخرى بشكل جيد.

$ arduino
Gtk-Message: 12:07:10.935: GtkDialog mapped without a transient parent. This is discouraged.
java.awt.HeadlessException
        at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:117)
        at processing.app.Base.<init>(Base.java:206)
        at processing.app.Base.main(Base.java:135)

أنا أدير فيدورا 27 داخل QubesOS. لم تحدث هذه المشكلة في وقت سابق ، على الرغم من أنني لم أستخدم Arduino IDE خلال العام الماضي.
رسالة خطأ:

$ arduino
java.awt.HeadlessException
    at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:117)
    at processing.app.Base.<init>(Base.java:206)
    at processing.app.Base.main(Base.java:135)

الناتج dnf info arduino :

Name         : arduino
Epoch        : 1
Version      : 1.8.5
Release      : 4.fc27
Arch         : noarch
Size         : 3.0 M
Source       : arduino-1.8.5-4.fc27.src.rpm
Repo         : <strong i="11">@System</strong>
From repo    : updates
[... description, license, ASO redacted for brevity]

GammaSQ يبدو أنك تستخدم إصدارًا من Arduino IDE مثبتًا عبر مدير الحزم. تم تعديله بطرق غير معروفة من قبل أطراف ثالثة ، والتي قد تكون سبب المشكلة. أوصي بإزالة هذا الشيء وتجربة Arduino IDE الرسمي الذي تم تنزيله من:
https://www.arduino.cc/en/Main/Software

تضمين التغريدة
تشغيل arduino سيطلق Arduino IDE (واجهة المستخدم الرسومية) ، تحتاج إلى تقديم بعض الأوامر للقيام بشيء ما (Complie / Verification / upload ...)

ianfixes
ما هو الأمر الدقيق الذي تقوم بتشغيله؟ يرجى النشر في مشكلة أخرى مع تعليمات إعادة الإنتاج.

5578 يقول إنه أصلح هذا ، ولكن تشغيل اردوينو على امتداد raspbian لا يزال يعطي الخطأ.

لم يتم تعيين متغير DISPLAY X11 ، لكن هذا البرنامج قام بعملية تتطلب ذلك.
في sun.awt.HeadlessToolkit.getMenuShortcutKeyMask (HeadlessToolkit.java:236)
في تجهيز .core.PApplet.(مصدر مجهول)
... 3 أكثر

darrahts أي أمر أطلقت؟

اردوينو 2: 1.0.5

اردوينو - تحميل ../controllerWithDCmotorsNetsblox/controllerWithDCmotorsNetsblox.ino --port / dev / ttyACM0

جربت أيضًا خدعة اردوينو بلا رأس لكنها علقت للتو (على الرغم من عدم وجود رسائل خطأ ، لكن التعليق هو خطأ بحد ذاته)

أنت تقوم بتشغيل Arduino 1.0.5 ، والآن نحن في 1.8.5.

يُرجى إزالة الحزمة القادمة من مستودعات raspbian القديمة جدًا ، وتنزيل الأحدث من arduino.cc.

cmagile سأقسم بحياتي أنني رأيت هذه المشكلة في 1.8.5 لكنني أجريت للتو xdpy مدير عرض الاختراق ، وهو يعمل بشكل جيد.

لا يمكن إعادة. سيتم فتح مشكلة جديدة إذا تكررت مرة أخرى.

شكرا للمتابعة!

نعم ، سيحدث هذا فرقًا كبيرًا (آسف للإسراف!) ، ولكن ما زلت أواجه مشكلات. على sudo apt-get install arduino -y ما زلت أتلقى نفس الخطأ ، ومن الواضح أنني لم أستطع تشغيل arduino --version للتحقق من الإصدار. بعد ذلك ، بالانتقال إلى arduino.cc وتنزيل ملف linux arm tar.bz ، ترك لي هذا:

إضافة اختصار سطح المكتب وعناصر القائمة وارتباطات الملفات لـ Arduino IDE ... المس: لا يمكن لمس "/root/.local/share/applications/mimeapps.list": لا يوجد مثل هذا الملف أو الدليل
/ usr / bin / xdg-mime: 803: / usr / bin / xdg-mime: لا يمكن إنشاء /root/.local/share/applications/mimeapps.list.new: الدليل غير موجود
منجز!

تشغيله بدون sudo أحصل على هذا:

اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل
اللمس: لا يمكن لمس "/home/pi/.local/share/icons/hicolor/.xdg-icon-resource-dummy": لا يوجد مثل هذا الملف أو الدليل

أنا في عملية تثبيت جديدة لتمديد raspbian. بدا هذا مشابهًا لـ # 6116 لكن RESOURCE_NAME هو بالفعل arduino-arduinoide

sudo apt-get install اردوينو -y

darrahts ، من المحتمل أن تحصل على إصدار 1.0.5 ، وهو "الأحدث" من دبيان. من الأفضل الحصول على ملف zip من arduino.cc مباشرة (يوجد إصدار ARM / rpi).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات