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

📄 workthread.cpp

📁 路透串口通讯程序
💻 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 + -