main.cpp
上传用户:kathy7909
上传日期:2007-03-27
资源大小:15k
文件大小:3k
源码类别:

并口编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "ParallelPort.h"
  3. CWinApp theApp;
  4. void DisplayUsage()
  5. {
  6.   _tprintf(_T("Usage: ParallelPort /S | /R filenamen"));
  7.   _tprintf(_T("Remember to run the receiver side first as elsen"));
  8.   _tprintf(_T("the sender side will timeout with error 1460 (timeout)n"));
  9. }
  10. void _tmain(int argc, TCHAR* argv[])
  11. {
  12.   //Initialise MFC 
  13. if (!AfxWinInit(GetModuleHandle(NULL), NULL, NULL, SW_SHOW))
  14.     return;
  15.   //Validate that we have enough command line parameters
  16.   if (argc < 3)
  17.   {
  18.     DisplayUsage();
  19.     return;
  20.   }
  21.   try
  22.   {
  23.     CParallelPort port;
  24.     port.Open(1);
  25.     if ((_tcscmp(argv[1], _T("/S")) == 0) || (_tcscmp(argv[1], _T("/s")) == 0)) 
  26.     {
  27.       //Wait for the other end to become not busy
  28.       _tprintf(_T("Waiting for other side to initialize..n"));
  29.       CParallelPortFileTransfer transfer(&port);
  30.       CFileStatus fs;
  31.       if (CFile::GetStatus(argv[2], fs))
  32.       {
  33.         _tprintf(_T("Sending file: %sn"), argv[2]);
  34.         DWORD dwStartTicks = GetTickCount();
  35.         transfer.SendFile(argv[2]);
  36.         DWORD dwTimeTaken = GetTickCount() - dwStartTicks;
  37.         _tprintf(_T("Time taken was: %d Millisecondsn"), dwTimeTaken);
  38.         _tprintf(_T("File size was: %d bytesn"), fs.m_size);
  39.         _tprintf(_T("Average transfer rate was: %f Kilobytes per Secondn"), fs.m_size * 1000.0 / 1024.0 / dwTimeTaken);
  40.       }      
  41.       else
  42.         _tprintf(_T("Could not find the file %sn"), argv[2]);    
  43.     }
  44.     else if ((_tcscmp(argv[1], _T("/R")) == 0) || (_tcscmp(argv[1], _T("/r")) == 0))
  45.     { 
  46.       //Set the receive timeout to 30 seconds
  47.       port.SetTimeout(30000);
  48.       
  49.       //Wait for the other end to become not busy
  50.       _tprintf(_T("Waiting for other side to initialize..n"));
  51.       CParallelPortFileTransfer transfer(&port);
  52.       //Wait for the other end to send a file
  53.       _tprintf(_T("Waiting to receive filen"));
  54.     
  55.       int S6;
  56.       do
  57.       {
  58.         S6 = (port.ReadStatus() & 0x40) >> 6;
  59.         _tprintf(_T("."));
  60.         //Wait for a while before trying again
  61.         Sleep(500);
  62.       }
  63.       while (S6 == 1);
  64.  
  65.       //Receive the file
  66.       _tprintf(_T("Receiving file: %sn"), argv[2]);
  67.       transfer.ReceiveFile(argv[2]);
  68.     }
  69.     else
  70.     {
  71.       DisplayUsage();
  72.       return;
  73.     }
  74.   }
  75.   catch(CParallelException* pEx)
  76.   {
  77.     CString sError = pEx->GetErrorMessage();
  78.     if (sError.GetLength())
  79.       _tprintf(_T("Error: %sn"), sError);
  80.     else
  81.       _tprintf(_T("Error: %dn"), pEx->m_dwError);  
  82.     pEx->Delete();
  83.   }
  84. }