اطلاعیه

Collapse
No announcement yet.

چگونه در سکتور sd کارت بنویسیم

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

    چگونه در سکتور sd کارت بنویسیم

    سلام دوستان
    چگونه در سکتور sd کارت بنویسیم؟

    #2
    پاسخ : چگونه در سکتور sd کارت بنویسیم

    سلام دوست عزیز

    در سایت کتابخانه هایی برای زبانهای برنامه نویسی مختلف برای این منظور قرار داره که میتوانید از آنها استفاده کنید
    اگر سرچ بزنید راحت پیدا میشه

    درضمن برای کار با فرمت Fat نیز امکاناتی قرار داره

    شما میآ‌توانید بسته به نیاز خود از این امکانات استفاده کنید

    البته لازم به ذکر است که برای درک نحوه عملکرد هریک از این کتابخانه ها لازم است تا اطلاعات دقیقی راجع به نحوه هندشیکینگ MMC or SD که شبیه به هم هستند بیابید که توصیه میکنم یکی از دیتاشیتهای مربوط به شرکت SANDisk را مطالعه کنید

    در صورت نیاز به کمک بیشتر، موردی بحث نمایید OK؟

    دیدگاه


      #3
      پاسخ : چگونه در سکتور sd کارت بنویسیم

      اگر آشنایی با پروتکل ارتباطی با SD آشنایی ندارید و تا کنون با آن کار نکرده اید ابتدا این لینک را خوب مطالعه کن

      http://www.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf

      دیدگاه


        #4
        پاسخ : چگونه در سکتور sd کارت بنویسیم

        اینو خوندی!!!؟؟؟

        http://electrorc.blogfa.com/post-28.aspx

        شما با این اطلاعات میتونید حتی برایخودتون فرمت و ریکاوری هم بنویسید

        قبلا اینو گذاشته بودم توی یه تاپیک
        به وبلاگم سر بزنید

        دیدگاه


          #5
          پاسخ : چگونه در سکتور sd کارت بنویسیم

          تو این برنامه که گزاشتم فقط کافیه شماره سکتور رو وارد کنین و بعدش محتویاط سکتور رو میریزه بیرون

          بسیار ساده و قابل فهمه و به صورت lib هم نیس که نفهمین چه کارهایی اتفاق میفته
          '-------------------------------------------------------------------------------

          $regfile = "M64def.dat"
          '$prog &HFF , &HC1 , &H99 , &H00 ' Generated. Take Care That The Chip Supports All Fuse Bytes.$prog &HFF , &HC4 , &H99 , &H00' Generated. Take Care That The Chip Supports All Fuse Bytes.def.dat ""
          $crystal = 16000000 ' generated. Take care that the chip supports all fuse bytes.000000
          $baud = 9600
          '$prog &HFF , &HFF , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes.


          '-------------------------- MMC Pin Configuration ------------------------------
          ' Change this pin configuration if it is necessary in your project.

          ' Chip Select Pin => Pin 1 of MMC/SD

          Cs Alias Portb.0 : Config Pinb.0 = Output 'for mega 64
          Mosi Alias Portb.2 : Config Pinb.2 = Output 'Connected to Pin No.2 Of MMC (DataIn)
          Clk Alias Portb.1 : Config Pinb.1 = Output 'Connected to Pin No.5 Of MMC (Clock)
          Miso Alias Pinb.3 : Config Pinb.3 = Input







          'Cs Alias Portb.2 : Config Pinb.2 = Output 'Connected to Pin No.1 Of MMC (CS)
          'Mosi Alias Portb.3 : Config Pinb.3 = Output 'Connected to Pin No.2 Of MMC (DataIn)
          'Clk Alias Portb.5 : Config Pinb.5 = Output 'Connected to Pin No.5 Of MMC (Clock)
          'Miso Alias Pinb.4 : Config Pinb.4 = Input

          'Config Portb.1 = Output
          'Reset Portb.1 'Connected to Pin No.7 Of MMC (DataOut)

          '---------------------------- MMC Var. Define ----------------------------------
          ' MMC function declarations and variables.
          ' DONT TOUCH THIS PART!!!

          Declare Sub Mmc_init
          Declare Sub Mmc_status
          Declare Sub Mmc_singleread
          Declare Sub Mmc_singlewrite
          Declare Sub Mmc_printbuffer

          Dim Mmc_buffer(512) As Byte
          Dim Sector_pointer As Word
          Dim Free_counter As Word
          Dim Sector_number As Long
          Dim Addr As Long
          Dim Mmc_dat As Byte
          Dim Mmc_resp As Byte
          Dim Mmc_resp2 As Word
          Dim Omid As Long
          Dim Y As Byte
          Dim All As Long

          Dim I As Word
          Dim V As Byte
          Dim T As Byte
          Dim Mah As Long
          Dim S As String * 70
          Dim D As String * 70
          Dim Dd As String * 1
          Dim Ss As String * 1
          Dim Idx As Byte
          Dim A As Byte
          Const Msbl = 0 : Const Msbh = 1
          Const Spidelay = 5

          '-----------------------adc and timer------------------------------------------
          Enable Interrupts
          Config Adc = Single , Prescaler = 8 , Reference = Internal

          Config Timer0 = Timer , Prescale = 1


          Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
          Wait 1

          Mmc_init
          'Enable Timer0
          'Start Timer0
          'On Ovf0 Abcd
          'Timer0 = 50

          '----------------------- Your Functions Declarations ---------------------------
          ' Write Your Functions Declarations Here:

          '-------------------------------------------------------------------------------

          '-------------------------------- M A I N --------------------------------------

          'Write Here Your Main Code :
          'Example :

          Dim My_counter As Integer
          Dim In_char As String * 1







          For My_counter = 34 To 512
          Mmc_buffer(my_counter) = 0
          Next My_counter
          Sector_number = 1920
          Mmc_singlewrite




          Ab:


          Print "----------START---------"

          Ss:
          For My_counter = 1 To 512
          Mmc_buffer(my_counter) = 13

          Next My_cunter
          'Wait for a key press.
          Input "--WHAT SECTOR READ..." , Sector_number
          'Read Sector No.10 And Fill MMC_Buffer With It :



          Mmc_singleread



          'Wait For A Key Press.
          Print "--Press Any Key To Continue..." : In_char = Waitkey()
          'Send MMC Buffer To Serial Port :
          Mmc_printbuffer

          Goto Ss

          End





          Do


          Loop























          '--------------------------------- E N D ---------------------------------------


          '------------------------------- Functions -------------------------------------
          '-------------------------------------------------------------------------------
          ' Write your functions here :


          '-------------------------------------------------------------------------------
          '---------------------------- Initializing MMC ---------------------------------
          Sub Mmc_init

          Print "--Start Initializing MMC ..."
          'Set Portb.1
          Set Cs
          Mmc_dat = &HFF
          For Free_counter = 1 To 10
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Next Free_counter
          Mmc_resp = 255

          Print "--Command No.=0"
          Reset Cs
          '40 dar asl argooman ast
          'yani bite aval 0(start)bit 2vom(1){safhey 473 va 474 ketab}va 6 bit cmd ast}
          Cmd0:
          Mmc_dat = &H40 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay '8 bite avval
          Addr = 0 : Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay '32 bit argooman
          Mmc_dat = &H95 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay 'crc(tashkise khata)
          While Mmc_resp <> &H01 'mitoni inja beshmari bebini chand ta klock mizaneh
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Wend
          Print "--Command Response :" ; Hex(mmc_resp)

          Set Cs
          Waitms 50

          Print "--Command No.=1"
          Reset Cs
          Mmc_dat = &HFF
          Cmd1:
          While Mmc_resp <> &H00
          Set Cs
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay

          Reset Cs
          Mmc_dat = &H41 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Addr = 0 : Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Wend
          Mmc_dat = &HFF
          Set Cs

          Print "--Command Response :" ; Hex(mmc_resp)
          Print ""
          Mmc_status '***************************chek for status
          Print "--Initialize Complete."


          End Sub
          '-------------------------- MMC Initializing END -------------------------------

          '-------------------------------------------------------------------------------

          '---------------------------- Read MMC Status ----------------------------------
          Sub Mmc_status

          Cmd13:
          Set Cs
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay

          Reset Cs
          Mmc_dat = &H4D : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay 'mmc dat=4d yani 4 ro bi khial d=13
          'ya dakhele dastore cmd 1=mishe 41 va to cmd 0 mishe 40(yooohooo)
          Addr = 0 : Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp2 , Msbl , 8 , Spidelay
          Print "" : Print "--Status :" ; Hex(mmc_resp2)
          Set Cs

          End Sub
          '--------------------------- Read MMC Status END -------------------------------

          '-------------------------------------------------------------------------------

          '------------------------- MMC Read Single Sector ------------------------------
          Sub Mmc_singleread

          Addr = Sector_number * 512
          Print "----------------------------------"
          Print "--Start Sector Reading ..."
          Print "--Read Sector Address :" ; Addr
          Print "--Command No.=17,(Read Single Block)"

          Set Cs
          Mmc_dat = &HFF
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay

          Cmd17:
          Reset Cs
          Mmc_dat = &H51 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay

          While Mmc_resp <> 0
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Wend
          Print "--Command Response :" ; Hex(mmc_resp) : Print ""

          While Mmc_resp <> &HFE

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Wend

          For Sector_pointer = 1 To 512

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Mmc_buffer(sector_pointer) = Mmc_resp
          Next Sector_pointer

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay

          Set Cs
          Mmc_status '***************************chek for status
          Print "--Sector Reading Finished."

          End Sub
          '----------------------- MMC Read Single Sector END ----------------------------

          '-------------------------------------------------------------------------------

          '------------------------ MMC Write Single Sector ------------------------------
          Sub Mmc_singlewrite

          Addr = Sector_number * 512

          'Print "--Start Sector Writing ..."
          'Print "--Write Sector Address :" ; Addr
          'Print "--Command No.=24(Write Single Block)"

          Set Cs
          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay

          Cmd24:
          Reset Cs
          Mmc_dat = &H58 : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftout Mosi , Clk , Addr , Msbl , 32 , Spidelay
          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          While Mmc_resp <> 0
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Wend
          'Print "--Command Response :" ; Hex(mmc_resp) : Print ""

          Mmc_dat = &HFE : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          For Sector_pointer = 1 To 512
          Mmc_dat = Mmc_buffer(sector_pointer)
          Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Next Sector_pointer

          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay
          Mmc_dat = &HFF : Shiftout Mosi , Clk , Mmc_dat , Msbl , 8 , Spidelay

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Y = Mmc_resp And &H0F
          'If Y = &H05 Then 'if mmcrecp=5 shod data accept misheh jigar
          'Print "" : Print "--Data Accepted."
          'End If

          Waitms 10

          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          'If Mmc_resp = 0 Then Print "--MMC Is Busy!"
          While Mmc_resp = 0
          Shiftin Miso , Clk , Mmc_resp , Msbl , 8 , Spidelay
          Wend
          'Print "--MMC Is Ready!"

          Set Cs
          'Mmc_status
          'Print "--Sector Writing Finished."


          End Sub
          '----------------------- MMC Write Single Sector END ---------------------------

          '-------------------------------------------------------------------------------

          '---------------------------- MMC Print Buffer ---------------------------------
          Sub Mmc_printbuffer

          Print "--Start Reading MMC Buffer ..."

          S = ""
          T = 1
          Print "--MEGGGGGGGGGGA CHIP ADIBAN"
          Print Sector_number
          For Sector_pointer = 1 To 512

          'If Mmc_buffer(sector_pointer) < 30 Then



          'Ss = Lookupstr(mmc_buffer(sector_pointer) , Sdata)
          'Mid(s , T , 1) = Ss
          'Print " " ; S
          'Print Mmc_buffer(sector_pointer)
          'Incr T
          'Else
          Print Mmc_buffer(sector_pointer) ; ",";
          'End If



          Free_counter = Sector_pointer Mod 16
          If Free_counter = 0 Then Print ""
          Next Sector_pointer


          Print "--Reading MMC Buffer Finished."

          End Sub
          '-------------------------- MMC Print Buffer END -------------------------------
          '-------------------------------------------------------------------------------
          '-------------------------------------------------------------------------------





          Abcd:
          Start Adc
          A = Getadc(0)
          Stop Adc
          Timer0 = 100
          Mmc_buffer(my_counter) = A
          Incr My_counter

          If My_counter = 255 Then
          Stop Timer0
          My_counter = 0
          Incr Sector_number
          Mmc_singlewrite
          Start Timer0
          End If
          Return











          Sdata:
          Data "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , _
          "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "X" , "Y" , "Z" , " "
          علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

          دیدگاه


            #6
            پاسخ : چگونه در سکتور sd کارت بنویسیم

            سلام ممنون از جواب ها. من در حقیقت می خواهم با استفاده از ویزیال بیسیک یک بایت رو روی سکتور شماره 1 اس دی کارت بنویسم. منمی توانم یک بایت رو به پورت سریال ارسال کنمو از انجا به میکرو و از میکرو به اس دی کارت ارسال کنم ولی برای ارسال تعداد زیاد بایت زمان زیادی صرف می شود در نتیجه می خواهم اس دی کارت رو به کامپیوتر وصل کنم و با استفاده از برنامه ای ان بایت ها رو در سکتور اس دی ذخیره کنم.

            دیدگاه


              #7
              پاسخ : چگونه در سکتور sd کارت بنویسیم

              در حقیقت قصد داری از طریق کامپیوتر بر روی اس دی کارت بنویسی؟
              درسته؟

              بهتر نبود از همون ابتدا این رو ذکر میآ‌کردید؟

              حالا مشکلتون در کدام قسمته؟

              از طریق usart تونستی؟؟؟

              برای افزایش سرعت تنها راه ممکن ایجاد و استفاده از پروتکل usb است که این کار خیلی پر درد سره

              البته اگر طرف ارتباط به میکرو، میکروی دیگری بود میشد سرعت Baud Rate را تا چند مرتبه بالا برد. در حقیقت کامپیوتر عامل کاهش سرعت در ارتباط سریال است

              دیدگاه


                #8
                پاسخ : چگونه در سکتور sd کارت بنویسیم

                سلام
                موضوع رو پیچیده نکنید قرار نیست چرخ دوباره اختراع بشه

                شما میخواید مستقیما یک سکتور رو توی VB بخونید یا توش بنویسید. اون هم از طریق ram reader. درسته؟

                میخواید ویروس بنویسید که بد سکتوری ایجاد میکنه؟ :mrgreen:

                یه سری لینک هست:
                http://www.bigresource.com/VB-Direct-Read-Write-Memory-gkNuAj7i.html
                http://www.bigresource.com/VB-Direct-Read-Write-to-Sector-Cluster-OuqPBB2pLT.html#oMmv8oHEQJ
                http://www.freevbcode.com/ShowCode.asp?ID=9373&NoBox=True

                البته ممکنه کامل نباشه ولی اگه توی گوگل بگردی از این سایتهایی که توی کار هک و ... هستن بهتر میتونن بگن چطور میشه؟

                سایتهای قوی برنامه نویسی مثل codeproject.com یه چیزایی دارن
                به وبلاگم سر بزنید

                دیدگاه


                  #9
                  پاسخ : چگونه در سکتور sd کارت بنویسیم

                  سلام. من نمی خواهم ویروس بنویسم. من یک تابلوی چرخشی ساختم. و یک sd کارت به atmega123 وصل کردم. در visual basic یک برنامه نوشتم که پیکسل یک عکس رو به صورت بایری تبدیل می کند و به پورت سریال کامپیوتر ارسال میکند میکرو دریافت می کند و در sd کارت ذخیره می کند. همین کار تا اخرین بایت انجام می شود. حالا اگر یک عکس طول 96 × عرض 112 را به پورت سریال ارسال کنیم تا در sd کارت ذخیره شود حدود 1 تانیه طول می کشد. حالا من اگر 1000 تا عس بخواهم پشت سر هم ارسال کنم 1000 تانیه طول می کشد. حلا می خواهم sd کارت رو به کامپیوتر وصل کنم و بایت به بایت رو به جای اینکه به پورت سریال ارال کنم ان رو مستقیم رو سکتور کارت ذخیره کنم. هر سکتور 512 kb است.

                  دیدگاه


                    #10
                    پاسخ : چگونه در سکتور sd کارت بنویسیم

                    نوشته اصلی توسط feshwari
                    سلام. من نمی خواهم ویروس بنویسم. من یک تابلوی چرخشی ساختم. و یک sd کارت به atmega123 وصل کردم. در visual basic یک برنامه نوشتم که پیکسل یک عکس رو به صورت بایری تبدیل می کند و به پورت سریال کامپیوتر ارسال میکند میکرو دریافت می کند و در sd کارت ذخیره می کند. همین کار تا اخرین بایت انجام می شود. حالا اگر یک عکس طول 96 × عرض 112 را به پورت سریال ارسال کنیم تا در sd کارت ذخیره شود حدود 1 تانیه طول می کشد. حالا من اگر 1000 تا عس بخواهم پشت سر هم ارسال کنم 1000 تانیه طول می کشد. حلا می خواهم sd کارت رو به کامپیوتر وصل کنم و بایت به بایت رو به جای اینکه به پورت سریال ارال کنم ان رو مستقیم رو سکتور کارت ذخیره کنم. هر سکتور 512 kb است.
                    oo: oo:بالاخره چی شد ... ما که نفهمیدیم

                    داده ها رو بصورت فایل میخوای بریزی روی mmc یا Sd خوب به سکتور چی کار داری. مگه مموری کجا وصله

                    اصلا یه چیز دیگه، 1000 ثانیه طول میکشه ، مموری رو از مدار جدا میکنی تا بریزی توش، دوباره وصل میکنی به مدار!
                    اگه قرار به جدا کردن مموری از مداره، دیگه Rs232 چیه؟ اگه مموری از مدار جدا میشه خوب کپی کن فایل را بریز توی مموری!

                    نکنه میخوای بعد از ایجاد فایل خود برنامه اتوماتیک فایل رو کپی کنه روی مموری

                    این یه چیزه دیگست؟

                    تمام درایو ها یه مشخصه removable دارن که برای مموری ها True هست باید با اون دتکت کنی کدون درایو اینطوریه یا بدی کار بر درایو رو انتخاب کنه
                    بعد هم کپی کنی

                    یکی اینه:
                    http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_21051491.html

                    یه تابع اینجوریه:
                    FileCopy strFileName, strFullFileName

                    که name ها مسیر کامل فایلها هستن

                    اینم بعدش بنویسی میگه اون پنجره کپی شدن هم دیگه ظاهر نمیشه:
                    frmFileCopy.Hide

                    اینم یکی دیگه:
                    http://www.bigresource.com/VB-Copy-files-with-VB6-using-the-file-copy-dialog-box-of-Windows-98-iRcVKFzZqR.html
                    این باحال تر بود
                    به وبلاگم سر بزنید

                    دیدگاه


                      #11
                      پاسخ : چگونه در سکتور sd کارت بنویسیم

                      سلام دوست من.
                      شما منظور منو خوب متوجه نشدید. دوباره توضیح می دهم. من یک تابلو ساختم. بعد از گرفتاری زیاد بالاخره تونستم اطلاعات عکس رو در sd card ذخیره کنم.و عکس مورد نظر رو نمایش بدهم. روش کاری که انجام دادم به این صورت است. یک sd card را به atmega128 وصل کردم. یک برنامه هم با visual basic 6.0 نوشتم که اول یک عکس را به کد هگز تبدیل می کند. بعد اعداد هگز که هر کدام یک بایت است را از طریق پورت سریال به sram میکرو ارسال می کند . وقتی بافر sram 512 بایت دریافت کرد آن را در اولین سکتور sd card ذخیره می کند الا آخر.
                      چون تعداد عکس ها زیاد است و مدت زمان زیادی طول می کشد تا عکس ها ذخیره بشوند.
                      حالا چیزی که من می خواهم.
                      بعد از اینکه عکس را به کد هگز تبدیل شد به جای اینکه بایت را به پورت سریال ارسال کنیم تا در sd card ذخیره شود sd card را به کارت رایتر/ریدر وصل کنم و بایت به بایت در سکتور sd card ذخیره شود. در جواب سوال شما که چرا با سکتور کار دارم باید عرض کنم که چون من از فرمت fat استفاده نمی کنم. چون با فرمت فت سرعت کارم را خیلی پایین می آورد. یعنی اگر عکس را در sd card ذخیره کنم برای نشان دادن ان باید از فرمت فت استفاده کنم که سرعت بازسازی تصویر خیلی کم می شود.
                      با تشکر محمد شرفی

                      دیدگاه


                        #12
                        پاسخ : چگونه در سکتور sd کارت بنویسیم

                        پس دارید از sd بجای فرقون استفاده میکنید؟ :mrgreen: :mrgreen:

                        والا نمی دونم بشه به این راحتی ها انجام داد

                        شما اون مطالب قبلی (دو سه تا پاسخ بالاتر) رو نگاه کردید؟ بدرد نخورد؟ من الان vb6 نصب ندارم نمیتونم تستش کنم!

                        ولی میدونید اگه توی انتخاب درایو خطائی پیش بیاد خیلی خطرناکه!!! ممکنه هارد منهدم بشه؟ میشه همون ویروسه که گفتم؟

                        نمیشه از یه روش Safe تر استفاده کنید(مثلا اگه مموری تازه فرمت شده باشه و چیزی توش نباشه هرچی فایل بریزی بترتیب میریزه توی سکتورها. اینطوری بجای اینکه مثلا از سکتور صفر شروع کنید مثلا از سکتور 3000 شروع میکنید به خوندن. حجم فایل رو هم بدونید دیگه حله هر وقت به پایان رسیدید خوندن متوقف میشه)
                        به وبلاگم سر بزنید

                        دیدگاه


                          #13
                          پاسخ : چگونه در سکتور sd کارت بنویسیم

                          فرض کنیم مموری رو فرمت کردیم و می خواهم 100 تا عکس بریزم تو مموری. مموری موقع خوندن فقط می تونه سکتور به سکتور بخونه و اطلاعات ر سکتور که به صورت باینری است رو به پورت میکرو ارسال می کند. حالا چطور عکس ها رو در سکتور ذخیره کنم؟

                          دیدگاه


                            #14
                            پاسخ : چگونه در سکتور sd کارت بنویسیم

                            اگه مموری تازه فرمت شده باشه و هیچ فایلی توش نبوده و پاک هم نشده وقتی فایلی توش ریخته میشه دقیقا توی آدرس رووت بعلاوه سکتور به ازای کلاستر قرار میگیره

                            اینطوری آدرس اولین سکتور از اولین فایل رو داری(اگه مثلا فایلت 2کیلو بایته 4 سکتور میشه واسه این فایل پس پنجمی ماله دومین فایله والی آخر)

                            اگه با بیسکام کار میکنی و حوصله خوندن اون فایلی که من گذاشتم در مورد نحوه کار کردن Fat نداری از این متغییر ها توی avr_dos کمک بگیر:

                            Glrootfirstsector آدرس اولین سکتور از رووت دارکتوریه (اگه توی دارکتوریه دیگه ای فایل قرار داره میشه Gldatafirstsector)

                            و Gbsectorspercluster تعداد سکتور به ازای کلاستره

                            اگه میخوای امتحان کن: یه فایل Txt توی مموری فرمت شده بریز توش یکم نوشته باشه
                            این دو عددو با هم جمع کن سکتور متناظر باهاشو بخون
                            اگه متنی که توی فایل texT نوشته بوده (سکتور اول) رو توش ندیدی من اسممو عوض میکنم
                            اون عدد رو بعلاوه 1 کنی میشه ادامه فایل حجم فایل رو هم بگیری بر 512 تقسیم کنی مثلا میشه چهار
                            یه for بنویس که از سکتور اول تا 4 سکتور بعد رو بخونه سرعت میشه همون چیزی که میخوای(مستقل از fat)

                            یادت نره:
                            مموری تازه فرمت شده وحتی یک فایل نه پاک شده نه کات شده نه edit و نه تغییر نام
                            به وبلاگم سر بزنید

                            دیدگاه


                              #15
                              پاسخ : چگونه در سکتور sd کارت بنویسیم

                              سلام.
                              منظور شما از این دو عدد رو با هم جمع کند کدام عدد است؟ اگر من یک عکس بیت مپ را در مموری ذخیره کنم ایا می شود ان عکس را از سکتور اول بایت به بایت بخونم و رو پورت میکرو بریزم؟ یه مثال عملی می زنی؟

                              دیدگاه

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