اطلاعیه

Collapse
No announcement yet.

پاسخگویی به سئوالات شما در مورد WINCE

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    سوال:در مورد WINCE

    با عرض سلام و خسته نباشید
    من یه برنامه رو برد اجرا میکنم ولی پورتو باز نمی کنه و ارور میده
    خواهشمندم که کمکم کنید
    چند بار کدها رو خوندم و چند جاشو اصلاح کردم ولی بازم کار نمیکنه
    اگه نگاهی به کد بندازید و اشکالشو بهم بگین ممنون میشم
    من کل کد رو نوشتم ولی مشکلم توی تابع
    createfile
    فک میکنم باشه


    کد:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    namespace GPIOsample
    {
      public partial class Form1 : Form
      {
        // Declare Function
        [DllImport("coredll.dll")]
        public static extern IntPtr CreateFile(String lpFileName, UInt32 dwDesiredAccess, UInt32 dwShareMode, IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition, UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);
        [DllImport("coredll.dll")]
        public static extern bool DeviceIoControl(IntPtr hDevice, UInt32 dwIoControlCode, Byte[] lpInBuffer, UInt32 nInBufferSize, Byte[] lpOutBuffer, UInt32 nOutBufferSize, UInt32 lpBytesReturned, IntPtr lpOverlapped);
        [DllImport("coredll.dll")]
        public static extern bool CloseHandle(IntPtr hDevice);
    
        // Constant of Function
        const UInt32 OPEN_EXISTING = 3;
        const UInt32 GENERIC_READ = 0x80000000;
        const UInt32 GENERIC_WRITE = 0x40000000;
        const Int32 INVALID_HANDLE_VALUE = -1;
    
        // Constant from GPIO Driver
        const UInt32 PORT_A = 0x00;
        const UInt32 PORT_B = 0x10;
        const UInt32 PORT_C = 0x20;
        const UInt32 PORT_D = 0x30;
        const UInt32 PORT_E = 0x40;
        const UInt32 PORT_F = 0x50;
        const UInt32 PORT_G = 0x60;
        const UInt32 PORT_H = 0x70;
        const UInt32 PORT_J = 0x80;
        const UInt32 SET_OUTPUT = 0x04;
        const UInt32 SET_INPUT = 0x03;
        const UInt32 GET_PIN = 0x02;
        const UInt32 SET_PIN_ON = 0x01;
        const UInt32 SET_PIN_OFF = 0x00;
    
        // Variable of Device
        private IntPtr hPort;
    
        public Form1()
        {
          InitializeComponent();
        }
    
        private void cmdSetInput_Click(object sender, EventArgs e)
        {
          byte[] sBuf = new byte[4];
          UInt32 sInput = 0;
    
          if (hPort != (IntPtr)INVALID_HANDLE_VALUE)
          {
            // Set pin position from CheckBox in to sInput
            sInput += Convert.ToUInt32(chkInput0.Checked) << 0;
            sInput += Convert.ToUInt32(chkInput1.Checked) << 1;
            sInput += Convert.ToUInt32(chkInput2.Checked) << 2;
            sInput += Convert.ToUInt32(chkInput3.Checked) << 3;
            sInput += Convert.ToUInt32(chkInput4.Checked) << 4;
            sInput += Convert.ToUInt32(chkInput5.Checked) << 5;
            sInput += Convert.ToUInt32(chkInput6.Checked) << 6;
            // Convert sInput(UInt32) to sBuf(Array of Byte)
            BitConverter.GetBytes(sInput).CopyTo(sBuf, 0);
            // Set pin in PORT F = Input Mode
            DeviceIoControl(hPort, PORT_F | SET_INPUT, sBuf, (uint)sizeof(UInt32), null, 0, 0, IntPtr.Zero);        
          }
        }
    
        private void cmdSetOutput_Click(object sender, EventArgs e)
        {
          byte[] sBuf = new byte[4];
          UInt32 sInput = 0, sOn = 0, sOff = 0;
    
          if (hPort != (IntPtr)INVALID_HANDLE_VALUE)
          {
            // Check in CheckBox
            if (chkOutput0.Checked)
            {
              // Set pin position in to sInput
              sInput += (1 << 0);
              if (chkOnOut0.Checked)
                // Set pin position to set logic = 1
                sOn += (1 << 0);
              else
                // Set pin position to set logic = 0
                sOff += (1 << 0);
            }
            if (chkOutput1.Checked)
            {
              sInput += (1 << 1);
              if (chkOnOut1.Checked)
                sOn += (1 << 1);
              else
                sOff += (1 << 1);
            }
            if (chkOutput2.Checked)
            {
              sInput += (1 << 2);
              if (chkOnOut2.Checked)
                sOn += (1 << 2);
              else
                sOff += (1 << 2);
            }
            if (chkOutput3.Checked)
            {
              sInput += (1 << 3);
              if (chkOnOut3.Checked)
                sOn += (1 << 3);
              else
                sOff += (1 << 3);
            }
            if (chkOutput4.Checked)
            {
              sInput += (1 << 4);
              if (chkOnOut4.Checked)
                sOn += (1 << 4);
              else
                sOff += (1 << 4);
            }
            if (chkOutput5.Checked)
            {
              sInput += (1 << 5);
              if (chkOnOut5.Checked)
                sOn += (1 << 5);
              else
                sOff += (1 << 5);
            }
            if (chkOutput6.Checked)
            {
              sInput += (1 << 6);
              if (chkOnOut6.Checked)
                sOn += (1 << 6);
              else
                sOff += (1 << 6);
            }
    
            // Convert sInput(UInt32) to sBuf(Array of Byte)
            BitConverter.GetBytes(sInput).CopyTo(sBuf, 0);
            // Set pin position in PORT F = Output Mode
            DeviceIoControl(hPort, PORT_F | SET_OUTPUT, sBuf, (uint)sizeof(UInt32), null, 0, 0, IntPtr.Zero);
            // Convert sOn(UInt32) to sBuf(Array of Byte)
            BitConverter.GetBytes(sOn).CopyTo(sBuf, 0);
            // Set Pin in PORT F = Logic 1
            DeviceIoControl(hPort, PORT_F | SET_PIN_ON, sBuf, (uint)sizeof(UInt32), null, 0, 0, IntPtr.Zero);
            // Convert sOff(UInt32) to sBuf(Array of Byte)
            BitConverter.GetBytes(sOff).CopyTo(sBuf, 0);
            // Set Pin in PORT F = Logic 0
            DeviceIoControl(hPort, PORT_F | SET_PIN_OFF, sBuf, (uint)sizeof(UInt32), null, 0, 0, IntPtr.Zero);
          }
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          // Open GPIO Device
          hPort = CreateFile("GPIO:", GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
          if (hPort == (IntPtr)INVALID_HANDLE_VALUE)
          {
            MessageBox.Show("Open GIO Driver Fail");
          }
        }
    
        private void Form1_Closing(object sender, CancelEventArgs e)
        {
          if (hPort != (IntPtr)INVALID_HANDLE_VALUE)
          {
            // Close GPIO Device
            CloseHandle(hPort);
          }
        }
    
        private void timer1_Tick(object sender, EventArgs e)
        {
          byte[] rBuf = new byte[4];
          UInt32 rOutput, rLen = 0, tmp = 0;
    
          // Check Open Device already
          if (hPort != (IntPtr)INVALID_HANDLE_VALUE)
          {
            // Get value from PORT F 
            DeviceIoControl(hPort, PORT_F | GET_PIN, null, 0, rBuf, rLen, 0, IntPtr.Zero);
            // Convert rBuf(Array of Byte) to rOutput(UInt32)
            rOutput = BitConverter.ToUInt32(rBuf, 0);
            // Loop pin position in PORT F
            for (int i = 0; i < 7; i++)
            {
              // Define pin position for get value
              tmp = (UInt32)1 << i;
              // Get value from variable
              tmp = rOutput & tmp;
              // Convert value to Boolean Type
              bool rs = Convert.ToBoolean(tmp);
              // Input value to CheckBox by Pin
              switch (i)
              {
                case 0: chkOnRs0.Checked = rs; break;
                case 1: chkOnRs1.Checked = rs; break;
                case 2: chkOnRs2.Checked = rs; break;
                case 3: chkOnRs3.Checked = rs; break;
                case 4: chkOnRs4.Checked = rs; break;
                case 5: chkOnRs5.Checked = rs; break;
                case 6: chkOnRs6.Checked = rs; break;
              }
            }
          }
        }
    
        private void cmdGet_Click(object sender, EventArgs e)
        {
          if (cmdGet.Text == "Get Start")
          {
            cmdGet.Text = "Get Stop";
            timer1.Enabled = true;
          }
          else
          {
            cmdGet.Text = "Get Start";
            timer1.Enabled = false;
          }
        }
      }
    }

    دیدگاه


      #17
      پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

      نوشته اصلی توسط Amir safari
      :NO: :NO:
      یاهو آِی دی چیه! اینجا فرومه همه میخان یاد بگیرن :NO: :NO:
      آخه سوالای من خیلی ابتدایی و اولیه اس.

      دیدگاه


        #18
        پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

        نوشته اصلی توسط m.j.sharifi
        آخه سوالای من خیلی ابتدایی و اولیه اس.
        خب خیلیامون تازه کاریم!!! همین سوالای اولیه خیلی مهم هستن!!!

        دیدگاه


          #19
          پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

          سلام خسته نباشید آقای مصلح راد. یک دوتا سوال داشتم:
          امکانش هست با visual c++ تو win ce برنامه نوشت؟ من به یک سیستم عاملی نیاز دارم که بعد از روشن شدن برد سریع بیاد بالا. به نظر شما چی باشه بهتره؟البته من هنوز برد نخریدم و قصد خرید یک برد دارم.
          با تشکر

          دیدگاه


            #20
            پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

            سلام

            بهترین گزینه WinCE است. ضمنا میشه با ++Visual C و انواع دیگری از زبان ها براش برنامه نوشت. اینکه چه سخت افزاری رو انتخاب کنی بستگی به نیازت داره و من نیاز شما رو نمی دنم.
            موفق باشید
            http://embeddedelectronics.ir

            دیدگاه


              #21
              پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

              نوشته اصلی توسط m.j.sharifi
              من تعداد سوالاتم خیلی زیاده.میشه لطف کنین id یاهوتون رو بدین و یه ساعتی که on هستین رو مشخص کنین.
              خیلی متشکر.
              سلام

              لطفا سئوالاتت رو همین جا مطرح کن. من اگه وقت کنم حتما جواب می دهم.
              موفق باشید
              http://embeddedelectronics.ir

              دیدگاه


                #22
                پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                میشه منم راهنمایی کنین
                1-آیا با همون2010 Visual Basic.net که بلدم و برای ویندوز معمولی برنامه مینویسم میتونم برای ویندوز CE هم برنامه بنویسم؟
                2-اگه جواب سوال 1 مثبته چطور و چه تنظیماتی داره که بفهمه برای اون ویندوز میخوام
                3- اینکه ویندوز CE رو میشه با ویندوز معمولی مثل XP و 7 شبکه کرد و از SQL Server که روی ویندوز نصبه اطلاعات رو خوند(SQL Express برای CE وجود داره؟)
                4- سوال آخر اینکه سخت افزارهای جانبی مثل تبدیل USB به Serial روی ویندوز CE جواب میدن؟
                ببخشید که سوالاتم مبتدیانس ولی خوب چه میشه کرد

                دیدگاه


                  #23
                  پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                  سلام

                  دوست عزیر بجای اینکه این سئوالات ساده رو اینجا بپرسی بهتر بجاش یه جستجو تو اینترنت بکنی. حتما علاوه بر یافتن پاسخ سئوالاتت چیزاهای بیشتری هم یاد می گیری.
                  در هر صورت پاسخ سئوالاتت:
                  1- برای برنامه نویسی فقط VS2005و VS2008 و برای Build کردن WinCE فقط VS2005 که من توصیه می کنم همین VS2005 رو برای هر دو کار نصب کن.
                  2- پس از نصب برو به منوی فایل محیط VS2005 و به ترتیب گزینه New و بعد Project رو کلیک کن و بعد در قسمت Project Types گزینه Other Languages و بعد Visual Basic و سپس Smart Device و در نهایت روی عبارت Windows CE 5.0 کلیک کن.
                  3- بله امکان دارد که بسیار ساده هم هست.
                  4- هر چیزی رو که بخواهی نصب کنی درایور می خواهد که من تا حالا درایور مبدل USB به سریال رو ندیدم. البته خیلی هم لازم نیست چو سخت افزار های مبتنی بر ARM چند پورت سریال و USB دارند.
                  موفق باشید
                  http://embeddedelectronics.ir

                  دیدگاه


                    #24
                    پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                    نوشته اصلی توسط حامد مصلح راد - HMR
                    سلام

                    دوست عزیر بجای اینکه این سئوالات ساده رو اینجا بپرسی بهتر بجاش یه جستجو تو اینترنت بکنی. حتما علاوه بر یافتن پاسخ سئوالاتت چیزاهای بیشتری هم یاد می گیری.
                    در هر صورت پاسخ سئوالاتت:
                    1- برای برنامه نویسی فقط VS2005و VS2008 و برای Build کردن WinCE فقط VS2005 که من توصیه می کنم همین VS2005 رو برای هر دو کار نصب کن.
                    2- پس از نصب برو به منوی فایل محیط VS2005 و به ترتیب گزینه New و بعد Project رو کلیک کن و بعد در قسمت Project Types گزینه Other Languages و بعد Visual Basic و سپس Smart Device و در نهایت روی عبارت Windows CE 5.0 کلیک کن.
                    3- بله امکان دارد که بسیار ساده هم هست.
                    4- هر چیزی رو که بخواهی نصب کنی درایور می خواهد که من تا حالا درایور مبدل USB به سریال رو ندیدم. البته خیلی هم لازم نیست چو سخت افزار های مبتنی بر ARM چند پورت سریال و USB دارند.
                    موفق باشید
                    خوب چرا میزنی؟!
                    همون دوست دیگه که گفته بود بیا چت کنیم چون سولام سادس همه داشتن میگفتن اینجا بپرس که شاید سوال دیگران هم باشه ولی شما عکس این موضوع دارید رفتار میکنید
                    درضمن من قبلا سرچ کرده بودم ولی جواب درستی براش پیدا نکرده بودم مخصوصا در مورد شبکه کردن و Sql Server که اکثرا اطلاعاتی نداشتند ولی فقط در یک مورد گفته بودن که Sql مخصوص WINCE وجود داره ولی ایا امکان ارتباط با Sql ویندوز رو داره معلوم نیست

                    حالا سوال دیگه این SDK که باید نصب بشه چیه و اینکه چجوری میتونیم برنامه نوشته شده رو روی سیستم معمولی تست کرد
                    در مورد سوال آخر هم اینکه متوجه شدم درایور مخصوص WIN CE برای پرت سریال وجود داره
                    سخت افزار مد نظر من پورت سریال نداره بنابراین باید از مبدل استفاده کنم

                    دیدگاه


                      #25
                      پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                      ممنون از جوابتون.
                      یک سوال دیگه هم داشتم. من تو پروژم باید با پرینتر usbدار ارتباط برقرار کنم. اگه از wince قابلیت نصب درایور برای پرینتر ها رو داره؟ اصلا مثا win xp میشه راحت با پرینترها کار کرد؟
                      بازم ممنون از کمکتون

                      دیدگاه


                        #26
                        پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                        با عرض سلام خدمت شما دوستان گرامی راستش من یک سوال داشتم راجب کامپایل win CE میخواستم ببینم کسی هست منو راهنمایی بکنه
                        راستش من یک برد کاربردی صنعتی FS-S5PV210 Cortex-A8 خریدم و تمامی مراحل نصب رو رفتم ولی وقتی برنامه رو در Vs 2005 بیلد میکنم بعد 20 دقیقه دوتا خطا میده چندین بارم مراحل نصب رو از اول رفتم چه تو ویندوز XP چه تو ویندوز 7 عکس خطا رو واستون میذارم میخواستم ببینم میتونید راهنماییم کنید
                        پیشاپیش کمال تشکر رو دارم ازتون

                        دیدگاه


                          #27
                          پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                          سلام خدمت دوستان عزیز
                          یک سوالی از خدمتتون داشتم
                          ما یک برد داریک که روش ویندوز سی ای نصب شده حالا میخاهیم با استفاده از i2c یا SPI با یک ماژولی ارتباط برقرار کنیم
                          مثلا ds1307

                          ملزوماتش چی هست؟
                          ایا قبلش باید i2c SPI توسط ویندوز راه اندازی شده باشه یا این که خود ویندوز میشناسه یا سازنده اون برد راه انداز اونو به ما میده که بعدا بهش اضافه کنیم؟

                          دیدگاه


                            #28
                            پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                            سلام

                            دوست عزیز، سازنده بردها وقتی که درایور ها رو داخل DVD همراه برد به شما می دهند، درایور هایی مانند SPI و یا IIC حتما همراهش هست، برای دیدن اونها می تونید به پوشه Drivers مراجعه کنید. لازم نیست برای اینها شما داریوری بنویسید چرا که اینها پروتکل های پایه هستند و حتما از طرف سازنده برد پشتیبانی می شوند اما برای مثال شما بایستی برای راه اندازی آی سی مانند DS13007 درایوری بنویسی که خودش از درایور IIC جهت ارتباط با آی سی استفاده کنه. این توضیحات البته می تونه مفهوم درایور رو برای شما و دوستان روشن تر کنه. البته نمی دونم چرا شما دنبال استفاده از DS1307 هستی چرا که روی این بردها RTC عالی و بسیار دقیقی در مقایسه با DS1307 وجود دارد.
                            موفق باشید
                            http://embeddedelectronics.ir

                            دیدگاه


                              #29
                              پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                              نوشته اصلی توسط حامد مصلح راد - HMR
                              سلام

                              دوست عزیز، سازنده بردها وقتی که درایور ها رو داخل DVD همراه برد به شما می دهند، درایور هایی مانند SPI و یا IIC حتما همراهش هست، برای دیدن اونها می تونید به پوشه Drivers مراجعه کنید. لازم نیست برای اینها شما داریوری بنویسید چرا که اینها پروتکل های پایه هستند و حتما از طرف سازنده برد پشتیبانی می شوند اما برای مثال شما بایستی برای راه اندازی آی سی مانند DS13007 درایوری بنویسی که خودش از درایور IIC جهت ارتباط با آی سی استفاده کنه. این توضیحات البته می تونه مفهوم درایور رو برای شما و دوستان روشن تر کنه. البته نمی دونم چرا شما دنبال استفاده از DS1307 هستی چرا که روی این بردها RTC عالی و بسیار دقیقی در مقایسه با DS1307 وجود دارد.
                              موفق باشید
                              ممنون از جواب دقیق شما
                              یعنی مثل کامپیوترهای معمولی دیگه شرکت سازنده مادبرد کارت گرافیکی و .... کنار سخت افزاز نرم افزار مربوط به راهنداز اونو میده؟
                              مثلا وقتی روی برد پین بیست پین دوربین هست هست راه انداز مربوط به ورود یکسری از دوربین ها رو شرکت سازنده گذاشته و فقط کافیه ما دوربین مربوطه بیست پین رو وصل کنیم بهش و توسط نرم افزارهای عادی ویدیو دوربین رو ببینیم؟

                              دیدگاه


                                #30
                                پاسخ : پاسخگویی به سئوالات شما در مورد WINCE

                                سلام

                                دوست عزیز، بردی که مجهز به دوربین باشه حتما تولید کنندش درایور برای راه اندازی اون دوربین رو تو DVD همراه دستگاه می دهد و حتما یک نرم افزار ساده هم می دهد که شما بتوانید دوربین رو راه بندازی و ببینی.

                                مثلا در تصویر زیر مسیر پوشه Drivers برای بردی که S3C6410 دارد را نشان می دهد که مطابق شکل، انواع و اقسام درایور ها وجود دارند.


                                موفق باشید
                                http://embeddedelectronics.ir

                                دیدگاه

                                لطفا صبر کنید...
                                X