Re: Repetier 1.0.0 i zapowiedź 2
: 01 sty 2018, 22:57
Ah chciałem edytować post a go zacytowałem. Do wywalenia .
Kod: Zaznacz cały
bool Sd2Card::readBlock(uint32_t blockNumber, uint8_t* dst) {
// use address if not SDHC card
if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9;
#if ENABLED(SD_CHECK_AND_RETRY)
uint8_t retryCnt = 3;
for(;;) {
if (cardCommand(CMD17, blockNumber))
Kod: Zaznacz cały
if(sd.sdmode == 0 || sd.sdmode >= 100 || commandsReceivingWritePosition != 0) // not reading or incoming serial command
return;
while( sd.filesize > sd.sdpos && commandsReceivingWritePosition < MAX_CMD_SIZE) // consume data until no data or buffer full
{
timeOfLastDataPacket = HAL::timeInMilliseconds();
int n = sd.file.read();
if(n == -1)
{
Com::printFLN(Com::tSDReadError);
UI_ERROR("SD Read Error");
// Second try in case of recoverable errors
sd.file.seekSet(sd.sdpos);
n = sd.file.read();
if(n == -1)
{
Com::printErrorFLN(PSTR("SD error did not recover!"));
sd.sdmode = 0;
break;
}
UI_ERROR("SD error fixed");
}
Dokładnie tak mi się wydaje i do tego zmierzam. Czyli funkcja SD_CHECK_AND_RETRY powinna też pomóc na problemy z odczytem karty SD niezależnie od tego czy g-code ma CRC czy nie.rafaljot pisze:hmm, to są chyba dwa różne CRC. to tu, w kodzie, który przytoczyliśmy z Marlina i Repetiera, to chyba jest nie na poziomie gcode, tylko bloku danych karty SD.
przy czym CRC w gcode to tylko propozycja chyba i nie jest zaimplementowane.
oraz pełna obsługa drugiego silnika w osi Z.Automatically enable PS ON pin on usage of steppers and heaters (AUTOMATIC_POWERUP)