Рейтинг:
9
OriginalGriff
Нет.
Отчасти мы здесь не для того, чтобы делать вашу работу за вас, но в основном мы не служба перевода кода и не писали Термит в любом случае.
И если вы думаете, что 37 байт за три секунды-это "слишком много", то вам действительно нужно освежить в памяти последовательные комы...
Member 12533122
я не прошу тебя делать это за меня.
поскольку я работаю над последовательной связью и вижу, что прием данных происходит быстрее в термите, но в моем приложении я получаю 1 пакет за 3 секунды. поэтому я прошу код термита, или вы также можете помочь мне другими способами.
я просто хочу читать данные быстрее.
любая помощь будет мне полезна
OriginalGriff
Как вы ожидаете от нас помощи, если мы понятия не имеем, как работает ваш код?
Member 12533122
BOOL bReadRC;
DWORD iBytesRead;
DWORD dwError;
unsigned char sBuffer[255];
char sMsg[512];
если(iVal == 0)
{
старт = часы();
}
memset(sBuffer,0,sizeof(sBuffer));
bReadRC = ReadFile(handle_comm, &sBuffer, 255, &iBytesRead, NULL);
if (bReadRC && iBytesRead > 0)
{
итоа(sBuffer[iVal],sMsg,10);;
//printf("\n%d::%s",iVal,sMsg);
Однако темп(смсг);
iBuffer[iVal] = _wtoi(temp);
//printf("\n>>%d,",iBuffer[iVal]);
ивал++;
if(iVal == PACKET_SIZE)
{
iVal = 0;
//printf("\n");
unsigned int iTimeDiff = clock()-start;
printf("\niTimeDiff :: %d",iTimeDiff);
}
}
это мой код, который я прочитал вот так
OriginalGriff
И это будет медленно. Почему? Потому что он пытается прочитать 255 байт, а вы получаете только 37 - так что он, по-видимому, тайм-аут. Попробуйте читать по одному байту за раз и посмотрите, что получится.
Member 12533122
этот
bReadRC = ReadFile(handle_comm, &sBuffer, 255, &iBytesRead, NULL);
функция readfile уже дает мне один за другим байт.
я не получу весь пакет сразу . я получаю байт за байтом.
так должен ли я заменить 255 на 1 ?
Dave Kreskowiak
На самом деле, вы должны прочитать о серийной связи. Вы либо сидите и ждете блок байтов, который вы можете никогда не получить (ваша первая попытка), либо вы обрабатываете один байт за раз, создавая сообщение, которое вы ждете. Получив сообщение, вы можете обработать его и вернуться к обработке байтов, по одному за раз, для построения следующего сообщения.
Member 12533122
спасибо за решение.
поступая
bReadRC = ReadFile(handle_comm, &sBuffer, 1, &iBytesRead, NULL);
чтение только одного байта помогает мне сделать это быстрее.