اطلاعیه

Collapse
No announcement yet.

مشکل در نوشتن داخل فایل تکست usb flash

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

    مشکل در نوشتن داخل فایل تکست usb flash

    سلام
    پروژه ای با stm32f407 و با نرم افزار stm32cube ایجاد شده که در آن توسط کتابخانه fatfs فایل درون فلش ایجاد می شود
    ولی داخل فایل هیچ چیزی نوشته نمی شود
    یک فایل به نام flash.txt ایجاد می کنم و بعدش توسط
    f_write(&fl,wtext,19,&byteswritten);
    درون فایل می نویسم
    ولی وقتی به کامپیوتر فلش رو میزنم هیچ چیزی داخل فایل تکست نیست
    و وقتی
    f_write(&fl,wtext,19,&byteswritten);
    داخل یه حلقه طولانی قرار میدم بخشی از حجم فلش گرفته میشه که نشون میده ارتباط با usb درسته ولی فقط داخل فایل تکست چیزی نمیاد
    دلیلش چیه ؟؟؟
    ممکنه نرم افزار stmخطایی کرده باشه ؟؟؟
    جدیدترین ویرایش توسط seyed saeed; ۱۳:۳۹ ۱۳۹۸/۰۱/۱۸. دلیل: تصحیح عنوان
    اللهم صل علی محمد و ال محمد و عجل فرجهم
    پیامبر اکرم(ص):زکات علم نشر آن است.
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    #2
    پاسخ : مشکل در نوشتن داخل فایل تکست usb flash

    الان در داخل یه حلقه فایل هایی به شماره اندیس حلقه باز می کنم و بعد توشون می نویسم که کار می کنه
    ظاهرا مشکلش با اولین فایله یعنی فقط در اولین فایل ایجاد شده چیزی نمی نویسه

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    خب تست بعدی که انجام دادم این بود که دو فایل تشکیل دادم و بعد از نوشتن در هر فایل
    بستمشون
    متوجه شدم که با ایجاد فایل بعدی اطلاعات در فایل قبلی تثبیت میشه
    یعنی وقتی فایل شماره 1 اطللاعات درونش نمایش داده میشه که بعد از f_close
    حتما یه فایل دیگه باز کرده باشم
    اللهم صل علی محمد و ال محمد و عجل فرجهم
    پیامبر اکرم(ص):زکات علم نشر آن است.
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    دیدگاه


      #3
      پاسخ : مشکل در نوشتن داخل فایل تکست usb flash

      با عرض سلام.
      میشه بفرمائید نسخه نرم افزار stm32cubemx که استفاده کردید چیه؟ چون خودم از نسخه 5.0.1 استفاده کردم برای کار روی usb host ولی زمانی که میخواد کد تولید کنه یه هشدار میده که کانفیگ ممکنه کامل نباشه. در عمل هم هرچی سعی کردم آخرش نتونستم روی فلش فایل ایجاد کنم. در صورتی که با همین نرم افزار در مد device(virtual com) جواب گرفتم .
      یه مورد اینکه بنظرم میاد لایبرری ها و نوع دستورات در نسخه های قدیمی با نسخه های جدید این نرم افزار فرق داره. شما به همچین موردی بر نخوردید؟
      یه درخواست کمی نابجا هم دارم ازتون. اگه صلاح دونستین یه سمپل از همین برنامه ای که یه فایل تکست ایجاد کردین رو یا در اینجا قرار بدین یا خصوصی برام بفرستین. واقعا ممنون میشم. چون مدت زیادیه رو لایبرری این بخش دارم کار میکنم ولی هنوز جواب نگرفتم.
      جدیدترین ویرایش توسط 01234; ۰۹:۴۹ ۱۳۹۸/۰۱/۲۰.

      دیدگاه


        #4
        پاسخ : مشکل در نوشتن داخل فایل تکست usb flash

        سلام نسخه نرم افزار من هم دقیقا همین نسخه شماست و همین ایراد رو در مورد fatfs می گیره
        /* Private user code ---------------------------------------------------------*/
        /* USER CODE BEGIN 0 */
        extern ApplicationTypeDef Appli_state ;
        extern USBH_HandleTypeDef hUsbHostFS ;
        FATFS fs;
        DIR dr;
        FIL fl;
        FRESULT res;
        uint8_t wtext[22] = "usb flash drive__oK\n\r";
        char name[20];
        uint8_t buf[100];
        uint32_t byteswritten,i;
        /* USER CODE END 0 */

        /**
        * @brief The application entry point.
        * @retval int
        */
        int main(void)
        {
        /* USER CODE BEGIN 1 */

        /* USER CODE END 1 */

        /* MCU Configuration--------------------------------------------------------*/

        /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
        HAL_Init();

        /* USER CODE BEGIN Init */

        /* USER CODE END Init */

        /* Configure the system clock */
        SystemClock_Config();

        /* USER CODE BEGIN SysInit */

        /* USER CODE END SysInit */

        /* Initialize all configured peripherals */
        MX_GPIO_Init();
        MX_USB_HOST_Init();
        MX_FATFS_Init();
        /* USER CODE BEGIN 2 */

        /* USER CODE END 2 */

        /* Infinite loop */
        /* USER CODE BEGIN WHILE */
        while (1)
        {
        /* USER CODE END WHILE */
        MX_USB_HOST_Process();

        /* USER CODE BEGIN 3 */
        //HAL_Delay(100);
        GPIOE->ODR |=(1<<15);
        if( Appli_state == APPLICATION_READY)
        {

        GPIOE->ODR |=(1<<14);
        res=f_mount(&fs,"1", 1);
        if(res!=FR_OK)
        {
        GPIOE->ODR |=(1<<13);
        while(1);
        }
        GPIOE->ODR |=(1<<12);
        res=f_open(&fl,"flash.txt", FA_CREATE_ALWAYS | FA_WRITE );
        f_write(&fl,wtext,21,&byteswritten);

        //if(res!=FR_OK)
        //{
        //GPIOE->ODR |=(1<<8);
        //while(1);
        //}
        //f_lseek(&fl , f_size(&fl));
        //HAL_Delay(10);
        for(i=0;i<1000;i++)
        {
        //f_printf(&fl,"%d Line\n\r",i);
        //sprintf(name,"%d.txt",i);
        //res=f_open(&fl,name, FA_CREATE_ALWAYS | FA_WRITE );
        f_write(&fl,wtext,21,&byteswritten);
        //f_close(&fl);
        //f_puts('c',&f1);
        }



        GPIOE->ODR |=(1<<11);
        //HAL_Delay(1000);
        f_close(&fl);
        f_open(&fl,"flash2.txt", FA_CREATE_ALWAYS | FA_WRITE );
        f_write(&fl,wtext,21,&byteswritten);
        f_close(&fl);
        GPIOE->ODR |=(1<<10);

        while(1){}
        }


        }
        /* USER CODE END 3 */
        }
        اللهم صل علی محمد و ال محمد و عجل فرجهم
        پیامبر اکرم(ص):زکات علم نشر آن است.
        در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

        دیدگاه


          #5
          پاسخ : مشکل در نوشتن داخل فایل تکست usb flash

          ممنون از جوابتون. تصورم این بود که تنظیماتی که انجام میدم اشتباهه. ولی ظاهرا مشکلی در خود نرم افزار هست. بابت نمونه کد هم تشکر

          دیدگاه


            #6
            پاسخ : مشکل در نوشتن داخل فایل تکست usb flash

            نوشته اصلی توسط seyed saeed نمایش پست ها
            الان در داخل یه حلقه فایل هایی به شماره اندیس حلقه باز می کنم و بعد توشون می نویسم که کار می کنه
            ظاهرا مشکلش با اولین فایله یعنی فقط در اولین فایل ایجاد شده چیزی نمی نویسه

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            خب تست بعدی که انجام دادم این بود که دو فایل تشکیل دادم و بعد از نوشتن در هر فایل
            بستمشون
            متوجه شدم که با ایجاد فایل بعدی اطلاعات در فایل قبلی تثبیت میشه
            یعنی وقتی فایل شماره 1 اطللاعات درونش نمایش داده میشه که بعد از f_close
            حتما یه فایل دیگه باز کرده باشم
            من برنامه شما رو تست کردم. بدون نیاز به باز کردن فایل جدید همون فایل اول به خوبی در فلش نوشته شده و در کامپیوتر قابل خواندن هست. اون بخش آخر برنامه که فایل جدید باز میکنه رو حذف کردم. مشکلی نیست. فقط اینکه میکروکنترلر من stm32f107 هست.

            دیدگاه

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