#include <windows.h> #include <stdio.h> int main() { // Defining hexadecimal bytes int bytes_to_send[5]; bytes_to_send[0] = 0x81; bytes_to_send[1] = 0x11; bytes_to_send[2] = 0xF1; bytes_to_send[3] = 0x11; bytes_to_send[4] = 0x04; // Declare variables and structures HANDLE hSerial; DCB dcbSerialParams = {0}; COMMTIMEOUTS timeouts = {0}; // Open the highest available serial port number fprintf(stderr, "Opening serial port..."); hSerial = CreateFile( "\\\\.\\COM4", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hSerial == INVALID_HANDLE_VALUE) { fprintf(stderr, "Error\n"); return 1; } else fprintf(stderr, "OK\n"); // Set device parameters (10400 baud, 1 start bit, // 1 stop bit, no parity) dcbSerialParams.DCBlength = sizeof(dcbSerialParams); if (GetCommState(hSerial, &dcbSerialParams) == 0) { fprintf(stderr, "Error getting device state\n"); CloseHandle(hSerial); return 1; } dcbSerialParams.BaudRate = CBR_10400; // CBR_10400 undeclared error// dcbSerialParams.ByteSize = 8; dcbSerialParams.StopBits = ONESTOPBIT; dcbSerialParams.Parity = NOPARITY; if(SetCommState(hSerial, &dcbSerialParams) == 0) { fprintf(stderr, "Error setting device parameters\n"); CloseHandle(hSerial); return 1; } // Set COM port timeout settings timeouts.ReadIntervalTimeout = 50; timeouts.ReadTotalTimeoutConstant = 50; timeouts.ReadTotalTimeoutMultiplier = 10; timeouts.WriteTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 10; if(SetCommTimeouts(hSerial, &timeouts) == 0) { fprintf(stderr, "Error setting timeouts\n"); CloseHandle(hSerial); return 1; } // Send specified text (remaining command line arguments) DWORD bytes_written, total_bytes_written = 0; fprintf(stderr, "Sending bytes..."); if(!WriteFile(hSerial, bytes_to_send, 5, &bytes_written, NULL)) { fprintf(stderr, "Error\n"); CloseHandle(hSerial); return 1; } fprintf(stderr, "%d bytes written\n", bytes_written); // Close serial port fprintf(stderr, "Closing serial port..."); if (CloseHandle(hSerial) == 0) { fprintf(stderr, "Error\n"); return 1; } fprintf(stderr, "OK\n"); // exit normally return 0; }
CBR_10400
CBR_*
CBR_14400
dcbSerialParams.BaudRate = 10400;
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)