// Pro.h: interface for the CPro class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PRO_H__3915F601_F041_11D7_A019_9806402060C0__INCLUDED_)
#define AFX_PRO_H__3915F601_F041_11D7_A019_9806402060C0__INCLUDED_

#include "StdAfx.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//CPro:编程器类.
#define		WM_PRO_MSG				WM_USER+20
#define		PRO_INIT_SERIAL_ER		0//初始化串口出错
#define		PRO_INIT_PARALLEL_ER	1//初始化并口出错
#define		PRO_INIT_SERIAL_SEC		2//初始化串口成功
#define		PRO_INIT_SERIAL_NOT		3//未初始化串口
#define		PRO_INIT_PARALLEL_SEC	4//初始化并口成功
#define		PRO_AVAILABLE			5//设备可用
#define		PRO_INVALID				6//设备不可用
#define		PRO_RCV_ER				7//接收数据出错

#define		PRO_RD_SIGN				8//已读入特征字
#define		PRO_ERASE				9//已檫除器件
#define		PRO_WRITE_BEGIN			10//写开始
#define		PRO_WRITE_BLOCK			11//写入一块数据
#define		PRO_WRITE_OVER			12//写数据完成
#define		PRO_WRITE_ER			13//写数据出错
#define		PRO_READ_BEGIN			14//读开始
#define		PRO_READ_BLOCK			15//读入一块数据
#define		PRO_READ_OVER			16//读完成
#define		PRO_LOCK_BIT			17//已写入锁定位
#define		PRO_WORK_INVALID		18//操作无效
#define		PRO_DETECTCHIP_SEC		19//找到与特征字匹配的器件
#define		PRO_DETECTCHIP_ER		20//没找到与特征字匹配的器件

#include "SerialPro.h"
#include "ParallelPro.h"

class CEProDlg; 
class CPro  
{
public:
	BOOL m_bCheck;//读器件后是否效验
	int m_nChipSel;//器件选择，在列表中的位置
	ChipType* GetCurChip();//得到当前器件类型
	BOOL CheckChip();//检查特征字是否可以找到与之匹配的器件
	int GetMinLength(BYTE* pBuf,int nLength);//得到最小的数据块长度
	ChipType* GetChipType(int nChipSel);//得到器件类型
	void LoadChipList();//载入器件列表
	void LockBit(int nChipSel,int nBit);//写锁定位
	void Read(int nChipSel);//读器件
	void Write(int nChipSel);//写器件
	void Erase(int nChipSel);//擦除器件
	void DetectChip(int nChipSel);//检测器件
	void DetectPro(int nChipSel);//检测编程器
	void Notify(int nInfo);//向界面通知消息
	BOOL InitPro(CWnd*	pWnd,int nProType,int nIspSpd=0);//初始化编程器
	int m_nProType;//编程器类型
	int m_nSerialPort;//串口端口
	int m_nBaudSel;//拨特率
	int m_nAddr;//当前读写的地址
	int m_nDataLength;//读写数据块的长度
	CArray<ChipType*,ChipType*> m_arChips;//器件型号库
	BYTE* m_pWriteBuf;//写缓冲
	BYTE* m_pReadBuf;//读缓冲
	BYTE  SignByte[3];//特征字缓冲
	CPro();
	CEProDlg*	m_pDlg;//对话框界面
	virtual ~CPro();
	CSerialPro*	m_pSerialPro;//串行编程器
	CParallelPro* m_pParlPro;//使用并口的编程器
};

#endif // !defined(AFX_PRO_H__3915F601_F041_11D7_A019_9806402060C0__INCLUDED_)
