2016-05-17 03:04:11 +12:00
|
|
|
#pragma once
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
#ifndef TSCANNER_EPSON_INCLUDED
|
|
|
|
#define TSCANNER_EPSON_INCLUDED
|
|
|
|
|
|
|
|
#include "tscanner.h"
|
|
|
|
#include "TScannerIO/TScannerIO.h"
|
|
|
|
|
2016-04-27 18:04:18 +12:00
|
|
|
#include <memory>
|
|
|
|
|
2016-03-19 06:57:51 +13:00
|
|
|
/*
|
|
|
|
PLEASE DO NOT REMOVE unreferenced methods... they are useful for debugging :)
|
|
|
|
max
|
|
|
|
*/
|
|
|
|
|
2016-06-29 18:17:12 +12:00
|
|
|
class TScannerEpson final : public TScanner {
|
2016-06-15 18:43:10 +12:00
|
|
|
enum SettingsMode { OLD_STYLE, NEW_STYLE };
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
TScannerIO *m_scannerIO;
|
|
|
|
bool m_hasADF;
|
|
|
|
bool m_isOpened;
|
|
|
|
SettingsMode m_settingsMode;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
public:
|
2016-06-15 18:43:10 +12:00
|
|
|
TScannerEpson();
|
|
|
|
~TScannerEpson();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-19 20:06:29 +12:00
|
|
|
void selectDevice() override;
|
|
|
|
bool isDeviceAvailable() override;
|
|
|
|
bool isDeviceSelected() override;
|
|
|
|
void updateParameters(TScannerParameters ¶m) override; // vedi TScanner
|
|
|
|
void acquire(const TScannerParameters ¶ms, int paperCount) override;
|
2016-06-15 18:43:10 +12:00
|
|
|
bool isAreaSupported();
|
|
|
|
void closeIO();
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
private:
|
2016-06-15 18:43:10 +12:00
|
|
|
void doSettings(const TScannerParameters ¶ms, bool isFirstSheet);
|
|
|
|
void collectInformation(char *lev0, char *lev1, unsigned short *lowRes,
|
|
|
|
unsigned short *hiRes, unsigned short *hMax,
|
|
|
|
unsigned short *vMax);
|
|
|
|
bool resetScanner();
|
|
|
|
void reportError(std::string errMsg); // debug only
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
char *ESCI_inquiry(char cmd); /* returns 0 if failed */
|
|
|
|
bool ESCI_command(char cmd, bool checkACK);
|
|
|
|
bool ESCI_command_1b(char cmd, unsigned char p0, bool checkACK);
|
|
|
|
bool ESCI_command_2b(char cmd, unsigned char p0, unsigned char p1,
|
|
|
|
bool checkACK);
|
|
|
|
bool ESCI_command_2w(char cmd, unsigned short p0, unsigned short p1,
|
|
|
|
bool checkACK);
|
|
|
|
bool ESCI_command_4w(char cmd, unsigned short p0, unsigned short p1,
|
|
|
|
unsigned short p2, unsigned short p3, bool checkACK);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
std::unique_ptr<unsigned char[]> ESCI_read_data2(unsigned long &size);
|
|
|
|
void ESCI_readLineData(unsigned char &stx, unsigned char &status,
|
|
|
|
unsigned short &counter, unsigned short &lines,
|
|
|
|
bool &areaEnd);
|
|
|
|
void ESCI_readLineData2(unsigned char &stx, unsigned char &status,
|
|
|
|
unsigned short &counter);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
int receive(unsigned char *buffer, int size);
|
|
|
|
int send(unsigned char *buffer, int size);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
bool ESCI_doADF(bool on);
|
|
|
|
int sendACK();
|
|
|
|
bool expectACK();
|
|
|
|
void scanArea2pix(const TScannerParameters ¶ms, unsigned short &offsetx,
|
|
|
|
unsigned short &offsety, unsigned short &dimlx,
|
|
|
|
unsigned short &dimly, const TRectD &scanArea);
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|