#include unsigned long i,j,rxi,rxi2,txi,txi2,txctr; unsigned long txbys,rxbys,rxbyst,rxackc; DCB dcb; HANDLE hCom; DWORD dwError; BOOL fSuccess; BYTE txbuf[20]; BYTE rxbuf[32000]; BYTE footer[4000]; unsigned int footi,footi2; BYTE rxack=6,lixo,lixoc; unsigned int cksum,cksum2; COMMTIMEOUTS cto; HFILE hFile; OFSTRUCT OFS; #define DIRPATHSIZE 150 char FName[DIRPATHSIZE]; DWORD ferror; char *foots="<<>>"; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { hCom = CreateFile("COM2",GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hCom==INVALID_HANDLE_VALUE) {MessageBox(NULL,"Can't open COM port", "Error",MB_ICONERROR); return(0);} GetCommState(hCom, &dcb); dcb.BaudRate = 9600; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = TWOSTOPBITS; SetCommState(hCom, &dcb); GetCommTimeouts(hCom, &cto); cto.ReadIntervalTimeout=100; cto.ReadTotalTimeoutMultiplier=0; cto.ReadTotalTimeoutConstant=5000; cto.WriteTotalTimeoutMultiplier=0; cto.WriteTotalTimeoutConstant=0; SetCommTimeouts(hCom, &cto); rxi=0; footi=0; cksum=0; do { cksum2=0; rxi2=rxi; rxbyst=0; do {ReadFile(hCom,&rxbuf[rxi2],16,&rxbys,NULL); rxi2+=rxbys; rxbyst+=rxbys; if (rxi==0) {cto.ReadTotalTimeoutConstant=150; SetCommTimeouts(hCom, &cto);} } while (rxbys>0); if (rxbyst>0) { WriteFile(hCom,&rxack,1,&txbys,NULL); ReadFile(hCom,&lixo,1,&rxackc,NULL); for (i=rxi;i0) & (rxi<30000)); if (rxi>0) { lstrcpy(&rxbuf[rxi],foots); rxi+=lstrlen(foots); for (footi2=0;footi2