⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 move2.cpp

📁 又VC++实现的基于TWAIN的扫描仪图像输入处理软件
💻 CPP
字号:
// MOVE2.cpp : implementation file
#include "stdafx.h"
#include "source10.h"
#include "MOVE2.h"
#include "wnaspi32.h"
#include "scsidefs.h"
#include "Scanner.h"
#include "Setscanner.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

extern char InitDir2[100];
extern CScanner *pScanner;
extern CSetScanner *pSetScanner;
/////////////////////////////////////////////////////////////////////////////
// CMOVE2 dialog
CMOVE2::CMOVE2(CWnd* pParent /*=NULL*/)
	: CDialog(CMOVE2::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMOVE2)
	m_MovTSH = _T("");
	//}}AFX_DATA_INIT
     m_pParent = pParent;
 	 m_nID = CMOVE2::IDD;
}

void CMOVE2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMOVE2)
	DDX_CBIndex(pDX, IDC_COMBO_MOVEF, m_MoveF);
	DDX_Control(pDX, IDC_MOVE2, m_Edit);
	DDX_Text(pDX, IDC_MOVE2, move); 
	DDV_MinMaxInt(pDX, move, 0, 3900);
	DDX_Text(pDX, IDC_STATIC_TSH, m_MovTSH);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMOVE2, CDialog)
	//{{AFX_MSG_MAP(CMOVE2)
	ON_BN_CLICKED(IDOK2, OnOk)
    ON_WM_CLOSE()   
	ON_CBN_SELCHANGE(IDC_COMBO_MOVEF, OnSelchangeComboMovef)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
void CMOVE2::OnOk() 
{
	char str[36];

    DWORD ASPI32Status=0xff;	
	SRB_ExecSCSICmd mySRBEIO;
    
	int Move_Max=GetPrivateProfileInt("move","Move_Max",100,InitDir2);

    UpdateData(true); 
	if(move<0||move>Move_Max)	//输入、下传坐标单位:毫米。
	{
	  MessageBox("输入超界,重新输入");
	  return;
	}
    sprintf(str, "%d", move);
	WritePrivateProfileString("move", "move", str, InitDir2);
    sprintf(str, "%d", m_MoveF);
	WritePrivateProfileString("move", "m_MoveF", str, InitDir2);

	int ASPI_Host_Adapter_ID1=GetPrivateProfileInt("ASPI_Adapter","ASPI",0,InitDir2);
	
    mySRBEIO.SRB_Cmd		=SC_EXEC_SCSI_CMD;	
	mySRBEIO.SRB_Status		=0;					
	mySRBEIO.SRB_HaId		=ASPI_Host_Adapter_ID1;	
	mySRBEIO.SRB_Flags		=SRB_DIR_SCSI;		
	mySRBEIO.SRB_Hdr_Rsvd	=0;				
	mySRBEIO.SRB_Target		=6;					
	mySRBEIO.SRB_Lun		=0;				
	mySRBEIO.SRB_Rsvd1		=0;					
	mySRBEIO.SRB_BufLen		=0;				
	mySRBEIO.SRB_BufPointer	=0;
	mySRBEIO.SRB_SenseLen	=SENSE_LEN;		
	mySRBEIO.SRB_CDBLen		=10;			
	mySRBEIO.SRB_HaStat		=0;					
	mySRBEIO.SRB_TargStat	=0;                
	mySRBEIO.SRB_Rsvd2	    =0;			

	mySRBEIO.CDBByte[0]		=0x31;
	mySRBEIO.CDBByte[1]		=0x02;
	mySRBEIO.CDBByte[2]		=m_MoveF;
	mySRBEIO.CDBByte[3]		=0;
	mySRBEIO.CDBByte[4]		=0;
	mySRBEIO.CDBByte[5]		=FIRSTBYTEOFDWORD(move);
	mySRBEIO.CDBByte[6]		=SECONDBYTEOFDWORD(move);
    mySRBEIO.CDBByte[7]     =THIRDBYTEOFDWORD(move);
	mySRBEIO.CDBByte[8]		=LASTBYTEOFDWORD(move);
	mySRBEIO.CDBByte[9]		=0;

	CString TSH_Bak=m_MovTSH;
	m_MovTSH="正在进行扫描头移动定位!";
	UpdateData(false);	//导出

  	mySRBEIO.SRB_PostProc	=0;
	ASPI32Status =SendASPI32Command( (LPSRB) &mySRBEIO);
	while(mySRBEIO.SRB_Status==SS_PENDING);
    if(mySRBEIO.SRB_TargStat==0x02)    //约定GOOD为00H,检查出错为02H
	{
	   pSetScanner->SCSI_CHECK();
	}  
	m_MovTSH=TSH_Bak;
	UpdateData(false);	//导出

}

void CMOVE2::OnCancel() 
{
  CDialog::OnCancel();
}

void CMOVE2::OnClose() 
{
  //((CSetScanner*)m_pParent)->BoxDone(IDC_MOVE);
   CDialog::OnOK();
}
///////////////////////////////////////////////////////////////////////
//产生移动窗口对话框//
///////////////////////////////////////////////////////////////////////
BOOL CMOVE2::Create(void)
{
   CDialog::Create(m_nID,m_pParent);
	
	move=GetPrivateProfileInt("move","move",100,InitDir2);
	m_MoveF=GetPrivateProfileInt("move","m_MoveF",0,InitDir2);

	switch (m_MoveF)
		{
            case 0:
				m_Edit.EnableWindow(true);  
				m_MovTSH="请输入移动定位的目标位置";
            break;

            case 1:
				m_Edit.EnableWindow(false);
				m_MovTSH="移动定位到零点位置";
            break;

            case 2:
				m_Edit.EnableWindow(false);
				m_MovTSH="移动定位到中间位置";
            break;

            case 3:
				m_Edit.EnableWindow(false);
				m_MovTSH="移动定位到最大位置";
            break;

            default:
				m_Edit.EnableWindow(true);  
				m_MovTSH="请输入移动定位的目标位置";
            break;

		}
	
	UpdateData(false);   
	ShowWindow(SW_SHOW);

	return true;
}

void CMOVE2::OnSelchangeComboMovef() 
{
	UpdateData(true);
	switch (m_MoveF)
		{
            case 0:
				m_Edit.EnableWindow(true);  
				m_MovTSH="请输入移动定位的目标位置";
            break;

            case 1:
				m_Edit.EnableWindow(false);
				m_MovTSH="移动定位到零点位置";
            break;

            case 2:
				m_Edit.EnableWindow(false);
				m_MovTSH="移动定位到中间位置";
            break;

            case 3:
				m_Edit.EnableWindow(false);
				m_MovTSH="移动定位到最大位置";
            break;

            default:
				m_Edit.EnableWindow(true);  
				m_MovTSH="请输入移动定位的目标位置";
            break;

		}

	UpdateData(false);	//导出

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -