OSDN Git Service

parallel port
[psychlops/cpp.git] / psychlops / platform / win32 / psychlops_devices_parallelport_Win32.cpp
index c9232fa..9f8e0f0 100644 (file)
@@ -19,36 +19,35 @@ namespace Devices {
        //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