📄 workthread.cpp
字号:
// WorkThread.cpp : implementation file
//
#include "stdafx.h"
#include "TestCom.h"
#include "WorkThread.h"
#include "public.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWorkThread
IMPLEMENT_DYNCREATE(CWorkThread, CWinThread)
CWorkThread::CWorkThread()
{
}
CWorkThread::~CWorkThread()
{
}
BOOL CWorkThread::InitInstance()
{
// TODO: perform and per-thread initialization here
return TRUE;
}
int CWorkThread::ExitInstance()
{
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CWorkThread, CWinThread)
//{{AFX_MSG_MAP(CWorkThread)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWorkThread message handlers
int CWorkThread::Run()
{
// TODO: Add your specialized code here and/or call the base class
if(!Com.Open(GetComId(), 9600))
{
AfxMessageBox("Open Com Failure!");
return CWinThread::Run();
}
int len = 0;
unsigned char buffer[3000];
int TicketId=0;
long SleepTime = 10000;
long LastTicketNumber=0;
long NumberChangeNext=1;
while(1)
{
if ((LastTicketNumber = GetPrivateProfileInt("TicketSetting", "LastTicketNumber ", 0, ".\\config.ini")) == 0)
{
AfxMessageBox("Cann't open config file to get TicketSetting!");
return CWinThread::Run();
}
LastTicketNumber ++;
memset(buffer, 0, sizeof(buffer));
for (int i = 0 ; i<=10 ; i++)
{
memset(buffer, 0, sizeof(buffer));
//发送332请求包
Com.SendPack(333, LastTicketNumber + i);
//接收ACK响应包
if(Com.ReceiveACK() != 0)
{
Sleep(SleepTime);
continue;
}
len = Com.ReceivePack(buffer);
if (len < 0 )
SetListInfo("Error Packet!");
else
{
if (Com.UnpackRecData(buffer, len, LastTicketNumber + i*NumberChangeNext) == 340)
{
char temp[20];
memset(temp, 0, sizeof(temp));
sprintf(temp, "%ld", LastTicketNumber + i*NumberChangeNext);
if(WritePrivateProfileString("TicketSetting", "LastTicketNumber", temp, ".\\config.ini") < 0)
break;
}
}
//发送ACK响应包
Com.SendACK();
SetListInfo((char *)buffer);
Sleep(5000);
}
Sleep(SleepTime);
}
Com.Close();
return CWinThread::Run();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -