Public feed
#727277
#include <windows.h>#include <stdio.h>HANDLE com=0;int com_close() { if(com) CloseHandle(com); com=0; return 0;}int com_startup(char *port) { DCB params = {0}; COMMTIMEOUTS timeouts = {0};FILE* dcbFile;FILE* timeoutsFile; com = CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(com==INVALID_HANDLE_VALUE) { com=0; return 0; } //if (!GetCommTimeouts(com, &?) // Save original comm timeouts //error params.DCBlength=sizeof(params); if(!GetCommState(com, ¶ms)) return com_close(); params.BaudRate = CBR_115200; params.ByteSize = 8; params.StopBits = ONESTOPBIT; params.Parity = NOPARITY; params.fDtrControl = DTR_CONTROL_DISABLE; params.fRtsControl = RTS_CONTROL_DISABLE; params.fOutxCtsFlow = FALSE; params.fOutxDsrFlow = FALSE; params.fDsrSensitivity = FALSE; params.fOutX = FALSE; params.fInX = FALSE; params.fTXContinueOnXoff = FALSE;dcbFile = fopen("dcb.bin", "wb");fwrite(¶ms, sizeof(params), 1, dcbFile);fclose(dcbFile); if(!SetCommState(com, ¶ms)) return com_close(); //read timeout = chars*multiplier+constant timeouts.ReadIntervalTimeout=0; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 0; timeouts.WriteTotalTimeoutMultiplier = 0;timeoutsFile = fopen("timeouts.bin", "wb");fwrite(&timeouts, sizeof(timeouts), 1, timeoutsFile);fclose(timeoutsFile); if(!SetCommTimeouts(com, &timeouts)) return com_close(); return 1;}void com_flush() { PurgeComm(com, PURGE_TXABORT | PURGE_TXCLEAR | PURGE_RXABORT | PURGE_RXCLEAR);}void com_shutdown() { if(com) { //SetCommTimeouts(com, &?); // restore original comm timeouts com_flush(); com_close(); }}//write byte to com portint com_write(int c) { int written=0; if(com) WriteFile(com, &c, 1, &written, NULL); return written;}//write bytes to com port//returns # of bytes writtenint com_writebuf(char *buf, int size) { int written=0; if(com) WriteFile(com, buf, size, &written, NULL); return written;}//read bytes from com//returns # of bytes readint com_read(char *buf, int size) { int read=0; if(com) ReadFile(com, buf, size, &read, NULL); return read;}