سلام
برای اجرای یه برنامه گرافیکی روی سیستم عامل لینوکس متنی چیکار باید کرد ؟
بعد از چند وقت برگشتم
برنامه نویسی ویندوز 10 رزبری را با زبان آردوینو تجربه کنید!
ایمج آماده کیوت 5.7 برای بردهای رزبری - آرنج پای - نانوپای - کیوبی - سینلینکس - پاین 64
آموزش راه اندازی اولیه برد EasyARM و کامپایل سورس WinCE
آموزش های فارسی لینوکس - ویندوز - متلب - سیمیولینک - کیوت برای رزبری پای
مشاوره رایگان خرید کامپیوتر های تک بردی فروشگاه کویر الکترونیک
ارتباط با من از طریق پست های انجمن و یا ایمیل یاهو موجود در بخش کاربری
درسته منظورم همین بود ، ببخشید اگه درست نرسوندم
------------------------------
ده روزی درگیر مسابقات دانشگامون بودم نتونستم کارو ادامه بدم ، الآن به یه مشکلی برخوردم
با جاوا تو همه پوشه های سیستمی لینوکس مثل home , mnt, opt و ... میتونم یه فایل تکست درست کنم بجز پوشه sys که کار اصلیم اونجاست
وقتی برنامه رو از طریق ترمینال اجرا میکنم برنامه ارور میده که فایل یا مسیر مورد نظر وجود نداره
نکته خاصی داره دسترسی به این پوشه از طریق نرم افزار ؟
بعد از چند وقت برگشتم
الآن که چک کردم تو محیط دسکتاپ با یوزر روت رفتم تو پوشه sys میخاستم یه پوشه یا یه فایل تکست درست کنم که همون اروری که برنامه جاوا میداد رو نشون داد
بعد از چند وقت برگشتم
برنامه نویسی ویندوز 10 رزبری را با زبان آردوینو تجربه کنید!
ایمج آماده کیوت 5.7 برای بردهای رزبری - آرنج پای - نانوپای - کیوبی - سینلینکس - پاین 64
آموزش راه اندازی اولیه برد EasyARM و کامپایل سورس WinCE
آموزش های فارسی لینوکس - ویندوز - متلب - سیمیولینک - کیوت برای رزبری پای
مشاوره رایگان خرید کامپیوتر های تک بردی فروشگاه کویر الکترونیک
ارتباط با من از طریق پست های انجمن و یا ایمیل یاهو موجود در بخش کاربری
بعد از چند وقت برگشتم
متن برنامه و ارور رو قرار میدم شاید بهتر باشه :
برنامه :
package pkg1;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileOutputStream file = new FileOutputStream("/sys/class/gpio/export");
byte b=3;
file.write(b);
file.close();
}
}
متن ارور :
Exception in thread "main" java.io.IOException: Invalid argument
at java.io.FileOutputStream.write(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.ja va:290)
at pkg1.Main.main(Main.java:16)
بعد از چند وقت برگشتم
ببینید تو سی می تونید این کار رو بکنید؟ مثالش تو لینک زیر هست.
RPi GPIO Code Samples - eLinux.org
Access GPIO from Linux user space | FalsinSoft
نمیدونم در سی فکر میکنم کافیست تا export رو به شکل زیر باز کنید.
لینکهای زیر رو ببینید:کد:fd = open("/sys/class/gpio/export", O_WRONLY);
raspbian - gpio /value file appears with wrong permissions momentarily - Raspberry Pi Stack Exchange
Raspberry Pi View topic - Can't access GPIO using Java ME
این هم یک برنامه جاوا رزبری هست:
کد:package fr.drd.raspberrypi.gpio; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * This is a pure java implementation of a GPIO class that controls Raspberry Pi's GPIOs * It uses the GPIOs file mapping and thus *REQUIRES* root privileges and is not very fast. * It nevertheless can achieve around 30kHz max frequency, which is enough for a lot of applications. * * Usage (example): * (reads state of GPIO_1 and duplicates it onto GPIO_0) * * GPIO myOutputPin = GPIO_0; * GPIO myInputPin = GPIO_1; * myOutputPin.open(); * myInputPin.open(); * myOutputPin.setDirection(GPIO.SENS.out); * myInputPin.setDirection(GPIO.SENS.in); * myOutputPin.output(myInputPin.input()); * myOutputPin.close(); * myInputPin.close(); * * @author druide * */ public enum GPIO { /** * Theses are all the usable GPIOs for Raspberry Pi */ GPIO_0(0),GPIO_1(1),GPIO_4(4),GPIO_7(7),GPIO_8(8),GPIO_9(9),GPIO_10(10),GPIO_11(11),GPIO_14(14), GPIO_15(15),GPIO_17(17),GPIO_18(18),GPIO_21(21),GPIO_22(22),GPIO_23(23),GPIO_24(24),GPIO_25(25); private static final File export = new File("/sys/class/gpio/export"); private static final File unexport = new File("/sys/class/gpio/unexport"); public static enum SENS{in, out}; private String nb; private File value; private File direction; private FileInputStream in; private FileOutputStream out; private GPIO(int nb){ this.nb = "" + nb; this.value = new File("/sys/class/gpio/gpio"+nb+"/value"); this.direction = new File("/sys/class/gpio/gpio"+nb+"/direction"); } /** * Opens a GPIO, that is ask the system to "expose" it through system's files. * GPIOs *MUST* be opened before being used * @throws IOException */ public void open() throws IOException{ FileOutputStream exp = new FileOutputStream(export); exp.write(nb.getBytes()); exp.close(); in = new FileInputStream(value); out = new FileOutputStream(value); } /** * Closes the GPIO, that is closes all opened files and ask the system not to expose it through system's files anymore. * @throws IOException */ public void close() throws IOException{ in.close(); out.close(); FileOutputStream unexp = new FileOutputStream(unexport); unexp.write(nb.getBytes()); unexp.close(); } /** * Changes the direction (in/out) of GPIO. * @param sens One of the values GPIO.SENS.in or GPIO.SENS.out * @throws IOException */ public void setDirection(SENS sens) throws IOException{ FileOutputStream dir = new FileOutputStream(direction); dir.write(sens.toString().getBytes()); dir.close(); } /** * Sets the value of an output pin. * @param bit "true" if you want to have a logical "1" (3.3v) on the pin, or "false" if you want a logical "0" (0v) on the pin. * @throws IOException */ public void output(boolean bit) throws IOException{ out.write(bit?'1':'0'); } /** * Reads the logical state of an input pin * @return "true" if there is a logical "1" (3.3v) on the pin, or "false" if there is a logical "0" (0v) on the pin * @throws IOException */ public boolean input() throws IOException{ return in.read() == '1'; } /** * Little example to test the max speed * On my Pi, the result is around 24kHz. Although, the loop test consumes time and if you replace it by a "while(true)" you can * see a square wave at about 30kHz on an oscilloscope. * @param args */ public static void main(String[] args){ GPIO g0 = GPIO_0; try{ g0.open(); g0.setDirection(GPIO.SENS.out); int i=100000; long time = System.currentTimeMillis(); while(i-->0){ g0.output(true); g0.output(false); } time = System.currentTimeMillis()-time; System.err.println("Frequency achieved = "+(100000000f/time)+ " Hz"); }catch (Exception e) { e.printStackTrace(); }finally{ try{ g0.close(); }catch (Exception e) { e.printStackTrace(); } } } }
ویرایش توسط dariush_ab : 17-10-2015 در ساعت 22:06
برنامه نویسی ویندوز 10 رزبری را با زبان آردوینو تجربه کنید!
ایمج آماده کیوت 5.7 برای بردهای رزبری - آرنج پای - نانوپای - کیوبی - سینلینکس - پاین 64
آموزش راه اندازی اولیه برد EasyARM و کامپایل سورس WinCE
آموزش های فارسی لینوکس - ویندوز - متلب - سیمیولینک - کیوت برای رزبری پای
مشاوره رایگان خرید کامپیوتر های تک بردی فروشگاه کویر الکترونیک
ارتباط با من از طریق پست های انجمن و یا ایمیل یاهو موجود در بخش کاربری
این هم یک نمونه برنامه جاوا اندروید است:
کد:
import java.io.File; import java.io.FileOutputStream; import java.io.FileInputStream; /** * Created by kurain on 15-7-9. */ public class GPIOCommon { private static String sys_gpio_path = "/sys/class/gpio"; private static String export_path = "/sys/class/gpio/export"; private static String unexport_path = "/sys/class/gpio/unexport"; public int export(int id){ try { File file = new File(export_path); FileOutputStream fos = new FileOutputStream(file); byte [] bytes = new String().valueOf(id).getBytes(); fos.write(bytes); fos.close(); }catch (Exception e){ e.printStackTrace(); } return 0; } public int unexport(int id){ try { File file = new File(unexport_path); FileOutputStream fos = new FileOutputStream(file); byte [] bytes = new String().valueOf(id).getBytes(); fos.write(bytes); fos.close(); }catch (Exception e){ e.printStackTrace(); } return 0; } public int enable_out(int id){ try { // the final direction path looks like "/sys/class/gpio/gpioXXX/direction" String out_path = sys_gpio_path + "/gpio" + String.valueOf(id) + "/direction"; File file = new File(out_path); FileOutputStream fos = new FileOutputStream(file); byte [] bytes = new String("out").getBytes(); fos.write(bytes); fos.close(); }catch (Exception e){ e.printStackTrace(); } return 0; } public int enable_in(int id){ try { // the final direction path looks like "/sys/class/gpio/gpioXXX/direction" String in_path = sys_gpio_path + "/gpio" + String.valueOf(id) + "/direction"; File file = new File(in_path); FileOutputStream fos = new FileOutputStream(file); byte [] bytes = new String("in").getBytes(); fos.write(bytes); fos.close(); }catch (Exception e){ e.printStackTrace(); } return 0; } public int read(int id){ int ret = -1; try { // the final direction path looks like "/sys/class/gpio/gpioXXX/value" String in_path = sys_gpio_path + "/gpio" + String.valueOf(id) + "/value"; File file = new File(in_path); FileInputStream fos = new FileInputStream(file); byte [] bytes = new byte[16] ; if(0 == fos.read(bytes)) { String ret_str = new String(bytes); ret_str = String.copyValueOf(ret_str.toCharArray(), 0, bytes.length); ret =Integer.parseInt(ret_str); } fos.close(); }catch (Exception e){ e.printStackTrace(); } return ret; } public int write(int id, int bon){ try { // the final direction path looks like "/sys/class/gpio/gpioXXX/value" String in_path = sys_gpio_path + "/gpio" + String.valueOf(id) + "/value"; File file = new File(in_path); FileOutputStream fos = new FileOutputStream(file); byte [] bytes = String.valueOf(0 == bon ? 0:1).getBytes(); fos.write(bytes); fos.close(); }catch (Exception e){ e.printStackTrace(); } return 0; } }
برنامه نویسی ویندوز 10 رزبری را با زبان آردوینو تجربه کنید!
ایمج آماده کیوت 5.7 برای بردهای رزبری - آرنج پای - نانوپای - کیوبی - سینلینکس - پاین 64
آموزش راه اندازی اولیه برد EasyARM و کامپایل سورس WinCE
آموزش های فارسی لینوکس - ویندوز - متلب - سیمیولینک - کیوت برای رزبری پای
مشاوره رایگان خرید کامپیوتر های تک بردی فروشگاه کویر الکترونیک
ارتباط با من از طریق پست های انجمن و یا ایمیل یاهو موجود در بخش کاربری
در لینک زیر برنامه مورد نظر برای کیوبین هستش:
jarain78/Cubian_JAVA_GPIO · GitHub
وااااااااااااااااای
من چه سوتی ای داده بودم
متشکر از لینک های مفیدتون ، مشکل حل شدش
بعد از چند وقت برگشتم
پیرو پست قبلی
بعد از چند وقت برگشتم
با سلام
کسی میتونه یه توضح کلی بده که کامپایل و پرگرام کردن یه ای سی در لینوکس به چه شکلیه؟
مثلا با کامپایلر gcc بخوایم کامپال کنیم به چه چیزایی از ای سی نیاز داریم؟
فایلی که کامپایل شده نهایتا باید به چه شکل باشه؟
و چطور ایسی ها خودشون فایل رو از روی ای سی فلش میخونن؟
ببخشید سوالای من ابتدایی هستند من هرچی بیشتر جلو میرم کیج کننده تر میشه برام
لینوکس یه سیستم عامله ، مثل ویندوز ، اندروید ، ios , mac و ...
شما یه بار مثل نصب کردن ویندوز جدید رو کامپیوتر میای توزیع مورد نظر لینوکست رو (منظور از توزیع نسخه های مختلفه لینوکسه مثل ویندوز xp , 7 , 8 , 8.1 و ..) رو بردت میریزی از این به بعد مثل یه کامپیوتر باهاش برخورد میکنی
مثلا یه کار ساده که برنامه نویس های میکرو زیاد انجام میدن اینه که میان یه برنامه با سی شارپ یا وی بی و .. مینویسن و برد میکروکنترلرشونو با rs-232 وصل میکنن به کامپیوتر و اطلاعات مورد نظرشونو (مثل دما ، رطوبت و ..) میفرستن به کامپیوتر و با نرم افزاری که نوشتن مانیتور میکنن.
خوب حالا شما برای نوشتن یه برنامه تو سی شارپ مگه میای کامپیوترت رو پروگرام میکنی ؟ ویژوال استادیو نصب میکنی و توش کد میزنی تمام
حتما هم میدونین دیگه ، ویژوال استادیو یه نرم افزار تقریبا سنگینیه . اگه یه سیستم ضعیف داشته باشی با محدودیت های مختلف مثل رم پایین و سی پی یو ضعیف مجبوری پروسه کامپایل رو توی یه سیستم قوی انجام بدی بعدش نرم افزارت که آماده شد بیای رو سیستم خودت که ضعیف تره اجراش کنی.
اینجا هم امبدد برد ها محدودیت های خاص خودشونو دارن ، منطقی نیست که روشون کامپایلر قوی نصب کنی . برای همین رو سیستم خودت برنامه مورد نظرت رو مینویسی بعدش منتقل میکنی به برد و اجراش میکنی
ابهام یا سوال دیگه ای هم هست بپرس من و سایر دوستان هستیم و ایشاالله بتونیم جواب بدیم
بعد از چند وقت برگشتم