class SDCard – SD / MMC kart sürücüsü¶
SDCard sınıfı, böyle bir yuvaya sahip OpenMV kameralardaki SD / MMC kart yuvasını sürer. Sürücü vfs.AbstractBlockDev arayüzünü uygular, böylece doğrudan vfs.mount() fonksiyonuna geçirilebilir:
import machine
import vfs
sd = machine.SDCard()
vfs.mount(sd, "/sd")
Not
OpenMV aygıt yazılımı (firmware) SD kartı önyükleme sırasında otomatik olarak bağlar, bu nedenle çoğu betik hiçbir zaman doğrudan bir SDCard oluşturmaz – yalnızca otomatik bağlanan yol üzerinden okuma ve yazma yapar. Bir tanesini yalnızca varsayılan olmayan bir bağlama noktasına ya da readblocks() / writeblocks() / ioctl() aracılığıyla ham blok düzeyinde erişime ihtiyacınız olduğunda elle oluşturun.
OpenMV Cam M7 / H7 / H7 Plus / Pure Thermal / N6 üzerinde yuva, STM32’nin yonga üstü SDMMC denetleyicisi tarafından 4 bitlik SD modunda sürülür. OpenMV Cam RT1062 üzerinde yuva, yine 4 bitlik SD modunda i.MX RT’nin USDHC denetleyicisi tarafından sürülür. Mevcut hiçbir OpenMV kartında pin-mux argümanlarına gerek yoktur – sürücü kartın kablo bağlantısını bilir.
OpenMV Cam AE3 (alif portu) üzerinde sunulmaz.
Yapıcılar¶
- class machine.SDCard(id: int = 1) SDCard¶
idile tanımlanan SD yuvası içinSDCardtekil nesnesini (singleton) döndürür.id, portlar arası uyumluluk için kabul edilir ancak OpenMV tarafından desteklenen portlar yalnızca tek bir yuva sunar;1geçirin veya bunu atlayın.STM32 üzerinde yapıcı hiçbir argüman almaz; mimxrt üzerinde
idargümanı kabul edilir ancak yalnızca1geçerlidir.Yöntemler¶
- present() bool¶
Yuvada şu anda bir kart tespit ediliyorsa
True, aksi takdirdeFalsedöndürür.Bir kart algılama sinyalini kablolayan kartlarda bu yöntem o sinyali gerçek zamanlı olarak yansıtır; böylece
SDCardnesnesi oluşturulduktan sonra sıcak takma / çıkarmaya tepki vermek için yoklanabilir. Kart algılama sinyali olmayan kartlarda değer, oluşturma sırasında tutturulur (latch) – nesne oluşturulduğunda sürücünün yaptığı ilk CMD0 yoklamasının sonucunu bildirir ve sonradan sıcak takılan bir kart, nesne yeniden oluşturulana kadar (ya da mimxrt üzerindeinit()çağrılana kadar) görünmez.
- info() tuple[int, int, int]¶
Şu anda takılı olan kartı tanımlayan 3 öğeli bir demet döndürür:
[0]num_blocks– 512 baytlık bloklar cinsinden toplam kapasite. Ham bayt kapasitesini elde etmek için 512 ile çarpın.[1]block_size– SD kartlar için her zaman512. Çağıranların taşınabilir bir şekildenum_blocks * block_sizehesaplayabilmesi için dahil edilmiştir.[2]card_type– CMD8 / OCR başlatma el sıkışması sırasında SD veri yolunun bildirdiği kart türü. Tipik değerler0(SDSC – standart kapasite),0x40(SDHC / SDXC – yüksek / genişletilmiş kapasite) ve0x80(MMC) şeklindedir.
Kartın tanınıp tanınmadığını doğrulamak ya da toplam kapasiteye göre boş alan değerlerini görüntülemek için kullanışlıdır.
- power(state: bool, /) None¶
Kart yuvasının güç hattını açar veya kapatır. STM32 aygıt yazılımı (firmware) bu yöntemi sunar ancak mevcut hiçbir OpenMV Cam, SD güç beslemesini geçit (gate) altına almaz, bu nedenle çağrı pratikte bir işlem yapmaz. Başlangıçta yukarı akış MicroPython STM32 referans kartları için yazılmış kodlarla uyumluluk için tutulmuştur. Yalnızca STM32 portu.
- read(block_num: int, /) bytes¶
Karttan tek bir 512 baytlık blok okur ve bunu yeni ayrılmış bir
bytesnesnesi olarak döndürür.Bu, STM32 portuyla birlikte gelen eski tek blok okuma yöntemidir. Yeni kod bunun yerine
readblocks()kullanmalıdır – o yöntem her OpenMV portunda çalışır, tek bir aktarımda istenen sayıda bitişik bloğu okuyabilir ve çağıran tarafından sağlanan bir arabelleğe yazarak çağrı başına ayırma maliyetinden kaçınır. Yalnızca STM32 portu.
- write(block_num: int, data: bytes, /) None¶
Karta tek bir 512 baytlık blok yazar.
datatam olarak 512 bayt uzunluğunda olmalıdır.Bu, STM32 portuyla birlikte gelen eski tek blok yazma yöntemidir; yeni kod bunun yerine her OpenMV portunda çalışan ve çağrı başına istenen sayıda bitişik bloğu yazabilen
writeblocks()kullanmalıdır. Yalnızca STM32 portu.
- readblocks(block_num: int, buf: bytearray) None¶
- readblocks(block_num: int, buf: bytearray, offset: int) None
Karttan ham, blok hizalı veriyi
bufiçine okur. Dosya sistemi katmanı tarafından kullanılan standartvfs.AbstractBlockDevblok aygıtı giriş noktası.Basit biçim (
readblocks(block_num, buf)):block_numblok indisinden başlayarak tam blokları okur.len(buf)SD blok boyutunun (512 bayt) bir katı olmalıdır.Genişletilmiş biçim (
readblocks(block_num, buf, offset)):block_numbloğu içindeoffsetbaytından başlayaraklen(buf)bayt okur – bunun tam sayıda blok olması gerekmez. littlefs ve diğer bayt adreslenebilir dosya sistemleri tarafından kullanılır.
- writeblocks(block_num: int, buf: bytes | bytearray) None¶
- writeblocks(block_num: int, buf: bytes | bytearray, offset: int) None
bufiçindeki ham, blok hizalı veriyi karta yazar. Dosya sistemi katmanı tarafından kullanılan standartvfs.AbstractBlockDevblok aygıtı giriş noktası.Basit biçim (
writeblocks(block_num, buf)):block_numblok indisinden başlayarak tam blokları yazar.len(buf)SD blok boyutunun (512 bayt) bir katı olmalıdır. Etkilenen her blok tümüyle üzerine yazılır.Genişletilmiş biçim (
writeblocks(block_num, buf, offset)):block_numbloğu içindeoffsetbaytından başlayaraklen(buf)bayt yazar – bunun tam sayıda blok olması gerekmez. littlefs ve diğer bayt adreslenebilir dosya sistemleri tarafından kullanılır.
- ioctl(cmd: int, arg: int) int | None¶
Standart
vfs.AbstractBlockDevdenetim giriş noktası. Dosya sistemi katmanı tarafından bağlama/ayırma zamanında ve her eşitlemede çağrılır. Tanınancmddeğerleri şunlardır:1– başlat. Başarı durumunda0döndürür.2– başlatmayı kaldır (deinitialise). Başarı durumunda0döndürür.3– bekleyen yazmaları eşitle.0döndürür (SDMMC sürücüsü eşzamanlı yazar, boşaltılacak bir şey yoktur).4– aygıttaki blok sayısını döndürür.5– tek bir bloğun boyutunu döndürür (her zaman 512).6– bir bloğu siler (SD’de işlem yapmaz,vfs.AbstractBlockDevsözleşmesi için tutulmuştur).7– aygıtın blok silmeyi destekleyip desteklemediğini döndürür (SD’de 0).
Doğrudan çağıranlar normalde bu yöntemi kullanmaz –
SDCardbağlandıktan sonra dosya sistemi sürücüsü tüm standart kodları otomatik olarak sevk eder.
- init(*args, **kwargs) None¶
SD arayüzünü sıfırdan yeniden başlatır. Yapıcıyla aynı argümanları kabul eder.
present()aksi takdirde oluşturma sırasında tutturulduğundan (latch), kart algılama sinyali olmayan kartlarda sıcak takılan bir kartı yeniden tespit etmek için kullanışlıdır. Yalnızca mimxrt portu.
- deinit() None¶
SD arayüzünü başlatmayı kaldırır (deinitialise); SDMMC/USDHC denetleyicisini ve sahiplendiği IO pinlerini serbest bırakır.
init()yeniden çağrılana kadarSDCardnesnesi kullanılamaz hale gelir. Kartı başka bir arayüzden yeniden yazmadan önce ya da pil ile çalışan bir uygulamada yuvanın gücünü kesmek için kullanın. Yalnızca mimxrt portu.