Ответ: вот он
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено WM 18 марта 2003 г. 17:24
В ответ на: Вы бы хоть кусок кода показали, что ли... отправлено serega953 18 марта 2003 г. 17:13


ClearCommError(port,lpErrors,lpStat); показывает что данные есть
ReadFile(port,&buf[count],1,&ntake,NULL); при чтении говорит, что считано 0 байт

ниже САМ кусок

int TFMain::ReadOneRecord(char *buf,long len)
{
BYTE pSum1,pSum2;

// String scn;

int count = 0;
int controlK = 0;
while (true) {
ClearCommError(port,lpErrors,lpStat);
// DWORD kkk = lpStat->cbInQue;
ReadFile(port,&buf[count],1,&ntake,NULL);

// control << count << " " << Gcount << " " << kkk << endl;

if (ntake > 0)
count++;
else
controlK++;
if (count == len) {
Gcount = Gcount + len - 2; // это для отбражения
break;
}
if (controlK > 2000)
return 16; // нет данных
}

CRCFletcher(len-2,buf,pSum1,pSum2); // подсчет контрольной суммы
BYTE c1 = buf[len-2];
BYTE c2 = buf[len-1];

// scn = "Контрольная сумма";
// control << scn.c_str() << " " << pSum1 << " " << pSum2 << " " <<
// c1 << " " << c2 << endl;

if ((c1 == pSum1) && (c2 == pSum2)) { // контрольная сумма совпала
WriteFile(port,"Ok",2,&nsend,NULL);
// Memo1->Lines->Add("Ok"); мой комментарий
return 1;
}
else { // контрольная сумма не совпала
WriteFile(port,"No",2,&nsend,NULL);
Memo1->Lines->Add("No");
return 0;
}
}
//-------------------------------------------------------------------

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru