📄 digitaldongle.h
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -