//https://msdn.microsoft.com/ja-jp/library/cc429198.aspx\r
//http://support.microsoft.com/kb/823179/ja
- ParallelPort::ParallelPort(size_t pin) : pins(pin) {\r
- handle = CreateFile("LPT1", GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);\r
- if(handle == INVALID_HANDLE_VALUE) {\r
- std::cout << "Failed to open parallel port." <<std::endl;\r
+ GenericParallelPort::GenericParallelPort(size_t pin) : pins(pin) {\r
+ if (!(handle = CreateDC(NULL , "TRIGGER_PARALLEL" , NULL , NULL))) {\r
+ printf("Parallel port was not found.");\r
handle = 0;\r
}\r
}
- ParallelPort::~ParallelPort() {\r
+ GenericParallelPort::~GenericParallelPort() {\r
if(handle!=0) {\r
- CloseHandle(handle);\r
+ DeleteDC(handle);\r
}\r
}\r
- double ParallelPort::getLatency() { return -1; }
- double ParallelPort::getJitterSD() { return -1; }
- Interval ParallelPort::getRange() { Interval i; return 0<=i<=5; }
- bool ParallelPort::isAnalog() { return false; }\r
-
- double ParallelPort::get() { return 0; }
- void ParallelPort::put(double v) { ; }
- void ParallelPort::pulse(double v) {\r
- unsigned char buff[1];\r
- DWORD writtenbytes;\r
- OVERLAPPED m_write;\r
-\r
- buff[0] = pins;\r
-\r
- WriteFile(handle, buff, 1, &writtenbytes, &m_write);\r
+ double GenericParallelPort::getLatency() { return -1; }
+ double GenericParallelPort::getJitterSD() { return -1; }
+ Interval GenericParallelPort::getRange() { Interval i; return 0<=i<=5; }
+ bool GenericParallelPort::isAnalog() { return false; }\r
+
+ double GenericParallelPort::get() { return 0; }
+ void GenericParallelPort::put(double v) { ; }
+ void GenericParallelPort::pulse(double v) {\r
+ DOCINFO diInfo = {0};\r
+ diInfo.cbSize = sizeof (DOCINFO);\r
+ diInfo.lpszDocName = "";\r
+ if (t%100 == 0 && StartDoc(handle , &diInfo) > 0) {\r
+ TextOut(handle , 0 , 0 , pins , 1);\r
+ EndDoc(handle);\r
+ }\r
}
- void ParallelPort::keep(double v) { ; }
+ void GenericParallelPort::keep(double v) { ; }
}
} /* <- namespace Psycholops */\r