Subversion Repositories HomeAutomation

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. #ifndef __SERIALCONNECTION_H
  2. #define __SERIALCONNECTION_H
  3.  
  4. #include <crtdbg.h>
  5. #include <tchar.h>
  6. #include <windows.h>
  7. #include <stdio.h>
  8. #include <process.h>
  9. #include "CanProtoMessage.h"
  10. #include "compiler.h"
  11.  
  12. #define SERIAL_INPUT_BUFFER_SIZE 1024
  13. #define SERIAL_READ_BUFFER_SIZE 8192
  14. #define QUEUE_PLACES 32
  15.  
  16.  
  17. class SerialConnection
  18. {
  19. public:
  20.     // Baudrate
  21.     typedef enum
  22.     {
  23.         EBaudUnknown = -1,          // Unknown
  24.         EBaud110     = CBR_110,     // 110 bits/sec
  25.         EBaud300     = CBR_300,     // 300 bits/sec
  26.         EBaud600     = CBR_600,     // 600 bits/sec
  27.         EBaud1200    = CBR_1200,    // 1200 bits/sec
  28.         EBaud2400    = CBR_2400,    // 2400 bits/sec
  29.         EBaud4800    = CBR_4800,    // 4800 bits/sec
  30.         EBaud9600    = CBR_9600,    // 9600 bits/sec
  31.         EBaud14400   = CBR_14400,   // 14400 bits/sec
  32.         EBaud19200   = CBR_19200,   // 19200 bits/sec (default)
  33.         EBaud38400   = CBR_38400,   // 38400 bits/sec
  34.         EBaud56000   = CBR_56000,   // 56000 bits/sec
  35.         EBaud57600   = CBR_57600,   // 57600 bits/sec
  36.         EBaud115200  = CBR_115200,  // 115200 bits/sec
  37.         EBaud128000  = CBR_128000,  // 128000 bits/sec
  38.         EBaud256000  = CBR_256000,  // 256000 bits/sec
  39.     }
  40.     EBaudrate;
  41.  
  42.     // Data bits (5-8)
  43.     typedef enum
  44.     {
  45.         EDataUnknown = -1,          // Unknown
  46.         EData5       =  5,          // 5 bits per byte
  47.         EData6       =  6,          // 6 bits per byte
  48.         EData7       =  7,          // 7 bits per byte
  49.         EData8       =  8           // 8 bits per byte (default)
  50.     }
  51.     EDataBits;
  52.  
  53.     // Parity scheme
  54.     typedef enum
  55.     {
  56.         EParUnknown = -1,           // Unknown
  57.         EParNone    = NOPARITY,     // No parity (default)
  58.         EParOdd     = ODDPARITY,    // Odd parity
  59.         EParEven    = EVENPARITY,   // Even parity
  60.         EParMark    = MARKPARITY,   // Mark parity
  61.         EParSpace   = SPACEPARITY   // Space parity
  62.     }
  63.     EParity;
  64.  
  65.     // Stop bits
  66.     typedef enum
  67.     {
  68.         EStopUnknown = -1,          // Unknown
  69.         EStop1       = ONESTOPBIT,  // 1 stopbit (default)
  70.         EStop1_5     = ONE5STOPBITS,// 1.5 stopbit
  71.         EStop2       = TWOSTOPBITS  // 2 stopbits
  72.     }
  73.     EStopBits;
  74.  
  75.  
  76. public:
  77.     SerialConnection(LPCTSTR portName,EBaudrate baudRate,EDataBits byteSize,EParity parity, EStopBits stopBits);
  78.     ~SerialConnection();
  79.     bool open(void);
  80.     bool close(void);
  81.     bool isOpen(void);
  82.     bool write(LPCVOID lpBuffer, unsigned int nNumberOfBytesToWrite);
  83.     HANDLE getHandle(void);
  84.     bool getMessage(CanProtoMessage *cpm);
  85.  
  86. protected:
  87.     LPCTSTR uportName;
  88.     EBaudrate ubaudRate;
  89.     EDataBits ubyteSize;
  90.     EParity uparity;
  91.     EStopBits ustopBits;
  92.    
  93. }; 
  94.  
  95.  
  96. #endif