main.cpp
上传用户:angelica
上传日期:2010-03-17
资源大小:17k
文件大小:3k
源码类别:

并口编程

开发平台:

Visual C++

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