Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstring>
- #include <iostream>
- #include "windows.h"
- #include "SerialPort.h"
- using namespace std;
- HANDLE initSerial(short int port, DWORD baudrate, BYTE byteSize, BYTE stopbit, BYTE parrity){
- HANDLE uartPort;
- char portName[14];
- char portNumber[4];
- strcpy(portName, "\\\\.\\COM");
- itoa(port, portNumber, 10);
- strcat(portName, portNumber);
- uartPort = CreateFileA(portName, GENERIC_READ | GENERIC_WRITE, NULL,0, OPEN_EXISTING, 0, NULL);
- if (uartPort == INVALID_HANDLE_VALUE) {
- if (GetLastError() == ERROR_FILE_NOT_FOUND) {
- cout << "serial port COM"<< uartPort << " does not exist\n";
- }
- cout << "come other error occured.\n";
- exit(1);
- }
- DCB dcbSerialParams = { 0 };
- dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
- if (!GetCommState(uartPort, &dcbSerialParams))
- {
- cout << "getting state error\n";
- exit(1);
- }
- dcbSerialParams.BaudRate = baudrate;
- dcbSerialParams.ByteSize = byteSize;
- dcbSerialParams.StopBits = stopbit;
- dcbSerialParams.Parity = parrity;
- if (!SetCommState(uartPort, &dcbSerialParams))
- {
- cout << "error setting serial port state\n";
- exit(1);
- }
- COMMTIMEOUTS CommTimeOuts = { 0 };
- if(GetCommTimeouts(uartPort, &CommTimeOuts)){
- cout << "CommTimeOuts.ReadIntervalTimeout" << CommTimeOuts.ReadIntervalTimeout << endl;
- cout << "CommTimeOuts.ReadTotalTimeoutConstant"<< CommTimeOuts.ReadTotalTimeoutConstant << endl;
- cout << "CommTimeOuts.ReadTotalTimeoutMultiplier" << CommTimeOuts.ReadTotalTimeoutMultiplier << endl;
- cout << "CommTimeOuts.WriteTotalTimeoutConstant" << CommTimeOuts.WriteTotalTimeoutConstant << endl;
- cout << "CommTimeOuts.WriteTotalTimeoutMultiplier" << CommTimeOuts.WriteTotalTimeoutMultiplier << endl;
- }else{
- cout << "error get set COMMTIMEOUTS" << endl;
- }
- SetCommTimeouts(uartPort, &CommTimeOuts);
- return uartPort;
- }
- DWORD sendData(HANDLE uPort, PCVOID data, unsigned int size){
- DWORD bytesWriten;
- WriteFile(uPort, data, sizeof(data), &bytesWriten, NULL);
- return bytesWriten;
- }
- DWORD getData(HANDLE uPort, PVOID data, unsigned int size){
- DWORD bytesReading = 1;
- int i;
- for(i = 0; bytesReading && i < size-1; i++){
- cout << ReadFile(uPort, ((PVOID)(((byte*)data)+i)), 1, &bytesReading, 0) << endl;
- cout << i << endl;
- }
- cout << "finish" << endl;
- *(((byte*)data)+i) = '\0';
- return i;
- }
- void closeSerial(HANDLE uPort){
- CloseHandle(uPort);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement