Vladimir Ljaschko (23.05.2011 08:34, просмотров: 6088)
Ком-порт PC затыкается после трех символов. Устройство передает точки через 250 мс. Программа на компьютере должна их распознать.
Компорт отдает три точки, четвертый символ -2 (0хffff и затыкается, перезапуск программы с открытием порта не влияет.
Но если запустить гипертерминал, там все нормально, если выйти и запустить мою программу, порт опять отдает три точки и опять затыкается.
int ReceiveComChars(unsigned char * inout_buffer, DWORD max_qty)
{ DWORD numbytes_ok;
ReadFile(port, inout_buffer, max_qty, &numbytes_ok,NULL );
return numbytes_ok;
}
char PointsRunning(void)
{
#define MAGIC_LENGTH 8
char magic_word[MAGIC_LENGTH+1]="........";
char TERMINAL_BUF_SIZE=1;
unsigned char terminal_buf[11];
char show_b[12];
DWORD chars;
int magic_ind=0;
for (;;)
{ chars=ReceiveComChars(terminal_buf, TERMINAL_BUF_SIZE);
snprintf(show_b,chars+1,"%s",terminal_buf,chars);
printf("%s",show_b);
if (chars)
{ printf("<%d>", chars);
printf("(%x)",show_b[0]);
if (terminal_buf[0]==magic_word[magic_ind])
{ if (magic_ind<MAGIC_LENGTH-1)
magic_ind++;
else
return 1;
}
else
magic_ind=0;
}
else
{ printf("-");
}
if (_kbhit())
{
return 0;
}
}
}