Member 12533122 Ответов: 1

Может ли кто-нибудь предоставить мне исходный код термита на C++ ?


мне нужен исходный код термита на c++, а не на c#.

пожалуйста, кто-нибудь помогите мне в этом вопросе.

Что я уже пробовал:

as i am using serial communication in vc++ i am getting 37 byte packet in 3 second and that is too much.
so i need help in this.

1 Ответов

Рейтинг:
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);

чтение только одного байта помогает мне сделать это быстрее.