USB Device - Joystick/Mouse  1.0
serial.h
Go to the documentation of this file.
1 #ifndef _SERIAL_H_
2 #define _SERIAL_H_
3 
4 #include "types.h"
5 
6 class CRS232
7 {
8 
9  // ktery COM to bude
10  int comNr;
11  // sledovani casu znaku
12  unsigned long lastTick; // jen mimo BOOT budu merit mezery
13  unsigned long lastCharTime_; //cas posledniho nacteneho znanku, pouzito k hledani mezery mezi ramci pro Modbus
14  // buffery
15  unsigned short maxRxLen;// maximalni delka bufferu prijmu
16  unsigned short maxTxLen;// maximalni delka bufferu vysilani
17  unsigned char *buffRx;
18  unsigned char *buffTx;
19 
20  //=== Ukazatele
21  unsigned short wrIxRx;
22  unsigned short rdIxRx;
23  unsigned short wrIxTx;
24  unsigned short rdIxTx;
25  unsigned short rdIxTxMark;
26  bool buffRxOverflow;
27 
28  // init prvopocatecni, vyresi se sam, prvnim vytvoreni tridy
29  static void RS232_Init();
30  static bool rs232Initialized;
31 
32  void RS485_EnableTransmit();// chyti si sbernici
33  void RS485_EnableReceive();// uvolni si sbernici
34 
35  bool initialized;// priznak ze init probehl OK, bez nej trida nedela nic
36 public:
37  CRS232();
38  ~CRS232();
39 
40  bool send_does_echo();// zjisti od HAL, jestli je mozne ze tu bude echo pri vysilani znaku
41  static unsigned char getParityByChar(char cp);
42  bool init(int comNr, unsigned long baudRate, unsigned char parity, unsigned short maxRxLen, unsigned short maxTxLen);
43  void done();
44 
47  void iniCharReceiver(iChar, void *);
48 
49  bool send_byte(unsigned char b);
50  bool send_bytes(const unsigned char *data, int len);
51  bool send_bytes_safe(const unsigned char *data, int len);// zajisti ze se vse posle....pokud bude buffer plny, pocka nez se kus uvolni
52  bool read_byte(unsigned char &b);
53  //nacte znak, b-znak, charTout-rozdil od predchoziho znaku [100us], lastCharTime-cas nacteni posledniho znaku [100us]
54  bool read_byte(unsigned char &b, unsigned short &charTout, unsigned long &lastCharTime);
55  int read_bytes(unsigned char *b, int maxLen);
56  bool flush();
57  bool flush(bool clearRX);
58  void clearRxBuff();
59  // void blockRxUntilSentEvent() {blockRxUntilSent = true;}
60  void mark_tx_ix_rd();// poznamena si ukazatel na zacatek dat pro odeslani pred vlozenim dalsich dat
61  void mark_back_tx_ix_rd();// vrati pointer
62  int get_mark_back_len();// vrati delku dat oznacenych pro opakovani
63  bool is_sending();
64  unsigned short get_rx_len();
65  bool peek_rx_byte(unsigned short ix, unsigned char &b);
66 
67  void setRTS(bool state);
68  void waitForSent();
69 
70  friend void rs232IsrHandlerCPP(int comNr);// je tu kvuli volani void rs232IsrHandler();
71 
72 private:
73  // na toto nesahat
74  void rs232IsrHandler();
75 
76 };
77 
78 #endif
void(* iChar)(unsigned char, void *)
Definition: types.h:14
static unsigned char getParityByChar(char cp)
Definition: serial.cpp:228
bool init(int comNr, unsigned long baudRate, unsigned char parity, unsigned short maxRxLen, unsigned short maxTxLen)
Definition: serial.cpp:71
friend void rs232IsrHandlerCPP(int comNr)
Definition: serial.cpp:561
bool flush()
Definition: serial.cpp:392
unsigned short get_rx_len()
Definition: serial.cpp:351
void clearRxBuff()
Definition: serial.cpp:432
int get_mark_back_len()
Definition: serial.cpp:483
void waitForSent()
Definition: serial.cpp:445
bool is_sending()
Definition: serial.cpp:488
void done()
Definition: serial.cpp:62
void mark_back_tx_ix_rd()
Definition: serial.cpp:474
bool send_bytes(const unsigned char *data, int len)
Definition: serial.cpp:275
~CRS232()
Definition: serial.cpp:57
bool read_byte(unsigned char &b)
Definition: serial.cpp:301
void iniCharReceiver(iChar, void *)
Definition: serial.cpp:26
Definition: serial.h:6
int read_bytes(unsigned char *b, int maxLen)
Definition: serial.cpp:324
void setRTS(bool state)
Definition: serial.cpp:498
void * charReceiverPar
Definition: serial.h:46
CRS232()
Definition: serial.cpp:32
bool send_byte(unsigned char b)
Definition: serial.cpp:258
bool send_bytes_safe(const unsigned char *data, int len)
Definition: serial.cpp:286
bool send_does_echo()
Definition: serial.cpp:251
void mark_tx_ix_rd()
Definition: serial.cpp:465
bool peek_rx_byte(unsigned short ix, unsigned char &b)
Definition: serial.cpp:336
iChar inputChar
Definition: serial.h:45