ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
255053
Vladimir Ljaschko (23.05.2011 08:34, просмотров: 5710)
Ком-порт 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; } } }