digitaldongle.h

来自「eVCComm3.0.zip eVC3.0写的程序」· C头文件 代码 · 共 52 行

H
52
字号
// DigitalDongle.h: interface for the CDigitalDongle class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DIGITALDONGLE_H__EEBA24BA_37A4_4BC1_AC94_4863AE4D0A63__INCLUDED_)
#define AFX_DIGITALDONGLE_H__EEBA24BA_37A4_4BC1_AC94_4863AE4D0A63__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "SerialPort.h"

#define OPERATE_TIMEOUT 3 //秒
#define MAX_RETRY_COUNT	1
#define STATUS_OPERATE_TIMEOUT 0xff

class CDigitalDongle  
{
public:
	void RedoLastOperator();
	void set_operate_complete_callback(void (*func)(BYTE, BYTE, unsigned long,BYTE,void *), void *context);
	BOOL SendReadCmd(unsigned long addr,int len);
	BOOL SendWriteCmd(unsigned long addr,LPBYTE data,int len);
	CDigitalDongle(int PortNum);
	virtual ~CDigitalDongle();

private:
	void Monitor_Operate();
	static DWORD WINAPI monitor_operate_thread(LPVOID arg);
	CSerialPort * m_pSerialPort;
	static void OnDataFromPort(void * data,DWORD nDataCount,void * context);
	BYTE CheckSum(LPBYTE data,int len);
	void ProcessPacket(LPBYTE data,int len);

	BYTE lastPacketType;//最后操作的类型
	unsigned long lastAddr;//最后超作的地址
	BYTE lastData[128];
	int lastDataLength;//最后操作的数据字节数
	int retryNum;//重试次数
	DWORD lastRetryTime;

	BOOL done;//最后一次操作是否已经完成
	BOOL monitor_operate_thread_terminate;

	/*回调函数指针*/
	void (*operate_done_func) (BYTE OperateType, BYTE Status, unsigned long OperateAddr,BYTE SuccessDataLength,void *context);
	void *operate_done_func_context;

};

#endif // !defined(AFX_DIGITALDONGLE_H__EEBA24BA_37A4_4BC1_AC94_4863AE4D0A63__INCLUDED_)

⌨️ 快捷键说明

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