376字節(jié)寫,每次只能寫512字節(jié),也就是說每次寫入的字節(jié)數(shù)的整數(shù)倍是512才能保證不出錯,在字節(jié)寫的時候有沒有查詢扇區(qū)剩余字節(jié)數(shù)的命令,每次只有發(fā)送開始寫(2D)命令,才會返回可寫的字節(jié)數(shù)啊,比如說,每次寫入128字節(jié)的話,理論上是沒問題的,但是如果中間某次數(shù)據(jù)出錯,出現(xiàn)了錯位的話,那么每到512字節(jié)都會出錯啊,如果在每次寫之前先判斷扇區(qū)剩余量的話,就可以避免某個數(shù)據(jù)錯位而造成后面的連串錯誤,那么怎么才能查詢扇區(qū)剩余量呢?
首先我們沒有查詢扇區(qū)剩余字節(jié)數(shù)的命令,字節(jié)寫的話一次可以寫是0~65536字節(jié)數(shù)據(jù)。每次發(fā)送0x2D向內(nèi)部指定緩沖區(qū)寫入請求的數(shù)據(jù)塊。比如你每次寫120個字節(jié),前四次返回長度120,第五次返回32,第六次返回88之后如此循環(huán),這樣的話如果某次數(shù)據(jù)出錯,不會造成連串錯誤。
那么如果每次以128字節(jié)的方式寫入,發(fā)送0x3c加128字節(jié)數(shù)的話,是不是這時候如果發(fā)的數(shù)據(jù)多余128字節(jié),超出的部分自動丟棄,再發(fā)0x3D命令,返回14,如果實際發(fā)的數(shù)據(jù)少于128字節(jié)的話,再發(fā)0x3D命令,一直返回0x1e? 如果是這樣的話,只要保證每次發(fā)的命令寫字節(jié)數(shù)正確,就可以保證一次數(shù)據(jù)錯位不影響后面的錯位,是不是這樣?
不是啊!比如你發(fā)0x3c加128字節(jié)數(shù),第一次發(fā)2D返回128再發(fā)3D返回1e,繼續(xù)發(fā)2D返回0x3c,再發(fā)3D返回不是1e跳出循環(huán)。它是分次寫的,不會影響下一次。
你好,我在請問一下,如果我每次以128字節(jié)的方式寫,前3幀數(shù)都正常寫入,第4幀數(shù)據(jù)發(fā)了129個字節(jié),還會返回1E嗎?這時候已經(jīng)到了512字節(jié)的扇區(qū)邊界啊,也就是說,扇區(qū)剩余空間只剩128字節(jié)了,而我們發(fā)了129字節(jié)數(shù)據(jù),返回的將是什么?
你這種情況第四幀以128字節(jié)寫入,返回1E。接著第五幀寫1字節(jié),返回14。